IIC协议是什么?
IIC协议(通常称为I²C,读作I-squared-C,意为Inter-Integrated Circuit)是一种广泛使用的串行总线接口标准,由Philips半导体(现在的NXP Semiconductors)在1980年代初开发。它主要设计用于允许多个“低速”周边设备通过短距离的单个总线与微控制器相连,常用于嵌入式系统中。
主要特点
- 两线制:I²C只需要两条线来传输信息——
- SDA(Serial Data Line):数据线
- SCL(Serial Clock Line):时钟线
- 多主多从:I²C支持多主设备和多从设备配置。任何主设备都能发起通信,而多个从设备能根据地址响应。
- 地址识别:每个从设备都通过唯一的地址被访问。地址通常是7位或10位。
- 同步:所有设备均通过共享的时钟信号(SCL)进行同步。
- 速率:标准模式下的数据传输速率为100kbps,快速模式为400kbps,还有更高速的模式如1Mbps的快速模式加和3.4Mbps的高速模式。
工作原理
- 启动和停止条件:通信通过主设备发起的启动条件(START)开始,并通过停止条件(STOP)结束。
- 数据传输:数据以8位字节的形式传输,每发送一个字节后,接收方必须发送一个应答位(ACK)来确认接收到当前字节。
- 仲裁和冲突检测:在多主模式下,如果两个主设备同时尝试控制总线,I²C总线具有仲裁功能,能够无错误地处理总线争用。
- 时钟拉伸:从设备可以通过延长SCL低电平来暂停总线(称为“时钟拉伸”),以便在需要时获得更多处理时间。
应用场景
I²C广泛应用于各种设备之间的低速通信,特别适用于不需要高带宽但需要最小化物理连接的场景。常见的应用包括:
- 传感器(如温度、湿度传感器)与微控制器之间的通信
- OLED/LCD显示屏的控制
- EEPROM和其他存储设备的读写
- 实时时钟(RTC)组件的设置和读取
I²C的简单性和灵活性使其成为嵌入式系统中理想的低速通信协议,尤其是在引脚数量有限或设计空间受限的应用中。