工具/软件:
您好:
我使用的是 BQ7695202PFBR (默认情况下使用支持 CRC 的 I2C 通信)、我得到了微控制器和电池管理器之间正在运行的通信。 我可以读取电芯电压和温度、这两个值根据电芯插入时的实际温度和实际电压进行检测。 CRC 的计算结果与电池管理器的计算结果相匹配(我肯定不需要费力解决)。
我尝试在同一条 I2C 总线上连接多个电池管理器、因此需要更改它们的 I2C 地址。 目前、我正在尝试临时执行此操作(无 OTP 编程)。 因此、我按照以下步骤操作:
-读取 I2C 地址:我得到0x00(一切都好)
-进入配置模式:我可以看到电池状态的位数0变为0
-写我的新 I2C 地址(0x10 ):我的通信得到了正确的确认
-再次读取 I2C 地址:我得到了0x10 (看起来很好!)
-退出配置模式:我可以看到电池状态位数0恢复为1
-激活交换通信模式
然后芯片继续在旧的 I2C 地址上通信。。 此外、我还增加了等待时间(基于 doc)、尤其是在执行 Swap Comm Mode 命令后、即使经过多秒钟、芯片仍在旧地址上通信。
我想指出的是、我在写入 I2C 地址的通信部分尝试了 CRC、校验和长度问题、当我以任何方式将新的 I2C 地址不写入 RAM 时、我读回 I2C 地址时会得到0x00。 因此、我很有信心我写入 RAM 过程可以正常工作、因为我能够读回我写入的值。
我对这里可能出现的问题有点困惑、为什么芯片没有切换到新的 I2C 地址? 此外、我是否有办法测试交换通信模式是否已被电池管理器正确传输、理解和应用?
注意:我的微控制器和我的电芯管理器(ISO1640BDR)之间有一个隔离器。 我不认为这件事是聪明到足以把事情搞得一团糟,是吗?
非常感谢
祝你度过美好的一天