I2C代表集成电路间。它是总线接口连接协议,已集成到设备中以进行串行通信。它最初是由Philips Semiconductor于1982年设计的。最近,它是短距离通信中广泛使用的协议。它也被称为两线接口(TWI)。
I2C通信协议的工作:
它仅使用2条双向漏极开路线进行数据通信,称为SDA和SCL。这两条线都被拉高。
串行数据(SDA)–数据传输通过该引脚进行。
串行时钟(SCL)–承载时钟信号。
I2C在2种模式下运行–
- 主模式
- 从机模式
在SDA线上传输的每个数据位都由SCL线上每个时钟的高电平到低电平脉冲进行同步。
根据I2C协议,当时钟线为高电平时,数据线无法更改,仅当时钟线为低电平时,数据线才能更改。这两条线是漏极开路的,因此需要一个上拉电阻,以使这些线为高电平,因为I2C总线上的器件为低电平有效。数据以包括9位的数据包的形式传输。这些位的顺序是–
- 起始条件– 1位
- 从站地址– 8位
- 确认– 1位
启动和停止条件:
可以通过将SCL线保持高电平并更改SDA的电平来产生START和STOP。为了产生启动条件,SDA从高变为低,同时保持SCL为高。为了产生STOP条件,SDA从低变高,同时保持SCL为高,如下图所示。
重复启动条件:
在每个启动和停止条件对之间,总线被视为繁忙,并且没有主机可以控制该总线。如果主机尝试启动新的传输,并且不想在开始新的传输之前释放总线,它将发出新的START条件。这称为“重复启动”条件。
读/写位:
高读/写位表示主机正在将数据发送到从机,而低读/写位表示主机正在从从机接收数据。
ACK / NACK位:
在每个数据帧之后,跟随一个ACK / NACK位。如果成功接收到数据帧,则接收方将ACK位发送给发送方。
寻址:
地址帧是起始位之后的第一帧。主机要与之通信的从机的地址由主机发送到与其连接的每个从机。然后,从站将自己的地址与此地址进行比较,并发送ACK。
I2C封包格式:
在I2C通信协议中,数据以数据包的形式传输。这些数据包的长度为9位,其中前8位放在SDA线中,第9位保留给ACK / NACK,即接收方确认或不确认。
START条件加上地址包再加上一个数据包再加上STOP条件就构成了完整的数据传输。
I2C通信协议的功能:
- 半双工通信协议–
可以进行双向通信,但不能同时进行。 - 同步通讯 –
数据以帧或块的形式传输。 - 可以在多主机配置中进行配置。
- 时钟延展–
当从设备未准备好通过将SCL线保持在低电平状态来延长时钟时,时钟将延长,从而使主设备无法提升时钟线。主机将无法提升时钟线,因为这些线是“与”线,并且要等到从机释放SCL线以表明它准备好传输下一位为止。 - 仲裁–
I2C协议支持多主机总线系统,但不能同时使用多个总线。 SDA和SCL由主机监控。如果发现SDA值很高,而SDA值应该很低,则可以推断出另一个主机处于活动状态,因此它停止了数据传输。 - 串行传输–
I2C使用串行传输进行数据传输。 - 用于低速通信。
好处 :
- 可以在多主机模式下配置。
- 由于它仅使用2条双向线(与SPI通信不同),因此降低了复杂度。
- 成本效益。
- 由于使用了ACK / NACK功能,因此具有改进的错误处理能力。
局限性:
- 速度较慢。
- I2C通信协议中使用了半双工通信。