工具与软件:
如果 MCU 和 I2C 上拉电阻在 BQ 之前上电、则一切都正常运行。
但在我们的当前设计中、通常首先唤醒 BQ、并且为 MCU 和 I2C 上拉电阻供电的电压域仅提供~20ms 的延迟、与此同时、总线线路没有上拉电阻。
显然、这会导致 BQ 的 I2C 接口锁定、因为它不会再次确认任何命令、但我可以看到 REG1V8和 REG1 (3V3)在线、因此 BQ 必须处于活动状态。
这一理论是否合理?如果可行、那么发生这种情况的确切条件是什么?
对于下一个 PCB 修订版、我们打算更改上拉电阻的提供方式、但对于当前修订版、我们仍需要以某种方式使其正常工作。
我的权变措施思路是在 MCU 启动后通过将 RST_SHUT 引脚设置10ms 来复位 BQ。
这确实解决了 I2C 问题、但会产生新的问题、然后累积的电荷会复位为某个垃圾值。
因此、我也尝试向它发送 RESET_PASSQ 子命令、但没有效果、除非我在 RST_SHUT 再次变为低电平并发送子命令之间插入300ms 的延迟。
这里发生了什么、为什么需要这种延迟、它记录在哪里?
此外:
为什么 OTP_WR_CHECK 子命令需要长达200ms 的时间来执行?
如果我向器件发送 RESET 子命令、我需要等待20ms 才能接受下一条命令、为什么没有记录这一点?
如果我尝试从0x0084读取、它似乎永远不会完成、0x3e 和0x3f 始终返回0xff、为什么会这样?
为什么要在每个字节中附加一个"CRC"? 这违反了 CRC 的逻辑、为什么不正确实现它并删除0x60处的校验和呢?
到目前为止、为该 IC 实施驱动程序一直是一个彻底的挫折。
BR