BQ28Z610-R1 AFE硬件保护配置详解:阈值、延时与工程实践
1. 项目概述:AFE硬件保护在BMS中的核心地位
在锂离子电池包的设计中,安全永远是第一位的。电池管理系统(BMS)的职责,就是充当电池的“贴身保镖”,7x24小时不间断地监控其状态,并在危险发生时以最快的速度做出反应。这其中,模拟前端(AFE)的硬件保护功能,就是这个保镖的“条件反射”神经——它不经过主控MCU的复杂判断,直接在硬件层面响应,速度极快,可靠性极高。
我接触过不少项目,从消费电子到工业储能,但凡涉及到多串电池,AFE的配置都是硬件工程师和BMS软件工程师必须啃下来的硬骨头。德州仪器(TI)的BQ28Z610-R1是一款高度集成的1-2串电池管理芯片,其AFE模块集成了三种关键的硬件保护:放电过载(AOLD)、充电短路(ASCC)和放电短路(ASCD1/ASCD2)。这些保护功能的灵敏度和响应速度,直接由我们配置在数据闪存(Data Flash)中的阈值和延时参数决定。
简单来说,阈值决定了“多严重的故障算故障”,而延时决定了“故障持续多久才行动”。配置得当,系统既安全又稳定;配置不当,要么频繁误保护影响用户体验,要么该保护时反应迟钝酿成事故。这份详解,就是基于我多年调试BQ28Z610-R1及其系列芯片的经验,带你彻底搞懂这些配置表背后的逻辑、计算方法以及实际工程中的取舍要点。无论你是正在评估选型,还是已经进入调试阶段,这篇文章都能帮你避开我当年踩过的那些坑。
2. AFE硬件保护机制深度解析
2.1 硬件保护 vs. 软件保护:为什么AFE不可替代?
在BQ28Z610-R1中,保护功能分为两大类:基于AFE的硬件保护和基于固件(Firmware)的软件保护(如过压、欠压、过温等)。理解它们的区别是正确配置的前提。
软件保护的路径是:AFE采样 -> ADC转换 -> 数字值送入内核 -> 固件算法判断 -> 控制FET。这个环路虽然灵活可配置,但响应速度通常在几百毫秒到秒级,且依赖于芯片主时钟和固件正常运行。
AFE硬件保护则完全不同。它通过内置的模拟比较器,直接将采样到的电流信号(表现为采样电阻SRP-SRN两端的压降)与一个可编程的基准电压进行比较。一旦超过阈值,一个独立的硬件计时器开始计数,达到预设延时后,直接通过硬件逻辑关闭相应的充放电FET。这个环路完全在模拟域和简单数字逻辑中完成,响应速度可以达到微秒级,不依赖于内核和固件。这对于应对突然的短路等致命故障至关重要。
以放电短路(ASCD)为例,当负载侧发生硬短路时,电流可能在几十微秒内飙升到数百安培。如果等软件反应过来,电池和MOSFET可能已经过热损坏。AFE硬件保护能在百微秒内切断回路,为系统争取了宝贵的保护时间。
2.2 核心保护类型与物理意义
BQ28Z610-R1的AFE提供了三种硬件保护,对应三种典型的故障场景:
- 过载放电保护(AOLD, AFE OverLoad in Discharge):针对持续的、超过正常范围但未达到短路级别的放电电流。例如,电机堵转或负载异常增大。它保护MOSFET和电芯免受持续过流导致的过热损坏。
- 充电短路保护(ASCC, AFE Short Circuit in Charge):针对充电回路发生的短路故障。当充电器接口短路或充电MOSFET击穿时,会产生巨大的反向电流(从电池流向充电器),此保护能迅速切断充电FET。
- 放电短路保护(ASCD, AFE Short Circuit in Discharge):针对放电回路发生的短路故障。这是最严苛的保护,通常设置两级(ASCD1和ASCD2),ASCD1阈值较高、延时极短,用于应对最严重的瞬时短路;ASCD2阈值稍低、延时稍长,用于应对相对缓和的短路或作为ASCD1的后备。
所有这些保护的检测对象,都是电流采样电阻(RSNS)两端的压降。因此,我们配置的“电压阈值”(mV),需要根据你板上实际使用的RSNS阻值,换算成具体的电流值。这是所有计算的起点。
2.3 关键配置位:[RSNS]与[SCDDx2]的作用
在配置阈值和延时前,必须理解两个全局控制位,它们位于Settings:AFE:AFE Protection Control寄存器中:
[RSNS]位:这个位直接决定了阈值查询哪张表。它实际上是一个量程选择位。
[RSNS] = 0:选择“小量程”阈值表。此时,AFE内部的基准电压或增益电路会使比较器对采样电压更敏感。例如,AOLD阈值从-8.30mV到-50.00mV。[RSNS] = 1:选择“大量程”阈值表。此时比较器量程扩大一倍。例如,AOLD阈值从-16.60mV到-100.00mV。- 如何选择?这取决于你设计的最大预期电流和采样电阻精度。如果你使用1mΩ采样电阻,预期最大放电电流100A,那么采样压降最大为100mV。此时应选择
[RSNS]=1(量程-100mV),以获得更好的分辨率和设置精度。如果最大电流只有50A,则两种都可以,但[RSNS]=0在低电流段有更精细的阈值选择。
[SCDDx2]位:这个位仅影响ASCD1和ASCD2的延时,对阈值无影响。
[SCDDx2] = 0:使用标准延时表(例如ASCD1延时0-915µs)。[SCDDx2] = 1:所有ASCD延时翻倍(例如ASCD1延时变为0-1830µs)。- 为什么需要它?在一些感性负载(如电机)应用中,启动瞬间会有很大的浪涌电流,虽然其幅值可能触及短路阈值,但持续时间极短(几百微秒)。如果延时设置太短,会导致误保护。此时可以将
[SCDDx2]设为1,让延时翻倍,从而“容忍”短暂的浪涌,避免系统无法启动。这是一个非常重要的抗扰度设计技巧。
3. 阈值与延时配置表详解与计算实战
官方文档中的表格是信息的核心,但直接看十六进制设置和毫伏值可能会让人困惑。我们需要将其转化为工程上可用的电流值和时间值。
3.1 过载放电保护(AOLD)配置
AOLD的配置占用一个字节(8位)的Data Flash,地址通常在Protections:AOLD:Threshold。这个字节的高4位([7:4])配置延时,低4位([3:0])配置电压阈值。
第一步:根据[RSNS]位选择正确的阈值表。假设我们选择[RSNS]=0,查看表A-1。如果我们希望过载保护点在-30mV左右,那么对应的设置值是0x08(-30.54mV)或0x09(-33.32mV)。我们选择0x08。
第二步:根据采样电阻计算实际电流阈值。公式是:I_AOLD = V_threshold / R_sns假设我们的采样电阻R_sns = 1.0 mΩ。 那么,I_AOLD = -30.54mV / 1.0mΩ = -30.54A(负号表示放电方向)。 这意味着,当放电电流持续超过30.54A,并满足延时条件时,AOLD保护会触发。
第三步:配置延时时间。查看表A-3。假设我们希望过载持续5ms后再触发保护,那么对应的延时设置值是0x02(5ms)。我们需要将这个值放到高4位。 因此,完整的AOLD Threshold字节配置为:延时(高4位) + 阈值(低4位) = 0x2?。注意,我们需要将0x02左移4位,然后加上0x08。 计算:(0x02 << 4) | 0x08 = 0x20 | 0x08 = 0x28。 所以,向Protections:AOLD:Threshold写入0x28,就完成了AOLD保护点为-30.54A/5ms的配置。
实操心得:AOLD阈值的经验取值AOLD的阈值通常应设置在电池最大持续放电电流(Max Continuous Discharge Current)的1.2到1.5倍之间,并略高于负载的正常峰值电流。延时则需要考虑负载的特性。对于功率变化较快的负载(如无人机),延时可以设短一些(如1-10ms);对于电机类负载,为避免启动冲击,可设长一些(如10-30ms)。务必在样机上进行负载突加和突卸测试,验证AOLD不会误触发。
3.2 充电短路保护(ASCC)配置
ASCC的配置也占用一个字节。其低3位([2:0])配置电压阈值,高4位([7:4])配置延时。
阈值配置:假设[RSNS]=0,查看表A-4。我们希望充电短路保护点在-80mV左右(注意,充电电流方向为负,但ASCC阈值表格中给出的电压值为正,意味着它检测的是SRN相对于SRP为正的压降,即充电电流)。最接近的是0x06(-88.85mV)。我们选择0x06。
电流计算:I_ASCC = V_threshold / R_sns = 88.85mV / 1.0mΩ = 88.85A(充电方向)。 这是一个非常高的电流,通常只有在充电口直接短路时才会出现。
延时配置:查看表A-6。充电短路需要极快的响应,通常设置在几百微秒以内。我们选择0x02(122µs)。 完整字节计算:(0x02 << 4) | 0x06 = 0x20 | 0x06 = 0x26。 向Protections:ASCC:Threshold写入0x26。
3.3 放电短路保护(ASCD1 & ASCD2)配置
这是最重要的保护,通常设置两级。ASCD1和ASCD2各有自己的配置字节,结构同ASCC:低3位阈值,高4位延时。
ASCD1(一级快速保护)配置:目标:应对最严重的瞬间短路,电流极大,响应极快。 假设[RSNS]=0,查看表A-7。我们设置一个较高的阈值,例如0x03(-55.5mV)。I_ASCD1 = -55.5mV / 1.0mΩ = -55.5A。 延时选择最短的之一,例如0x00(0µs,但实际硬件可能有最小响应时间,如几微秒)。设置值0x00。 完整字节:(0x00 << 4) | 0x03 = 0x03。 写入Protections:ASCD:Threshold 1。
ASCD2(二级后备保护)配置:目标:应对相对缓和但持续的短路,或作为ASCD1的后备。 阈值设置低一些,例如0x01(-33.3mV)。I_ASCD2 = -33.3A。 延时设置长一些,给ASCD1先行动作的机会,例如0x05(305µs)。注意,如果[SCDDx2]=1,这个延时将变为610µs。 完整字节:(0x05 << 4) | 0x01 = 0x51。 写入Protections:ASCD:Threshold 2。
恢复时间配置:除了阈值和延时,这三个保护都有一个共同的Recovery Time参数(在Data Flash中对应Protections:AOLD:Recovery,Protections:ASCC:Recovery,Protections:ASCD:Recovery)。这个时间指的是保护触发、FET关闭后,需要等待多久才会自动尝试恢复(重新打开FET)。对于短路保护,这个时间通常设置得较长(如1-5秒),以确保故障有足够时间消散。对于过载保护,可以设置得短一些(如几百毫秒)。
3.4 配置流程与工具实操
理论懂了,上手配置才是关键。BQ28Z610-R1的配置主要通过TI提供的上位机工具(如bqStudio)或通过I2C接口直接读写Data Flash完成。
- 连接与解锁:使用EV2300/EV2400等通信适配器连接芯片。首先需要发送Unseal命令(提供密钥)获得写Data Flash的权限。
- 定位参数:在bqStudio中,导航到Data Flash视图,找到
Protections子类下的AOLD、ASCC、ASCD相关参数。 - 计算与写入:根据前面的计算,将十六进制值填入对应的
Threshold字段。例如,将计算出的0x28填入AOLD Threshold。 - 设置恢复时间:在对应的
Recovery字段,填入以秒为单位的十进制数值。例如,设置AOLD Recovery = 1(表示1秒)。 - 设置全局位:在
Settings:AFE:AFE Protection Control中,设置[RSNS]和[SCDDx2]位。 - 提交与固化:修改后,点击bqStudio的“Write”或“Program”按钮,将配置写入芯片的Data Flash。最后,务必执行一个“Seal”命令,将芯片锁定,防止配置被意外修改,并使新配置在下次上电时生效。
避坑指南:配置失效的常见原因
- 未执行Seal/Reset:写入Data Flash后,部分配置需要芯片复位(Reset)或进入Sealed状态才能生效。最稳妥的方法是写入后,发送Reset命令,或执行Seal。
- 保护功能未使能:光配置参数不行,还必须确保相应的保护功能在
Settings:Protection:Enabled Protections A/B/C中被使能。例如,AOLD对应Enabled Protections A寄存器中的某个位,需要将其置1。- 电流校准不准:AFE保护的基准是采样电压,如果系统的电流校准(CC Gain/Offset)不准,会导致实际电流与测量值有偏差,从而使保护点漂移。配置AFE前,务必先完成精密的电流校准。
4. 工程实践:如何为你的电池包定制AFE参数
纸上谈兵终觉浅,绝知此事要躬行。下面我以一个典型的2串电动工具电池包(标称7.2V, 容量2.0Ah, 持续放电10C)为例,展示完整的AFE参数设计流程。
4.1 系统参数定义
- 电芯: 18650, 标称3.6V, 容量2.0Ah, 最大持续放电电流20A(10C), 脉冲放电电流(2秒)40A。
- 采样电阻: 采用1.5mΩ, 1%精度, 2W功率的贴片电阻。
- MOSFET: 充放电MOSFET的连续电流能力为30A, 脉冲电流能力60A。
- 应用场景: 电动工具, 工作时有频繁的启停和堵转可能。
4.2 参数计算与选择
1. 确定[RSNS]位:最大预期短路电流(保护点)需在AFE量程内。假设我们预计短路电流可能达到80A。 采样压降V_sns = 80A * 1.5mΩ = 120mV。 查看阈值表,当[RSNS]=1时,ASCD最大阈值为-200mV,可以覆盖120mV。当[RSNS]=0时,最大阈值为-100mV,无法覆盖。因此,选择[RSNS] = 1。
2. 配置AOLD(过载放电保护):
- 电流阈值: 应高于最大持续工作电流(20A),但低于MOSFET和电芯的极限。设为25A。
- 电压阈值:
V_th = 25A * 1.5mΩ = 37.5mV。 - 查表: 在
[RSNS]=1的表A-2中,寻找最接近-37.5mV的值。0x04对应-38.84mV,0x03对应-33.28mV。选择0x04(-38.84mV), 更保守。 - 延时: 为避免电机启动电流误触发,需要一定延时。设10ms。查表A-3,
0x05对应11ms,0x04对应9ms。选择0x04(9ms)。 - 最终值:
(0x04 << 4) | 0x04 = 0x44。写入AOLD Threshold = 0x44。 - 恢复时间: 设为2秒(
AOLD Recovery = 2)。过载可能是暂时的,恢复后可自动恢复正常工作。
3. 配置ASCD1 & ASCD2(放电短路保护):
- ASCD1(快速动作):
- 电流阈值: 应能覆盖严重的短路,但低于MOSFET的脉冲能力(60A)。设为50A。
- 电压阈值:
V_th = 50A * 1.5mΩ = 75mV。 - 查表: 表A-8 (
[RSNS]=1),0x02对应-88.8mV,0x01对应-66.6mV。75mV介于两者之间。选择更敏感的0x01(-66.6mV), 实际保护点约为44.4A, 更安全。 - 延时: 追求最快速度。设为最短的
0x00(0µs)。 - 最终值:
(0x00 << 4) | 0x01 = 0x01。写入ASCD Threshold 1 = 0x01。
- ASCD2(后备/缓动):
- 电流阈值: 作为ASCD1的后备,以及应对中度短路。设为35A。
- 电压阈值:
V_th = 35A * 1.5mΩ = 52.5mV。 - 查表: 选择
0x01(-66.6mV, 约44.4A)或0x00(-44.4mV, 约29.6A)。为了与ASCD1有明确分级,选择0x00(-44.4mV)。 - 延时: 设置一个短延时,确保不是毛刺。设为244µs(表A-11中
0x04)。 - 最终值:
(0x04 << 4) | 0x00 = 0x40。写入ASCD Threshold 2 = 0x40。
- 考虑电机浪涌: 电动工具启动电流可能很大。为了抗扰,我们将
[SCDDx2]位设为1。这样,ASCD1的实际延时变为0µs(不变),但ASCD2的延时从244µs变为488µs,更能容忍启动浪涌。 - 恢复时间: 短路是严重故障,恢复时间应较长,设为5秒(
ASCD Recovery = 5)。
4. 配置ASCC(充电短路保护):
- 充电器通常有限流,短路电流可能不如放电侧大。设为20A(与持续放电电流一致)。
V_th = 20A * 1.5mΩ = 30mV。- 查表A-5 (
[RSNS]=1),0x00对应44.4mV(29.6A),0x01对应66.6mV(44.4A)。选择0x00。 - 延时设为122µs(表A-6中
0x02)。 - 最终值:
(0x02 << 4) | 0x00 = 0x20。写入ASCC Threshold = 0x20。 - 恢复时间: 设为3秒。
5. 汇总配置表:
| 保护类型 | RSNS位 | 目标电流 | 计算电压 | 阈值设置值 | 延时设置值 | 完整字节 | 恢复时间 |
|---|---|---|---|---|---|---|---|
| AOLD | 1 | 25A | -37.5mV | 0x04 (-38.84mV) | 0x04 (9ms) | 0x44 | 2 s |
| ASCC | 1 | 20A | +30mV | 0x00 (+44.4mV) | 0x02 (122µs) | 0x20 | 3 s |
| ASCD1 | 1 | ~44A | -66.6mV | 0x01 (-66.6mV) | 0x00 (0µs) | 0x01 | 5 s |
| ASCD2 | 1 | ~29A | -44.4mV | 0x00 (-44.4mV) | 0x04 (244µs) | 0x40 | 5 s |
| 全局设置 | [RSNS] = 1,[SCDDx2] = 1 |
4.3 验证与测试
配置完成后,绝不能直接装机使用。必须进行严格的测试。
- 电子负载测试:使用可编程电子负载,模拟过载和短路。
- AOLD测试:设置恒流放电模式,电流逐步增加到26A(应超过阈值),持续9ms以上,观察放电FET是否关闭,并且BatteryStatus()或SafetyStatus()寄存器中AOLD标志位是否置位。等待2秒后,移除负载,检查FET是否自动恢复。
- ASCD测试:这是破坏性测试,务必在电池端串联一个足够功率的保险丝或使用可调限流电源。用电子负载模拟毫欧级小电阻,进行瞬间短路(脉冲模式),用示波器抓取SRP-SRN电压和DSG FET栅极信号。应能看到电压飙升后,FET栅极在百微秒内被拉低。
- 软件读取验证:通过I2C读取
Protections:AOLD:Threshold等寄存器,确认写入的值是否正确。 - 寄存器状态监控:在触发保护时,读取
SafetyStatus()寄存器,确认对应的AOLD、ASCC、ASCD标志位被正确设置。同时监控OperationStatus()[XCHG]和[XDSG]位,确认FET状态变化符合预期。
5. 高级话题:AFE保护与固件保护的协同与边界
AFE硬件保护并非孤岛,它需要与BQ28Z610-R1内部的固件保护协同工作,形成纵深防御。
- 分工与优先级:AFE保护响应极快,针对严重的、突发的电流异常。固件保护(如OCD/OCC)则处理持续的、中等程度的过流,并且具有可恢复的延迟和滞回特性。在电流故障发生时,AFE保护会先动作。AFE保护恢复后,如果故障依然存在(但电流值可能低于AFE阈值而高于固件阈值),则会由固件保护接手,再次关断FET。
- 配置协调:务必确保AFE保护的阈值高于对应的固件保护阈值。例如,
AOLD的电流阈值(如30A)应大于Protections:OCD:Threshold(如-25A)。否则会出现固件保护先于硬件保护动作的尴尬情况,失去了硬件快速保护的意义。同理,ASCC阈值应大于Protections:OCC:Threshold。 - 故障诊断:当发生保护后,除了检查
SafetyStatus(),还应通过AltManufacturerAccess() 0x0058命令读取AFE寄存器快照(在PF事件中会自动保存),分析AFE Interrupt Status等寄存器,可以更精确地定位是哪个比较器触发了保护。 - 与外部保护电路的配合:在一些超高功率或安全要求极高的应用中,BQ28Z610-R1的AFE保护可能还不够,会在前端加入独立的硬件保护IC(如TI的BQ7718等)。此时,BQ28Z610-R1的AFE可以作为二级保护。需要仔细设计两级保护之间的阈值和延时梯度,避免竞态条件。
6. 常见问题排查与调试技巧
在实际项目中,AFE保护配置最常见的问题就是误触发和不触发。
问题一:系统一上电或接负载就保护,特别是AOLD或ASCD。
- 检查方向:确认电流采样电阻的布线。SRP和SRN的走线必须是开尔文连接(Kelvin Connection),即直接连接到采样电阻的两端,避免功率路径上的压降引入误差。糟糕的布局会导致巨大的测量噪声,触发保护。
- 检查校准:重新进行完整的电流校准(CC Gain/Offset)。即使出厂已校准,在焊接、老化后也可能产生漂移。
- 检查阈值:确认计算无误。特别是
[RSNS]位是否设错。用[RSNS]=0的表去解读[RSNS]=1配置的值,会导致阈值减半,极易误触发。 - 检查延时:是否过短?对于电机负载,尝试增大AOLD延时,或启用
[SCDDx2]=1来增加ASCD延时。
问题二:发生真实短路时,保护不动作或动作太慢。
- 检查使能位:确认
Settings:Protection:Enabled Protections A/B中对应的保护位已经使能。 - 检查硬件:用示波器测量短路瞬间SRP-SRN的电压,看是否真的达到了设定的阈值。可能由于PCB走线电感或电阻,芯片检测点的电压远低于采样电阻的实际压降。
- 检查配置值:确认写入Data Flash的值是否正确,并且芯片已经Seal/Reset生效。可以通过读取寄存器反查。
- 检查MOSFET驱动:即使AFE发出了关断信号,如果MOSFET栅极驱动电路有问题(如上拉太弱),FET也无法快速关断。检查CHG/DSG引脚在保护时的输出波形。
问题三:保护恢复后,无法正常充放电。
- 检查恢复时间:
Recovery时间是否设置过长?或者,固件保护(如OCD)是否已经触发并锁死?需要满足固件保护的恢复条件(如电流低于恢复阈值并持续一段时间)后,FET才能重新开启。 - 检查状态机:AFE硬件保护触发后,会置位
SafetyStatus()中的相应标志。这个标志需要在恢复条件满足(且经过Recovery Time)后,由芯片自动清除。如果标志位未清除,FET将一直保持关闭。可以通过读取SafetyStatus()寄存器来诊断。
调试利器:MAC命令AltManufacturerAccess() 0x0058这个命令可以读出AFE内部寄存器的实时状态。当遇到棘手的保护问题时,在触发前后读取并对比这些寄存器,尤其是AFE Interrupt Status和AFE Latch Status,可以清晰看到是哪个比较器先翻转为高电平,从而精准定位问题源头。这比单纯看SafetyStatus()更有助于理解硬件的动作时序。
配置BQ28Z610-R1的AFE保护,是一个在安全性、可靠性和可用性之间寻找最佳平衡点的过程。没有一套参数能放之四海而皆准,必须基于具体的电池规格、负载特性和应用场景来精心计算和反复验证。记住,硬件保护是你的最后一道防线,宁可保守,不可激进。每次参数的调整,最好都能在可控的测试环境中,用真实的故障场景去验证其有效性。这份详解里的表格和计算方法是你的地图,但真正的路线,需要你在自己项目的调试中一步步走出来。
