嵌入式通信协议(二)——IIC总线
一、简介
- IIC总线是一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信。
- 有两根线:SDA——用于收发数据,SCL——用于通信双方时钟同步。
- 是一种多主机总线,连接在IIC总线上的器件分为主机和从机。
- 主机有权发起和结束一次通信,而从机只能被主机呼叫。
- 当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能。
- 每个器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机。
- 总线上的器件增加和删除不影响其他器件正常工作。
- IIC总线在通信时发送数据的器件为发送器,接收数据的器件称为接收器。
二、IIC总线通信过程
- 主机发送起始信号启用总线
- 主机发送一个字节数据:包括从机地址和后续字节的传送方向(0——主到从,1——从到主)
- 被寻址的从机发送应答信号回应主机
- 发送器发送一个字节数据
- 接收器发送应答信号回应发送器
- 循环4,,5。。。
- 通信完成后主机发送停止信号释放总线
三、具体信号介绍
- 起始信号和停止信号
空闲时——SCL和SDA均为高电平。
起始信号——SCL为高电平时,SDA由高变低。
停止信号——SCL为高电平时,SDA由低变高。
- 字节传送与应答
(1) IIC通信时每个字节为8位长度,数据传送时,先传高位,后传低位,发送器发送完一个字节数据后接收器发送一位应答位来回复发送器,即一帧共有9位。
(2)IIC通信时,SCL为低电平发送器发送数据,SCL为高电平时接收器读取一位数据,要求SDA保持稳定。
四、典型IIC时序