Thread 中讨论的其他器件: BQ76942
工具与软件:
您好!
我们遇到了一个有关 STM32 (主站)和 BQ76952 (从站)之间 I2C 通信的问题、这两个都是在我们的电池管理系统中实现的。
I2C 有两个问题。
第一个 I2C 问题:
使用相同的器件和相同的软件、我们注意到三种随机发生的情况:
- 引导写入命令不会返回任何错误、并且进一步的通信是正确的。
- 引导后、几个初始写入命令返回错误、进一步通信是正确的。 但是、我们注意到一些设备在较长的时间段(例如两个月)后失去通信、我们不知道其原因是什么。 仅在重新启动 STM32后、通信才正确。
- 有时在引导后、很少的初始写入命令返回错误、并且 I2C 外设锁定。 在这种情况下、所有通信都失败。 仅在重新启动 STM32后、通信才正确。
- I2C 速度:100kHz、 上拉 电阻器为10k、也使用4.7kΩ 进行了测试、未做任何更改
我们通过在系统启动/重启时发送20个空时钟周期来解决第一个 I2C 问题。 也尝试使用9个空时钟周期、但结果比20个空时钟周期更差。 这20个空时钟周期会清除 BQ76952拉至 GND 的 SDA、并使通信正常启动。
第二个 I2C 问题:
ST 的 HAL 在正常运行期间在处理通信故障时存在问题、例如 SDA 和 SCL 之间短路(例如上拉电阻器之间的环境污染)。
如果我们检测到传输错误并且在传输后仍设置 BUSY 标志、我们通过将 PE 位切换为0然后再切换回1来解决此问题。
这些与 BQ76952相关的修复措施是否会导致任何缺点? 这两种解决方案解决了我们的问题、但我们不确定是否适合 BQ76952的其他一些方面和案例。 我们测试了这两种方法、都得出了积极的结果。
此致、
Karol