之前做收音机的时候用到了IIC总线协议,因为用的是别人封装好的库,对协议的具体执行方式不是很了解,于是花了点时间查了一下。

IIC协议大致有下面几个特点:

  1. 双向串行通信
  2. 两根线:数据线SDA,时钟线SCL,且支持挂载多个设备
  3. 传递四种信号:起始信号、8bit数据、响应信号、结束信号

起始信号:SCL时钟线保持高电平,SDA数据信号由高变低便代表开始信号。当总线上的设备检测到这个开始信号后便知道即将发送数据。

停止信号:SCL时钟线保持高电平,SDA数据信号由低变高便代表停止信号。

8bit数据与响应信号:发送数据时,接收方在SCL为高电平时读取SDA数据,因此SCL时钟线变为低电平时SDA数据才能发生变化。输出到SDA上的数据一组有八位,传输组数不受限制,但每发送八位后需要接收来自接收方的确认信号才能继续发送下一组数据。数据从高位传输。

在多设备的情况下,一次通信过程可以如下描述:

发送方发出起始信号、发送方发送目标设备地址、发送方接收目标设备响应、发送方传输第一组数据、发送方接收目标设备响应、发送方传输第二组数据、发送方接收目标设备响应……发送方发出停止信号