
1. 项目概述与阻抗跟踪技术核心在便携式设备、电动工具乃至储能系统的设计中电池管理单元BMU的精度和可靠性直接决定了用户体验和设备性能。传统的库仑计数法电量计其误差会随着电池老化、温度波动而累积最终导致电量显示“跳变”或“虚电”相信不少工程师都为此头疼过。而德州仪器TI的阻抗跟踪Impedance Track™技术则提供了一种从根本上提升电量估算精度的思路。它不是简单地累计进出电池的电荷而是通过实时测量电池的动态阻抗和开路电压OCV结合预设的电池化学特性曲线来“透视”电池内部的真实荷电状态SOC。bq27505-J2正是这一理念在系统侧而非电池包内实现的经典芯片。简单来说你可以把电池想象成一个带内阻的“水桶”。库仑计数法只管记录倒进去和舀出来多少“水”但不知道“水桶”本身是否因为老化内阻增大或温度变化“水”的粘度改变而影响了实际容量。阻抗跟踪技术则不同它会定期测量这个“水桶”在空载时的水位OCV以及在不同“舀水”速度下的水位变化阻抗从而动态校准“水桶”的总容量和当前剩余水量。bq27505就是执行这套复杂算法的“大脑”它通过一系列可配置的引脚和寄存器与系统中的充电器、主处理器协同工作实现对电池从插入、初始化、充放电到休眠、休眠唤醒的全生命周期管理。本文将深入拆解bq27505-J2这颗芯片但不止于数据手册的翻译。我会结合多年在嵌入式硬件和电源管理领域的踩坑经验重点剖析其引脚功能代码PFC的配置逻辑、五种电源模式NORMAL, SLEEP, SLEEP, HIBERNATE, BAT INSERT CHECK的切换时机与功耗考量以及如何利用BAT_GD、SOC_INT等关键引脚构建稳健的电源路径控制。我们还会深入到操作配置寄存器的每一个比特位理解其设计意图并探讨电池配置文件Profile的选择与更新机制。无论你是正在评估电量计方案还是已经在使用bq27505但遇到了配置难题希望这篇近万字的深度解析能成为你手边可靠的实战指南。2. 核心功能引脚与操作配置寄存器深度解析bq27505的灵活性很大程度上源于其可配置的引脚功能和丰富的寄存器设置。这部分是硬件连接和软件初始化的基石理解透了后续的调试才能事半功倍。2.1 引脚功能代码PFC温度监测的三种架构PFC是bq27505与外部充电器协同管理电池温度的关键配置。它不是一个独立的引脚而是由操作配置寄存器AOperation Configuration中的PFC_CFG1和PFC_CFG0两位来定义的。数据手册给出了三种模式PFC 0, 1, 2选择哪一种取决于你的系统硬件设计特别是温度传感器NTC热敏电阻的接法。PFC 0电量计独占温度监测仅放电/静置在这种模式下电池的NTC热敏电阻完全由bq27505控制。充电器无法获取电池温度信息。这意味着充电器将以“开环”方式工作即它无法根据电池温度来调整充电参数如电流、电压或执行温度保护。bq27505只在电池放电或静置无充放电电流时测量温度。这种模式适用于系统对充电温度保护要求不高或者充电器本身不具备智能温控功能的低成本方案。它的优点是电路最简单。PFC 1电量计监控温度并控制充电推荐默认模式这是芯片的默认模式PFC_CFG1/PFC_CFG0 0/1。在此模式下bq27505在电池充电、放电和静置时都会监测温度。如果温度超出了数据闪存Data Flash中预设的“充电禁止温度窗口”Charge Inhibit Temp Low/Highbq27505会通过拉低或拉高取决于极性配置BAT_GD引脚来主动禁止充电器工作直到温度恢复到安全窗口内加上一定的迟滞Temp Hys。这是最常用、最安全的模式实现了基于电池真实温度的智能充电管理。PFC 2电量计与充电器分时复用温度传感器在这种架构下电池的NTC热敏电阻被bq27505和充电器共享。充电器在充电阶段独占热敏电阻进行温度采样而bq27505则在放电和静置阶段使用它。这要求硬件上热敏电阻同时连接到两个器件并通过模拟开关或逻辑控制实现切换。这种模式设计最为复杂通常用于对空间和成本极度敏感且充电IC必须获取温度信号的应用。在PFC 0和2下系统主机必须通过I2C命令主动查询Temperature()函数来获取温度避免了充电期间不必要的周期性温度更新有利于节省电量。实操心得PFC模式选择对于绝大多数应用直接采用默认的PFC 1模式是最稳妥的选择。它提供了完整的温度保护且无需复杂的硬件切换电路。只有在明确知道充电器不需要温度信号PFC 0或者系统设计强制要求热敏电阻共享PFC 2时才考虑其他模式。更改PFC模式后务必重新校准与温度相关的保护阈值。2.2 操作配置寄存器A关键功能使能这个8位寄存器高位字节和低位字节定义了芯片的一系列基础行为。我们挑几个最容易出问题的位详细说说BATG_OVR(BAT_GD Override)这个位决定了当芯片仅因电池电压过低而进入HIBERNATE模式时BAT_GD引脚的行为。默认是0即进入HIBERNATE后BAT_GD会被置为无效状态negate从而断开电池与系统的连接。如果将此位置1则在此情况下BAT_GD将保持有效asserted。什么情况下需要这样假设你的系统即使在电池电压很低时也需要维持某些关键电路的供电如实时时钟或小容量存储器那么保持BAT_GD有效可能是有必要的。但请注意这可能会加剧电池过放。INT_BREM(Battery Removal Interrupt)当这个位和操作配置寄存器B中的BIE(Battery Insertion Enable)位同时被使能时一旦检测到电池被移除SOC_INT引脚就会产生一个1ms的脉冲。这是一个非常重要的硬件中断信号系统主机可以捕获这个中断从而立即知道电池状态变化无需轮询。在支持热插拔电池的设备中这个功能几乎是必选的。IWAKE/RSNS1/RSNS0(电流唤醒比较器配置)这三位共同配置了在SLEEP模式下唤醒芯片的电流阈值。RSNS1/RSNS0选择用于电流检测的采样电阻对应不同的量程IWAKE位则在选定量程内选择高/低阈值。例如RSNS1/RSNS0/IWAKE 0/1/0对应1.0mV的阈值。这里的计算很关键假设你的采样电阻是10mΩ那么1.0mV的电压阈值对应的电流就是1.0mV / 10mΩ 100mA。这意味着当流经采样电阻的电流绝对值超过100mA时芯片会从SLEEP模式被唤醒。你需要根据系统待机时的漏电流和正常工作的启动电流来合理设置这个值设置得太敏感可能导致误唤醒设置得太迟钝则可能无法及时响应负载变化。RMFCC(RM Updated with FCC)这个位默认为1非常有用。它表示在一次有效的充电终止Charge Termination事件发生后剩余容量RemainingCapacity, RM会被更新为满充容量FullChargeCapacity, FCC。这实际上是完成了一次“容量学习”。电池经过一个完整的充放电循环后FCC会根据阻抗变化进行更新此时将RM同步为FCC就相当于将电量显示“归满”。这保证了电量显示的准确性尤其是在电池老化后。2.3 操作置寄存器B高级控制与指示这个寄存器包含了一些更细粒度的控制功能。GNDSEL(ADC Ground Select)这个位选择温度测量ADC的参考地。默认是1即选择A1引脚作为地参考。这通常用于“系统侧”电量计的典型应用此时芯片的供电地VSS和电流采样电阻的地可能由于布线存在微小压差。使用独立的A1引脚作为ADC地可以连接到采样电阻的“干净”地端从而提高电流和温度测量的精度。如果你的PCB布局非常理想两地几乎等电位也可以尝试清空此位使用内部VSS但这通常不是推荐做法。DFWrIndBL(DataFlash Write Indication)这个位决定了数据闪存Data Flash写入过程的指示方式。默认为0使用SOC_INT引脚来指示如果置1则使用BAT_LOW引脚来指示。这是一个需要权衡的设计。SOC_INT引脚可能已经被用于报告SOC变化、电池移除等中断。如果你的SOC_INT引脚连接到了主机的中断输入并且不希望数据闪存写入通常发生在学习周期或配置更新时干扰其他中断事件那么可以将此位置1将指示功能转移到BAT_LOW引脚。前提是BAT_LOW引脚的功能在你的应用中可以被临时复用。3. 电源模式管理与状态机实战bq27505的电源模式是其低功耗设计的精髓理解其状态转换逻辑对于优化系统功耗、确保电量计在不同场景下正确工作至关重要。图5-1的状态机图是核心我们必须把它“翻译”成工程师能直接用的逻辑。3.1 模式详解与转换条件NORMAL模式全功能运行态这是芯片进行常规电量计算、数据更新的状态。在此模式下高频和低频振荡器都工作芯片以最高精度执行Impedance Track™算法更新所有寄存器数据。功耗也是最高的。芯片上电初始化完成后在检测到电池BAT_DET标志置1且未满足进入其他低功耗模式条件时就处于NORMAL模式。SLEEP模式低功耗数据维护态当平均电流AverageCurrent()的绝对值小于等于可编程的Sleep Current阈值且SLEEP功能被使能OpConfig[SLEEP]1同时SNOOZE标志为0时芯片会进入SLEEP模式。此时高频振荡器被关闭芯片仅依靠低频振荡器工作以约20秒一次的频率更新数据。在进入SLEEP前芯片会执行一次库仑计数器的自动校准Autocalibration以减小偏移误差。退出条件平均电流超过Sleep Current或检测到超过IWAKE阈值的瞬时电流或BAT_DET标志被清0电池移除。SLEEP模式快速响应低功耗态此模式是SLEEP的“增强版”需要SNOOZE标志被主机置1才能进入。与SLEEP模式的关键区别在于SLEEP模式下高频振荡器仍然运行。这意味着芯片从SLEEP被唤醒时没有时钟起振的延迟可以立即响应I2C通信。功耗介于NORMAL和SLEEP之间。退出条件与SLEEP类似但多了一条“任何与电量计的通信活动”。适用于那些需要电量计快速响应主机查询但又希望大部分时间处于低功耗的场景。HIBERNATE模式最低功耗保持态这是功耗最低的模式几乎所有功能电路都被关闭仅保留极少数逻辑以检测唤醒事件。进入HIBERNATE需要主机主动设置CONTROL_STATUS[HIBERNATE] 1并且芯片需要满足以下条件之一1电池已放松无大电流且平均电流低于Hibernate Current2电池电压低于Hibernate Voltage。特别注意进入HIBERNATE前必须确保BAT_GD处于无效状态negated以阻止充放电从而为测量OCV创造条件。唤醒方式只有两种1主机直接向bq27505的I2C地址发送命令2上电复位POR。其他设备的I2C通信不会唤醒它。BAT INSERT CHECK模式无电池等待态当系统由适配器供电但未检测到电池时芯片进入此模式。这是一个CPU暂停的状态芯片以极低功耗运行每秒轮询一次BI/TOUT引脚通过内部弱上拉检测电池插入的低电平。一旦检测到电池插入便启动初始化流程OCV测量、配置选择等。3.2 电源模式设计策略与避坑指南策略一合理设置电流阈值Sleep Current和Hibernate Current的设定至关重要。Sleep Current应略大于系统在 deepest sleep 状态下的总漏电流包括电量计自身、采样电路、负载开关等的漏电。Hibernate Current可以设得更小或者直接依靠Hibernate Voltage阈值来触发。IWAKE阈值则应设为系统从睡眠中唤醒时典型负载启动瞬间的电流值。策略二善用SLEEP模式如果你的应用需要主机MCU频繁休眠但醒来后又需要立刻读取准确的SOC值那么SLEEP模式比SLEEP模式更合适。虽然功耗稍高但消除了通信延迟用户体验更流畅。你可以让主机在进入自己的低功耗模式前通过命令将bq27505也置为SLEEP模式。避坑点HIBERNATE模式下的通信最大的坑在于HIBERNATE模式的唤醒。只有发送给bq27505自身I2C地址0xAA写/0xAB读的数据包才能唤醒它。如果你的I2C总线上还有其他设备主机在与其他设备通信时必须确保不会意外寻址到bq27505否则会将其唤醒增加功耗。同时唤醒后主机有责任在合适的时机例如完成OCV测量后清除HIBERNATE标志位。避坑点模式转换期间的BAT_GD控制参考状态图在从NORMAL或SLEEP模式退出且BAT_DET变为0电池移除时会经过一个WAIT_HIBERNATE状态最终进入BAT INSERT CHECK。在这个过程中BAT_GD的状态保持不变。这意味着如果你的系统设计是依靠BAT_GD来切断主路径的那么在电池被移除后BAT_GD可能仍然保持有效导致系统可能意外从适配器上电。需要仔细审查你的电源路径设计看是否需要额外的逻辑来确保电池移除后系统安全。4. 关键引脚功能与系统集成设计bq27505通过几个多功能引脚与外部世界交互理解它们的时序和行为是系统稳定性的保证。4.1 BAT_GD引脚电源路径的“守门员”BAT_GD是芯片最重要的控制引脚之一。它的核心作用是在电池插入初期禁止充电和大电流放电C/20为精确测量开路电压OCV创造条件。OCV是阻抗跟踪算法确定初始SOC和选择电池配置文件的关键。工作流程电池插入芯片上电或从HIBERNATE唤醒。BAT_GD默认为无效状态取决于BATG_POL配置切断或限制系统从电池取电。芯片测量OCV计算初始阻抗并与存储的电池配置文件比对。完成初始化后BAT_GD变为有效状态允许正常的充放电进行。在PFC 1模式下如果电池温度超出安全范围BAT_GD也会被置为无效以禁止充电。设计要点极性配置通过OpConfig[BATG_POL]位配置。默认0表示低电平有效。你需要根据后端充电器或负载开关的使能逻辑来设置。驱动能力BAT_GD是一个开漏输出需要外接上拉电阻。电阻值需权衡功耗和上升时间通常10kΩ到100kΩ是常见选择。与系统上电时序的配合在由电池供电的系统中BAT_GD用来控制一个PMOS或负载开关。必须确保在BAT_GD有效之前系统的其他部分特别是主处理器不会从电池抽取超过C/20的电流否则会影响OCV测量精度。有时需要在硬件上增加一个小的预充电电路。4.2 SOC_INT引脚多功能中断号源SOC_INT是一个集多种事件报告于一身的引脚非常强大。它通过不同宽度的脉冲来指示不同事件见数据手册表5-5但需要注意的是在任一秒钟内它最多只能产生一个脉冲。如果多个事件同时发生它们会“合并”成一个1ms的脉冲。主要事件类型SOC变化报告当SOC变化量达到SOC_Delta的整数倍时例如每变化1%产生1ms脉冲。这是实现“无轮询”电量更新的关键。将SOC_Delta设为0可禁用此功能。SOC1阈值报警当剩余容量RM低于SOC1 Set阈值时产生1ms脉冲。这可以用来预警低电量。需要使能OpConfigB[BL_INT]。系统关机电压报警当电池电压低于SysDown Set阈值时产生1ms脉冲。用于在系统电压崩溃前通知主机进行紧急数据保存和有序关机。电池移除中断需要使能OpConfig[INT_BREM]和OpConfigB[BIE]。电池移除时产生1ms脉冲。数据闪存写入指示当芯片更新数据闪存如学习周期更新FCC时会产生一个可编程宽度的脉冲。这可以用于主机监控电量计的内部活动。硬件连接建议将SOC_INT引脚连接到主机MCU的一个具有中断功能边沿触发的GPIO上。在中断服务程序ISR中再去读取相应的状态寄存器如Flags()来判断具体是哪个事件触发了中断。这种事件驱动的方式比轮询效率高得多。4.3 BI/TOUT引脚与电池插入检测这个引脚复用为电池插入检测BI和温度输出TOUT。在电池检测功能中芯片内部通过一个约1.8MΩ的弱上拉电阻将该引脚拉高。当电池包内的热敏电阻NTC连接到该引脚与地之间时会将其拉低。芯片每秒检测一次该引脚电平低电平表示电池存在。注意事项热敏电阻连接电池包内的NTC必须一端接BI/TOUT另一端接VSS电池负端。在系统板上这个VSS必须与bq27505的VSSPin D1或GNDSEL选择的参考地Pin A1良好连接。上拉强度1.8MΩ的上拉电阻很大意味着该节点对噪声比较敏感。PCB布局时BI/TOUT走线应尽量短并远离噪声源。可以在引脚附近添加一个小电容如10nF~100nF到地以滤除噪声但电容太大会影响检测速度。与BAT_DET标志的关系硬件上的电池插入检测BI引脚状态会反映到Flags()[BAT_DET]这个状态位上。软件可以通过查询或监控这个标志位来获知电池状态。5. 电池配置文件管理与阻抗跟踪算法初探bq27505的“智能”源于其阻抗跟踪算法而该算法依赖于准确的电池模型即“电池配置文件”。芯片内部存储了多份配置文件用于匹配不同的电池。5.1 配置文件类型与存储默认配置文件 (Def0, Def1)由设备制造商预先编程到芯片数据闪存中的“黄金标准”电池参数。它包含了特定型号电池的完整化学特性如OCV-SOC表、阻抗特性、温度系数等。Def0和Def1存储的是同一种电池类型的参数作为备份或初始模板。动态包配置文件 (Pack0, Pack1)这是算法学习和更新的核心。当一块电池被首次使用时芯片会将默认配置文件如Def0复制到其中一个Pack配置文件例如Pack0中。随后在电池的使用循环中Impedance Track™算法会动态更新这个Pack文件中的参数特别是与电池老化相关的阻抗数据。bq27505可以管理两块最近使用过的电池信息分别存储在Pack0和Pack1中。5.2 电池插入时的智能匹配流程这是体现芯片价值的关键过程电池插入初始化开始BAT_GD无效系统负载被隔离。首次OCV与阻抗测量芯片测量电池的开路电压OCV并利用一个很小的已知负载电流或利用系统固有的微小漏电流根据公式Z(SOC) (OCV(SOC) – V) / I计算出电池在当前SOC下的阻抗。配置文件匹配芯片将计算得到的阻抗Z(SOC)与Pack0、Pack1以及Def0/Def1中相同SOC点的阻抗数据进行比对。决策与加载匹配成功如果测量阻抗与某个Pack文件比如Pack0的阻抗足够接近芯片就认为这是之前用过的那块电池直接加载Pack0的完整数据立即获得准确的SOC和满充容量FCC信息。用户体验是无缝的电量显示准确且连续。匹配失败新电池如果测量阻抗与两个Pack文件都不匹配芯片就认为这是一块新电池或一块特性已严重漂移的老电池。此时它会选择Def0/Def1默认配置文件并将其复制到最旧的那个Pack文件中覆盖掉然后以此作为起点开始新的学习周期。激活系统匹配完成后BAT_GD变为有效系统正常上电。5.3 学习周期与容量更新阻抗跟踪算法不是一个静态模型。它会在电池的整个生命周期中持续学习主要通过学习周期Learning Cycle来更新满充容量FCC。一个完整的学习周期通常包括从某个SOC点开始进行一次完整的恒流/恒压充电直至充电终止满足电压、电流、时间条件。然后进行放电直至达到放电截止电压。 算法通过比较这次放电过程中实际放出的电量通过库仑计数器积分与基于OCV-阻抗模型预测的容量来修正FCC值。当RMFCC位使能时在每次有效的充电终止后剩余容量RM会被更新为新的FCC值从而实现“电量归满”。关键参数设置数据闪存中与学习周期相关的参数如Charging Voltage充电电压、Taper Current截止电流、Min Taper Charge最小截止容量等必须根据实际电池的规格进行精确配置。配置错误会导致学习周期无法正常完成FCC无法更新电量计会越来越不准。6. 通信、校准与常见问题排查6.1 I2C通信实战要点bq27505支持标准I2C协议地址固定为0xAA写/0xAB读。在实际使用中有以下几个容易忽略的细节等待时间Waiting Time这是数据手册中强调但极易出错的地方。芯片在执行某些命令后需要时间来计算或更新数据主机必须等待一段时间后才能读取结果。标准命令Standard Commands对于Temperature(),Voltage()等只读命令无需等待但主机每秒查询不应超过2次否则可能触发看门狗复位。控制子命令Control Subcommands对于写入配置、执行OCV测量等命令在发送命令和读取状态之间必须插入至少66ms的延迟。图7-3的时序图明确展示了这一点。特殊命令Checksum()命令需要100ms等待时间。OCV()命令需要1.2秒等待时间。对于需要写入再读取的标准命令如某些配置需要至少2秒等待结果更新。时钟拉伸Clock Stretching在数据闪存更新操作期间I2C时钟线SCL可能被芯片拉低长达80ms在执行OCV()命令后可能拉伸长达270ms。你的主机I2C驱动程序必须支持时钟拉伸否则通信会超时失败。许多MCU的硬件I2C外设默认不支持或支持时间很短需要检查配置或使用软件模拟I2CGPIO模拟并处理SCL被拉低的情况。命令序列芯片支持单字节读写、快速读写和增量读写。特别注意尝试向只读地址写入数据或读取地址高于0x6B的寄存器芯片会返回NACK非应答。良好的主机代码应该处理NACK情况。6.2 自动校准Autocalibration这是保证库仑计数器长期精度的关键机制。芯片在以下情况会自动进行偏移校准进入SLEEP模式时除非温度≤5°C或≥45°C。在NORMAL模式下当平均电流≤100mA且满足以下任一条件时自上次校准以来电压变化≥256mV。自上次校准以来温度变化超过80°C且持续至少60秒。校准过程的影响在校准期间电流和容量的测量会暂停并沿用最后一次的测量速率。如果校准过程中电池电压下降超过32mV芯片会认为负载电流突然增大从而中止本次校准。设计启示为了获得最佳精度应确保系统定期有机会进入低电流状态如SLEEP模式以便芯片执行校准。如果设备始终运行在高负载下校准可能无法正常进行长期累积的偏移误差会影响电量精度。6.3 典型问题排查速查表以下表格总结了开发过程中可能遇到的典型问题及排查思路问题现象可能原因排查步骤与解决方法上电后电量显示为0%或异常值1. OCV测量失败。2. 电池配置文件不匹配或损坏。3.BAT_GD控制异常初始化期间存在大电流。1. 测量初始化阶段BAT_GD引脚状态确保在OCV测量期间约1.2秒电池负载被有效隔离电流C/20。2. 读取Flags()[OCVFAIL]标志检查OCV是否有效。3. 通过ApplicationStatus()命令读取LU_PROF位查看当前使用的配置文件。尝试用已知好电池进行学习周期。电量显示不更新或“卡住”1. 芯片未进入NORMAL模式。2. I2C通信异常主机未能成功写入配置或读取数据。3. 平均电流始终高于Sleep Current芯片无法进入周期性更新的SLEEP模式。1. 读取Flags()[BAT_DET]和Control Status()[HIBERNATE]等寄存器确认芯片状态。2. 用逻辑分析仪抓取I2C波形检查命令、数据、ACK/NACK和时序特别是等待时间。3. 检查Sleep Current设置是否合理测量系统待机电流。电池移除/插入无响应1.BI/TOUT引脚电路故障。2. 电池插入检测未使能或中断未配置。1. 测量电池插入前后BI/TOUT引脚电压应为~VCC无电池和~0V有电池通过NTC下拉。检查NTC电阻值及连接。2. 确认OpConfigB[BIE]位已置1。检查SOC_INT引脚中断是否使能并配置OpConfig[INT_BREM]。充电无法启动或意外停止1. PFC模式配置错误如PFC 0下充电器无温控。2. 温度超出Charge Inhibit或Suspend窗口。3.BAT_GD引脚极性或驱动电路问题。1. 确认OpConfig[PFC_CFG1:0]设置与应用匹配推荐PFC 1。2. 读取Temperature()值并与数据闪存中的Charge Inhibit Temp Low/High,Suspend Low/High Temp比较。3. 测量BAT_GD引脚电平对比OpConfig[BATG_POL]设置检查后端充电器使能逻辑。I2C通信时好时坏或死机1. 未遵守命令等待时间。2. 主机I2C驱动不支持时钟拉伸。3. 看门狗复位。1. 在发送子命令如0x00/0x01后、读取结果前增加至少66ms延迟。对于OCV命令等待1.2秒。2. 用逻辑分析仪观察SCL线看是否被芯片长时间拉低。修改主机代码以支持时钟拉伸或增加超时时间。3. 降低主机查询频率如每秒不超过2次标准命令。电量精度随时间变差1. 学习周期未完成。2. 自动校准条件不满足。3. 采样电阻精度或温漂问题。1. 确保电池能经历完整的充放电循环。检查Flags()[CHG]位在充电末段是否被清除以及RMFCC位是否使能。2. 检查设备是否有机会进入低电流状态100mA以便自动校准。3. 使用高精度、低温漂的采样电阻如0.5%精度50ppm/°C。7. 硬件设计参考与PCB布局要点虽然数据手册提供了参考原理图但在实际PCB布局时以下几个点需要额外关注它们直接影响测量精度和系统稳定性。电流采样回路布局这是精度最关键的部分。连接SRP和SRN引脚的采样电阻RSENSE两端走线必须严格遵循开尔文连接Kelvin Connection原则。独立走线从采样电阻的焊盘直接引出两对差分走线分别连接到芯片的SRP和SRN引脚。这两对走线应尽可能等长、等宽、紧密并行最好在PCB内层走线并用地线包围进行屏蔽。远离干扰源采样回路必须远离开关电源、高频时钟等噪声源。避免在采样走线下方或上方切换大电流。滤波电容在SRP和SRN引脚到芯片的模拟地AGND通常是A1引脚如果GNDSEL1之间需要放置一个滤波电容组。典型值是一个0.1µF的陶瓷电容并联一个1~10µF的钽电容或陶瓷电容并尽可能靠近芯片引脚放置。这用于滤除高频噪声。电源去耦与接地VCC去耦在芯片的VCC引脚附近1mm以内放置一个1µF~10µF的陶瓷电容到地。这是保证芯片内部LDO稳定和应对Flash写入时电流冲击所必需的。接地策略强烈建议将芯片的VSSPin D1和用于ADC参考的GNDSELPin A1如果使用连接到同一个“安静”的模拟地平面。这个模拟地平面应通过单点连接到系统的主数字地以避免数字噪声串入敏感的模拟测量电路。热敏电阻NTC布线连接到TS引脚也即BI/TOUT引脚的热敏电阻走线应尽量短。如果走线较长可以考虑在TS引脚到地之间加一个小的滤波电容如100pF但容值不宜过大以免影响电池插入检测的响应速度。BAT_GD和SOC_INT输出引脚这两个是数字输出引脚如果驱动能力不足或线路较长可能会受到干扰。可以在引脚附近串联一个22Ω~100Ω的小电阻并与上拉电阻一起起到一定的阻尼和限流作用改善信号完整性。最后也是最容易忽略的一点仔细阅读数据手册中关于“Flash Update OK Voltage”的说明。在进行数据闪存写入如更新配置、记录学习数据时芯片内部会产生较大的编程电流可能导致其供电电压VCC跌落。必须确保在写入操作期间电池电压或系统输入电压高于Flash Update OK Voltage这个阈值否则可能导致写入失败甚至芯片复位。在设计电源电路时需要为此留出足够的余量。