This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ76930:I2C 无响应

Guru**** 2550940 points
Other Parts Discussed in Thread: BQ76930

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/742031/bq76930-i2c-becomes-unresponsive

器件型号:BQ76930

我们使用 BQ76930开发并制造了10节电池的 BMS。

我们看到客户的电池问题、在分析问题时、我们发现 BQ76930没有响应任何 I2C。

在断开所有电池并重新连接后、BQ76930仍然正常工作、我们不知道问题发生时的具体情况、但我们在 MCU 发送进入运输模式的命令时发现了这一问题。

一些报告此问题的用户确认他们没有尝试进入运输模式、BMS 在正常运行时停止了 I2C 通信。

我们一直在为下一批制造人员设计解决方案、以便从 MCU 复位 BQ76930、 数据表中显示、为了复位 BQ76930、必须将 (BAT–VC5x)和(VC5x–VSS)置于 VSHUT 下方、并 通过向 TS1引脚施加适当的 VBOOT 信号来重新启动。

如果我们使用几个电机对 MCU 的(BAT-VC5x)和(VC5x-VSS)短路、我们应该能够复位 BQ76930、但是、我们不确定是否可以在连接所有其他电池的情况下实现这一点。

是否有任何其他建议方法可在无需断开电池的情况下从 MCU 复位 BQ7690?

i2c 无响应的原因可能是什么?

