ZHCU948B September 2020 – May 2022 BQ76952
BQ76952 器件使用一个比较器集成放电过流 (OCD1) 和放电过流 2 (OCD2) 保护功能,该比较器监测 SRN–SRP 引脚上的差分电压,并在该电压超过可编程阈值 VOCD1 或 VOCD2 时触发 OCD1 或 OCD2 警报或故障。使用 Protections:OCD1:Threshold 和 Protections:OCD2:Threshold 配置寄存器以 2mV 阶跃在 4mV 至 200mV 的范围内对 VOCD1 和 VOCD2 阈值进行独立编程。使用 Settings:Protection:Enabled Protections A:[OCD1] 和 Settings:Protection:Enabled Protections A:[OCD2] 配置位来启用 OCD1 和 OCD2 保护。
在首次检测到放电过流事件时, OCD1 和 OCD2 电路会触发警报信号,然后该电路在此情况持续可编程检测延迟 OCD1_DLY 或 OCD2_DLY 后触发故障,在 10ms 至 426ms 的范围内设置该延迟,单位为 3.3ms,实际延迟为 3.3ms ×(2 + 设置)。通过 Protections:OCD1:Delay 和 Protections:OCD2:Delay 配置寄存器来设置该延迟。
该器件还使用库仑计数器 ADC 提供的 CC1 电流测量集成放电过流 3 (OCD3) 保护功能,当电流大于 Protections:OCD3:Threshold 给定的可编程阈值(即过度放电电流)时该功能触发 OCD3 警报或故障。当首次检测到放电过流事件时触发警报信号,然后在该情况持续可编程检测延迟 OCD3_DLY 后触发故障信号,可以在0 秒至 255 秒的范围内设置该延迟,单位为 1 秒。该延迟由 Protections:OCD3:Delay 配置寄存器设置。使用 Settings:Protection:Enabled Protections C:[OCD3] 配置位来启用 OCD3 保护。
当触发 OCD1、OCD2 或 OCD3 故障时,如果该器件配置为自主 FET 控制,则该器件将使用 Settings:Protection:DSG FET Protections A[OCD2][OCD1] 或 Settings:Protection:DSG FET Protections C[OCD3] 配置位关闭 DSG FET。如果检测到充电电流大于或等于 Protections:OCD:Recovery Threshold 达 Protections:Recovery:Time,那么器件将恢复。
BQ76952 器件还包含放电过流锁存 (OCDL) 保护功能,如果在可编程时间窗口内发生多个 OCD1、OCD2 或 OCD3 故障,那么该功能可能会生成故障。每当触发 OCD1、OCD2 或 OCD3 故障时,OCDL 锁存计数器就会递增。该器件恢复后,如果未检测到进一步的 OCD1、OCD2 或 OCD3 故障,该器件将在可编程恢复时间 Protections:OCDL:Counter Dec Delay 之后使 OCDL 计数器递减。如果 OCDL 计数器超过由 Protections:OCDL:Latch Limit 给出的可编程锁存限制,则会触发 OCDL 故障。只要 OCDL 计数器大于零,就会生成 OCDL 警报。
使用 Settings:Protection:Enabled Protections C:[OCDL] 配置位来启用 OCDL 保护。如果触发了 OCDL 保护故障,并且启用了负载检测功能(请参阅Topic Link Label6.2.18),且检测到负载已移除,或者检测到充电电流,或者在可编程时间之后,或者主机发送 0x009B OCDL_RECOVER() 子命令,则器件可能会恢复。为了根据充电电流进行恢复,必须设置 Settings:Protection:Protection Configuration[OCDL_CURR_RECOV],器件必须采用串联 FET 配置,并且必须启用 CHG FET。如果检测到电流大于或等于 Protections:OCDL:Recovery Threshold 达 Protections:OCDL:Recovery Time,那么器件将从 OCDL 恢复。如果优先采用仅基于时间的恢复,则可以使用基于充电电流的恢复,将电流阈值设置为较小的放电电流。
下表描述了更多详细信息。
状态 | 条件 | 操作 |
---|---|---|
正常 | VSRN–VSRP ≤ Protections:OCD1:Threshold 选择的设置 VSRN–VSRP ≤ Protections:OCD2:Threshold 选择的设置 CC1 Current > Protections:OCD3:Threshold |
Safety Alert A()[OCD1] = 0 Safety Alert A()[OCD2] = 0 Safety Alert C()[OCD3] = 0 如果 OCDL 计数器 > 0,则在每个 Protections:OCDL:Counter Dec Delay 周期后将 OCDL 计数器减一 |
警报 | VSRN–VSRP > Protections:OCD1:Threshold 选择的设置 | Safety Alert A()[OCD1] = 1 |
警报 | VSRN–VSRP > Protections:OCD2:Threshold 选择的设置 | Safety Alert A()[OCD2] = 1 |
警报 | CC1 电流 ≤ Protections:OCD3:Threshold | Safety Alert C()[OCD3] = 1 |
跳变 | VSRN–VSRP > Protections:OCD1:Threshold 选择的设置达 Protections:OCD1:Delay | 如果启用了自主 FET 控制,则Safety Alert A()[OCD1] = 0 Safety Status A()[OCD1] = 1 Alarm Raw Status()[XDSG] = 1; 使 OCDL 计数器递增 |
跳变 | VSRN–VSRP > rotections:OCD2:Threshold 选择的设置达 Protections:OCD2:Delay | 如果启用了自主 FET 控制,则Safety Alert A()[OCD2] = 0 Safety Status A()[OCD2] = 1 Alarm Raw Status()[XDSG] = 1; 使 OCDL 计数器递增 |
跳变 | CC1 电流 ≤ Protections:OCD3:Threshold 达 Protections:OCD3:Delay | 如果启用了自主 FET 控制Safety Alert C()[OCD3] = 0 Safety Status C()[OCD3] = 1 Alarm Raw Status()[XDSG] = 1; 使 OCDL 计数器递增 |
恢复 | Safety Status A()[OCD1] = 1 或 Safety Status A()[OCD2] = 1 或 Safety Status C()[OCD3] = 1 且 CC1 电流 > Protections:OCD:Recovery Threshold 达 Protections:Recovery:Time | afety Status A()[OCD1] = 0 Safety Status A()[OCD2] = 0 Safety Status C()[OCD3] = 0 Alarm Raw Status()[XDSG] = 0 |
锁存警报 | OCDL 计数器 > 0 | Safety Alert C()[OCDL] = 1 |
锁存跳变 | OCDL 计数器 ≥ Protections:OCDL:Latch Limit | 如果启用了自主 FET 控制,则Safety Status C()[OCDL] = 1 Safety Alert C()[OCDL] = 0 Alarm Raw Status()[XDSG] = 1; |
锁存复位(基于负载检测) | Safety Status C()[OCDL] = 1 并且使用负载检测功能检测到负载已移除 | Safety Status C()[OCDL] = 0 重置 OCDL 计数器 Alarm Raw Status()[XDSG] = 0(如果 Safety Status A()[OCD1] = 0,Safety Status A()[OCD2] = 0 并且 Safety Status C()[OCD3] = 0) |
锁存复位(基于充电电流) | Safety Status C()[OCDL] = 1 并且 CC1 电流 > Protections:OCDL:Recovery Threshold | Safety Status C()[OCDL] = 0 重置 OCDL 计数器 Alarm Raw Status()[XDSG] = 0(如果 Safety Status A()[OCD1] = 0,Safety Status A()[OCD2] = 0 并且 Safety Status C()[OCD3] = 0) |
锁存复位(主机命令) | Safety Status C()[OCDL] = 1 并且 主机发送 0x009B OCDL_RECOVER() |
Safety Status C()[OCDL] = 0 重置 OCDL 计数器 Alarm Raw Status()[XDSG] = 0(如果 Safety Status A()[OCD1] = 0,Safety Status A()[OCD2] = 0 并且 Safety Status C()[OCD3] = 0) |