问题

我想用 SMBus/I2C通信。请问什么是总线空闲超时?什么是 SCL低电平超时?

答案

总线空闲超时

对于 C8051Fxxx MCU,在特定的比特位被置起后,如果 SCL和 SDA信号线均为高电平并持续 10个SMBus时钟周期的总线便被视为空闲(没被占用)状态。当这总线处于空闲时,处于传输待命状态的SMBus主控方可以接管该总线并产生一个起始条件开始新的数据传输。

 

SCL低电平超时

SMBus提供一种时钟同步机制,类似于允许不同速率设备兼容共用总线的I2C。 时钟低扩展被用于低速从机设备与高速主机通信的数据传输期间。从机可能会临时保持 SCL信号线处于低电平状态以延长时钟周期,以便有更多时间响应一个高速的主机。

 

如果 SCL线被总线上一个从机拉低,总线将不能进行进一步的通信。而且,主机也无法强制SCL为高电平以纠正错误的条件。为了解决这个问题,SMBus协议规定参与数据传输的设备必须检测任何被拉低超过 25毫秒的时钟周期作为超时条件。这被称为 SCL低电平超时。

 

已经检测出超时条件的设备必须在检测到超时后10 毫秒之内复位通信以恢复总线。

  • 8-bit MCUs
  • Knowledge Base Articles