bq76925的i2c是否具有故障自恢复能力?
时间:10-02
整理:3721RD
点击:
我们的设计中bq76925是一直带电在线的。如果主CPU意外重启,使bq76925恰好在i2c通讯的某个阶段中挂死等待,(比如bq76925正在ACK位中将SDA拉低),那么i2c总线就会被bq76925暂时锁死。
请问bq76925是否有类似超时重置一类的机制,可以从错误状态中自动重置i2c通讯,释放总线?
如果没有,那有什么方法可以让bq76925释放总线?
亲ACK/SDA是漏极开路结构,原则上不会出现你说的这种情况。
i2c总线的SCL/SDA都是上拉的,也就是总线空闲时是高。当master重启,检测到SCL/SDA电平为低,就会认为总线Busy。Slave在正常通信的过程中,在ACK位或回数过程中,都是可以拉低SDA的。如果master此时故障重启,slave是可能暂时保持SDA拉低的。
i2c被slave锁死的问题,在EEPROM等简单i2c器件上,是经常讨论的问题。所以不知道BQ76925是否自身有恢复能力。
根据TI英文社区的回复,i2c总线不会自动恢复,所以需要执行标准的总线恢复流程。