飞利浦在20世纪80年代开发的I2C已成为电子领域最常见的串行通信协议之一。 I2C可以实现电子组件或IC与IC之间的通信,无论组件是在同一个PCB上还是通过电缆连接。 I2C的关键特性是能够在仅有两根导线的单个通信总线上拥有大量组件,这使得I2C非常适合要求简单且低成本超速的应用。
I2C协议概述
I2C是一种串行通信协议,只需要两条专为PCB上芯片间通信而设计的信号线。 I2C最初设计用于100kbps通信,但多年来已开发出更快的数据传输模式以实现高达3.4Mbit的速度。 I2C协议已经建立为官方标准,它提供了I2C实现之间的良好兼容性和良好的向后兼容性。
I2C信号
I2C协议只使用两条双向信号线与I2C总线上的所有器件通信。 使用的两个信号是:
- 串行数据线(SDL)
- 串行数据时钟(SDC)
I2C只能使用两个信号与许多外设进行通信的原因在于如何处理总线通信。 每个I2C通信都以一个7位(或10位)地址开始,该地址呼出外围设备的地址,剩下的通信用于接收通信。 这允许I2C总线上的多个器件根据系统的需求来扮演主器件的角色。 为了防止通信冲突,I2C协议包含仲裁和冲突检测功能,可以在总线上顺畅通信。
优点和局限性
作为一种通信协议,I2C具有许多优点,使其成为许多嵌入式设计应用的理想选择。 I2C具有以下优点:
- I2C只需要两条信号线
- 灵活的数据传输速率
- 总线上的每个设备都是可独立寻址的
- 设备具有简单的主/从关系
- I2C能够通过提供仲裁和通信冲突检测来处理多个主通信
- 比SPI更长距离的通信
具备所有这些优势,I2C还有一些可能需要设计的限制。 最重要的I2C限制包括:
- 由于只有7位(或10位)可用于器件寻址,因此同一总线上的器件可共享相同的地址。 有些器件能够配置地址的最后几位,但这仍然会限制同一总线上的器件。
- 只有少数有限的通信速度可用,许多设备不支持传输更高的速度。 需要部分支持总线上的每个速度,以防止较慢的设备捕捉部分传输,从而导致运行故障。
- 当总线上的单个设备停止运行时,I2C总线的共享特性可能导致整个总线挂起。 将总线电源循环可用于重新启动总线并恢复正常操作。
- 由于设备可以设置它们的通信速度,所以较慢的操作设备可以延迟较快速度设备的操作。
- 由于通信线路的开漏拓扑结构,I2C比其他串行通信总线的功耗更高。
- I2C总线的局限性通常会将总线上的设备数量限制在十几个设备上。
应用
I2C总线是需要低成本和简单实施而非高速应用的理想选择。 例如,读取某些存储器IC,访问DAC和ADC, 读取传感器 ,传输和控制用户指导的动作,读取硬件传感器以及与多个微控制器通信是I2C通信协议的常见用途。