I2C 是同步半双工通信协议。I2C使用SCL,SDA两根双向数据线进行通信,同时为了支持线与逻辑,需要使用开漏输出,同时使用上拉电阻;上拉电阻大小常见的有1.8K,4.7K,10K;在低速场合,为了降低功耗,可以使用10K上拉电阻,1.8K的上拉电阻具有最好的性能,可满足较高速的应用。I2C常见的通信速率有普通:100K,快速:400K,高速:3.4M。I2C最大的从机数量受从机地址和最大总线电容400pF电容的限制。

  • 空闲状态:空闲时,SCL,SDA同时处于高电平。此时,各器件的输出场效应管处于截止状态,释放总线,总线信号由上拉电阻上拉至高电平。

  • 开始START:SCL为高电平时,SDA有下降沿。

  • 数据传输:数据传输以字节为单位,第一个字节表示从机地址+读写方向,后续数据格式由器件自己定义。数据传输中,SDA只能在SCL低电平时变化,并在SCL上升沿进行数据采样。

  • 应答:每发送一个字节后,接收方必须回复应答信号ACK,但发送最后一个字节后,回复非应答信号NACK。

  • 停止STOP:SCL为高电平时,SDA有上升沿。

握手机制:I2C提供握手机制,当主机速度太快而从机无法满足快速通信时,从机可以拉低SCL来与主机握手,从而延长SCL低电平的时间。(SCL高电平由所有器件发出最短的高电平决定,低电平则由低电平最长的决定)。
仲裁:SDA是线与逻辑,因此,只要有一端输出低,总线就为低电平,因此是低电平优先仲裁。仲裁规则是发送低电平个数多的主机获得总线权。

作者:SteveChen  创建时间:2025-12-23 15:56
最后编辑:SteveChen  更新时间:2025-12-23 15:57
上一篇:
下一篇: