1.I2C中是否存在超时概念?
I2C协议中不存在超时的概念,而SMBus有超时概念,对于10kHz的最小时钟速度,可以考虑35ms的超时。
2.I2C总线什么时候可能被挂死
IIC总线在传输过程中出现以下情况时候(SDA电平被从机拉低):
(1) 当主机向从机写入数据或地址时,如果从机发送ACK响应,它将在第9个CLK期间下拉SDA
(2) 当主机读取数据时,从机向主机发送0(低电平)时
3.解除IIC中SDA被挂死的方法
(1) 方法1重置从设备(假设该设备具有Reset引脚)
(2) 方法2使用总线恢复序列(协议中申明)(五步)
1 step:主机停用IIC
2 step:I2C接口复用到GPIO模式
3 step:将SDA保持在高水平。
4 step:主设备通过在SCL线上以GPIO翻转模式提供至少9个时钟来释放从设备
5 step:主机重新初始化i2C模块,使i2C接口启用i2C功能。
4.PMBus可以超时:
PMBus支持更强大的协议,因为它提供超时和可选的数据包错误检查(PEC)来增强数据完整性。超时可以防止速度较慢的从设备保持时钟线超过指定的超时间隔,从而避免总线挂起。