主题中讨论的其他器件: BQSTUDIO、 BQ76942
工具/软件:
少量背景:我来自之前使用 BQ764002 的电路板设计、尽管 IC 对于电气设计非常粗略、但可以轻松地与/控制进行通信。 (所有功能均有效。) 然后我 遇到了 BQ76952、它在电气设计方面比其他方面的表现要好几个光年、但 通信/控制却是一种皇家般的痛苦。
平衡电路基于 SLUAA81A 第 4 页的图 2-2 中提供的低侧参考设计。 即使 FET 没有由于电池电压或其他原因而导通、我仍然应该会看到相应的电池电阻器上出现压降(根据参考设计,为 100R) 、或者至少 BQ76952 应该触发警报/故障标志。
不、我没有使用 BQStudio、也没有 EV2300/2400。
到目前为止、BQ76952 以基本 的默认配置运行、直接基于 TI 参考设计的定制 PCBA 具有紧密、干净的布局。 这是我目前所知道的:
- 芯片 上电正常(出现 1.8V 电源)
- 默认 I2C 通信正常
- 对命令和子命令的读取/写入经过测试可以正常工作(读取/写入以及进入/退出 CONFIG_MODE)
- 高侧 FET 驱动器(串联配置)功能测试正常、 启用时主 FET 的栅极 — 源极两端电压为 10V
- 测试了空载下的睡眠功能(充电 FET 关断,电源通过体二极管)
- 4S 电池电芯电压读数测试正常工作 (3.509v、3.519v、3.521v、3.515v)。 请注意、我对 BQ76952 使用的电池与我对 BQ764002 使用的电池完全相同、后者的平衡功能正常。
- 电池组电压读数正常工作 (14.0v)
- 内部温度读数为 29C(没有外部温度传感器连接到 TS1 或 TS3;TS2 是一个控制信号,上面有一个按钮,因此也没有热敏电阻)
- 一些寄存器值:
- FW_VERSION [0]= 0x9576 [大端字节序、因此 0x7695]
- FW_VERSION [2]= 0x3600 [大端字节序、因此 0x0036]
- FW_VERSION [4]= 0x2700 [大端字节序、因此 0x0027]
- 警报原始状态= 0x0683
- 电池状态= 0x0184
- Safety Alert A/B/C ALL = 0x00
- PF 状态 A/B/C/D ALL = 0x00
- 配置在设置 ALARM_STATUS 的 INIT_COMPLETE 位并 设置 BATTERY_STATUS 的 POR 位后、通过进入 CONFIG_MODE 写入所有这些设置、然后退出 CONFIG_MODE、我将在 CONFIG_MODE 中设置:
- “Balance Config“[寄存器 0x9335]= 0x0F。
- 已尝试将其保留为默认 0x00、但尝试了 0x0F、以防 SLEEP 状态阻止主机启动的平衡。 没有变化。
- 还尝试将其设置为 0x1F、以测试“禁用主机启动的平衡“是否有效、如果设置了该位、则为 CB_ACTIVE_CELLS 始终 读为 0。 所以有一些通信/变化。
- “FET 选项“[reg 0x9308]= 0x1D、启用预放电 FET
- “Balance Max Cells“[寄存器 0x933A]= 8。 它在 0 处应该没有问题、但只是为了以防万一而尝试了此操作。 没有变化。
- “Charge Min Cell V“[reg 0x933B]和“Relax Min Cell V“[reg 0x933F]->将两者都设置为 3000 (mV、因此是 3.000v) 、以防我的电池低于默认的 3.9v 阈值是个问题。 没有变化。
- “Vcell Mode“[reg 0x9304]->将其设置为 0x8007、以匹配实际的电芯配置、以防万一。 没有变化。
- “Balance Config“[寄存器 0x9335]= 0x0F。
BQ76952 即时接线:

请注意、根据参考设计、“VBUSBAT"具有“具有一个串联电阻器、一个串联二极管和一个 2.2uF 电容器。 是的、根据 SLUSE13B 表 16-3、所有寄存器均被禁用。
预期行为:
- 向 CB_ACTIVE_CELLS [sub-cmd 0x0083]~5x/s 写入一个位、以确保它不会超时
- 相应的电芯均衡 开始
实际行为:
- 向 CB_ACTIVE_CELLS [sub-cmd 0x0083]~5x/s 写入一个位、以确保它不会超时
- 没有任何反应
- “Alarm Raw Status“[cmd 0x64]位“CB"从“从不设置
- “CBSTATUS1"[sub-cmd“[sub-cmd 0x0085]始终为 0、表示没有平衡 时间
有趣的是、 以相同的 5x/s 间隔读回 CB_ACTIVE_CELLS 时、我注意到以下情况:

BQ76952 内部的一项功能是每秒在点上清除一次寄存器。 根据 SLUUBY2B 表 6-9、有许多内部功能以 1 秒的间隔运行、包括“电池平衡“、但这似乎是用于 自动电池平衡。 我在 https://github.com/LibreSolar/bms-firmware/blob/77c6206b92399028af6a5ca893afecc87236ee7f/drivers/bms_ic/bq769x2/bq769x2.c#L395-L401 中确实注意到 、如果 禁用了自动平衡、它们会将 “Balance Config“[寄存器 0x9335]设置为 0x00。 我尝试了—— 它没有做任何事情。
似乎是由于某种原因导致 BQ76952 在 1 秒内部循环中关闭电芯平衡、然后再将请求实际门控到 AFE、但是 全部 和失败标志相清除。
如果 BQ76952 未报告任何警报或失败、那么为什么它 在主机通过 CB_ACTIVE_CELLS 子命令请求时拒绝启用平衡? 我已经 失去了几个整天在这个单一的问题单...它停止了一段时间前是有趣的。
顺便说一句:文档勘误表:
- 在 SLUUBY2B 的第 115 页上、我们发现 “CB_SET_LVL"[sub-cmd“[sub-cmd 0x0084]列为只写
- 在 第 10 页的 SLUAA81A 中、 我们被告知 CB_SET_LVL “读取时返回阈值。“ 我已经试着读了——不管写了什么、我都会得到 0x0000。 SLUAA81A 似乎不正确。