我们希望尽快解决这一问题

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nicolas、
    您应该弄清楚发生了什么并防止它发生。 通过查看 I2C 总线的状态、ALERT 和稳压器输出也可能会给出一些指示。
    如果滤波电容器太小或电池的负载太大、您可以将器件拉至 VSHUT 区域、这是不需要的。 如果部件关闭、您应该能够引导它。
    如果 I2C 总线有噪声、您可以获得额外的时钟并让从器件保持总线。 清除总线的标准 I2C 方法是让主机发送最多9个时钟、直到从机释放总线。
    如果瞬态超过绝对最大值、请加以防止。
    在实验练习中、您可以短接 CAP1电容器、然后重新启动、但这不是复位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、感谢大家的回答。 我们尝试实现 i2c 总线重置、但一旦我们重置 MCU 以刷写它、i2c 就开始再次工作。 如果我们再次发现问题、我们将尝试测试您的解决方案。

    但是、在2次出现此问题的另一电池中、电池已断开连接并重新连接以重置它、几次我们还注意到 BQ76930成功响应了 i2c 命令以获取温度和电池电压、 但是、温度值是错误的、而且一些电池的值也一直停留在某个旧范围内(我们看到报告的值随着时间的推移而变化、 但电压与实际情况不符)。同样,在断开电池并重新连接电池后,温度和电池电压报告正常。

    最后、昨天、我们正在为该电池充电、并突然开始燃烧、直到所有10个电池起火并被毁。

    我们怀疑一节电池短路、充电时温度开始升高、但我们没有得到任何 i2c 误差、 也不会出现过压或过热、因为我们没有得到任何 i2c 误差、因此 MCU 我们认为 BQ76930的温度和电池电压再次卡住、因此 BMS 认为即使温度上升到点火点、一切都正常。

    您能不能就此发表评论、BQ76930的内部 ADC 像这样卡住的原因是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们在另一个电池中观察到、电池电压会使寄存器 SYS_CTRL1上的 ADC_EN 位自行清除。 MCU 上的固件中没有任何可以清除 ADC_EN 位的内容、而且由于所有 i2c 通信都具有 CRC、因此 i2c 噪声线路似乎不太可能更改该位。

    该 ADC_EN 位被清零的原因可能是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nicolas、
    这必须是相当引人注目的。 您必须找出出现问题的地方。
    如果 ADC 被关闭、它将不会收集新的电压和温度。 如果器件发生 XREADY 故障、它将不会在寄存器中报告新电压、尽管可以设置 ADC_EN。 如果清除了 Temp_Sel 位、它将报告 IC 温度电压、而不是热敏电阻电压。
    除非断电、否则该器件不会关闭 ADC_EN。 由于功率损耗、XREADY 也可被置位。 通常情况下、FET 通过 XREADY 关断、因此当电压未知时、不能进行充电或放电。 如果主机关闭 ADC、则可以打开 FET。 当然、在系统设计中不能使用 FET 控制。
    如果断电且器件重新启动、则默认设置 ADC_EN。 主机必须将其关闭。

    虽然关闭 ADC 的固件中没有任何目标内容、但主机仍在控制之中。 了解正在为 bq76930设置什么通信。 您还应该检查系统操作中部件的电源。 SYS_CTRL_1寄存器还具有 TEMP_SEL 位、用于启用热敏电阻测量。 如果任一位设置为低电平、则不会启用热敏电阻。 脉冲为每2秒一次。 如果您看到热敏电阻脉冲停止、您就知道发生了一些变化。 这种情况不常见、但它是可观察到的信号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

    我们检查了 XREADY 故障、它没有报告任何故障。 此外、我们始终设置 TEMP_SEL 以测量外部热敏电阻。

    是否有一个电压带、其中 ADC_EN 被清零但 XREADY 未被置位? 在我们上次看到 ADC_EN 清零的电池中、我认为器件没有断电 。

    我们已检查了 MCU 发送的所有 i2c 命令、但没有发现任何指示 MCU 可以清除 ADC_EN 的命令。

    但是、我们可能在原理图中发现了一个错误、该错误可能会引入超出建议的电池绝对电压范围的一些瞬态电压。 为了在电池深度耗尽时(当电池的电压不足以打开 BQ76930时)启动电路、我们添加了从充电器到 BAT 引脚的路径、类似于从 VC10到 BAT 引脚的路径、也添加了用于 VC5x 的路径。 (请参阅随附的图片)。

    在连接充电器之前、各层断开电池与充电器端口的连接、BAT 中的电压是 VC10上的电压、VC5x 中的电压是 VC5的电压、一旦连接充电器、 充电器将在 BAT 中输入42V、在 VC5x 中输入21V (由于通过 VC5B 和电池5连接的一些电阻器路径、此电压会下降) 在 BQ76930可以向 MCU 产生3.3V 电压、而 MCU 将打开允许充电器开始为电池充电的层、在此之前、充电器将调节其电压以使用2或3安培电流为电池充电(具体取决于充电器)。 但是、当 MCU 关闭且连接充电器时、VC5x 引脚的电压可能高于 VC6 (可能还有 Vcn、其中 n=7、8、9和10)、这意味着电压 VC6-VC5x 可能小于绝对最小值-0.3V。 我们已经知道这是一个错误、我们已经更改了设计以防止这种情况发生、但是我们想知道这是否是 ADC_EN 自行清除的原因?

    我们将在 MCU 中实施固件机制、以检查 ADC_EN 是否已清除并重新激活、但我们想知道是否需要考虑其他任何因素。

    此外、您能否澄清这句话:"如果任一位设置为低电平、则不会启用热敏电阻。 脉冲为每2秒一次。 如果您看到热敏电阻脉冲停止、您就知道发生了一些变化。 这种情况不常见、但它是一种可观察到的信号。"

    您要引用哪一位? ADC_EN 和 TEMP_SEL?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nicolas、
    感谢您对原理图的深入了解。
    如果超过绝对最大值、则可能不起作用、可能会复位、可能发生故障或可能损坏。 RESET 会设置 ADC_EN、因此您似乎遇到故障。
    bq76930的设计理念是、具有极端放电功能的电池不应重新充电。 如果电池电压过低而无法启动、则器件将无法工作。 当电压足够时、您的 MCU 可能会将 bq76930用作传感器。 我相信您会找到一个好的解决方案。
    "你指的是哪一位? ADC_EN 和 TEMP_SEL?" 是的、任一低电平将停止 TSX 引脚上的温度采样。 如果 TEMP_SEL 为低电平、则不对外部引脚进行采样、如果 TEMP_SEL 为低电平并且没有指示、则对内部温度电压进行采样。 如果 ADC_EN 在 TEMP_SEL 为高电平时为低电平、则器件知道它不需要测量外部温度、引脚也不会变为高电平。 如果查找温度样本、请记住振幅将随温度变化。