通信协议 I2C 总结

本文介绍同步串行总线I2C i2c

I2C简介

I2C是Philips公司开发的一种简单、双向二线制同步串行总线。只需要两根线即可在连接于总线上的器件之间传送信息。一根是串行数据线(SDA),一根是串行时钟线(SCL)。

传输过程

1.主机发送开始信号;

2.主机发出一字节的从机地址信息,其中最低位为读写控制位(1为读,0为写),高七位为从机地址;

3.从机发出认可信号;

4.主机开始发送信号,每发送一字节后,从机发出认可信号给主机;

5.主机发出停止信号;

201708033758i2c.jpg

  • 开始信号:SCL为高电平时,SDA由高电平变低电平
  • 停止信号:SCL为高电平时,SDA由低电平变高电平
  • 应答信号:主机写从机时,每写完一字节,如果正确从机将在下一个周期将数据线拉低,以告诉主机操作有效,该信号为ACK,无效时为NACK.

注意:任何在时钟线为高电平时数据线上的电平改变都被认为是开始信号/停止信号,所以数据改变必须在时钟线为低电平时改变。

总结

1.总线上的每一个从设备都有一个addr,共7bit,广播地址全为0,当有多个相同的从设备时,从设备的 addr 分为固定部分和可编程部分,细节视datasheet而定。

2.通信时一般都是一个主设备控制多个从设备进行通信,主设备根据从设备的器件地址决定要和哪一个从设备通信,这样便避免了信息正确的到达从设备。当有多个主设备尝试控制一个从设备时便要采取仲裁决定由主设备中的哪一个先与从设备通信。

I2C相关术语

术语描述
发送器发送数据到总线的器件
接收器从总线接收数据的器件
主机初始化发送、产生时钟信号和终止信号的器件
从机被主机寻址的器件
多主机同时又多余一个主机尝试控制总线,但不破坏报文
仲裁多主机时只允许一个控制总线并使报文不破坏的过程
同步两个或多个器件同步时钟信号的过程

参考

1.百度百科—I2C总线

2. I2C协议解析