简介
特点:串行、半双工总线,主要用于近距离、低速(抗干扰能力差)的芯片之间的通信。硬件结构简单,成本较低。
I2C总线由数据线SDA和时钟线SCL两条线构成通讯线路,既可发送数据,也可接收数据。~是一种多主机总线,主机有权发起和结束一次通信,而从机只能被主机呼叫。
I2C 的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。
I2C总线通信过程
- 主机发送起始信号启用总线;
- 主机发送一个字节数据指明从机地址和后续字节的传送方向;
注: 一个字节8位,从机地址占高7位,还有一位表明数据是主到从(“0”)还是从到主(“1”)。 - 被寻址的从机发送应答信号回应主机;
- 发送器发送一个字节数据;
- 接收器发送应答信号回应发送器;
- …循环步骤4、5
- 通信完成后主机发送停止信号释放总线
I2C信号实现
注:空闲时,两根线都处于高电平。
字节传送和应答
I2C总线通信时每个字节为8位长度,数据传送时,先高后低,发送器发送完一个字节数据后接收器必须发送1位应答位(“0”)来回应发送器,即一帧共有9位。
同步信号
I2C总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许改变;时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许改变。
典型I2C时序
主机先向从机发送数据,然后从机再向主机发送数据
当准备转换数据传送方向时,主机不用发停止信号(发P后,可能失去主机权),直接发送起始信号即可。