一、简介 I²C(读作“I-squared-C”或“I-two-C”)是一种由荷兰飞利浦公司在上世纪80年代发明的双向二线式同步串行总线协议,主要用于集成电路间的通信。它特别适用于需要在单一主板上连接多个低速外设的情况,因其硬件接口简单且能够实现多主控和多从设备架构。
二、物理层特性
-
信号线:I²C仅需要两条信号线:
- SCL (Serial Clock Line):串行时钟线,由主设备控制,用于同步数据传输节奏。
- SDA (Serial Data Line):串行数据线,在主设备产生的时钟脉冲下,所有设备通过这条线交换数据。
-
电压电平:通常工作在+3.3V 或 +5V,具有逻辑高电平和逻辑低电平两种状态。
三、通信模式
- 主/从设备模式:系统中有一个主设备负责启动和终止数据传输,并提供时钟信号;其余设备为从设备,响应主设备的请求并发送或接收数据。
- 多主控能力:虽然通常只有一个主设备,但在某些配置中允许多个主设备共享总线。
四、操作流程
- 起始条件:当SCL线处于高电平时,SDA线由高变低,标志着一次传输开始。
- 地址寻址:主设备通过SDA线发送从设备地址和读写位来选择目标设备。
- 数据传输:主设备发出时钟脉冲,每个脉冲期间传送一位数据,数据在时钟的上升沿或下降沿稳定。
- 应答信号:每次字节传输后,从设备会在第九个时钟周期给出一个ACK(确认)或NACK(非确认)信号。
- 停止条件:一次传输结束时,SCL线高电平时,SDA线由低变高,标志传输结束。
五、数据速率 I²C协议支持多种速度模式,如标准模式(100kHz)、快速模式(400kHz)、快速加模式(1MHz)以及高速模式(3.4MHz)等。
六、总线扩展与仲裁 为了连接更多的设备,可以使用I²C扩展器。在多主控环境中,如果两个主设备同时尝试控制总线,则会触发总线仲裁机制,确保只有一个主设备继续传输,避免冲突。
总结来说,I²C协议凭借其简单易用、灵活可靠的特点,在众多嵌入式系统设计中得到广泛应用,尤其是在传感器接口、EEPROM存储器访问等领域。