I²C(Inter-Integrated Circuit)通信协议是一种同步、半双工、多主多从的串行总线协议,由Philips Semiconductors(现NXP)于1982年开发,广泛应用于短距离板级设备通信(如微控制器与传感器、EEPROM、LCD等的连接)。其核心原理如下:
一、物理层特性:两线制与电气规范
总线结构
仅需两条线: 串行数据线(SDA) 传输数据, 串行时钟线(SCL) 提供同步时钟信号 。
开漏输出设计:SDA和SCL均通过上拉电阻连接电源(典型电压3.3V或5V),当设备释放总线时呈高电平;设备主动拉低电平输出数据 。
总线电容限制:总线上设备数量受最大电容400pF限制,通常支持挂载≤10个设备 。
主从模式
多主多从架构:支持多个主设备(发起通信)和多个从设备(响应通信),通过仲裁机制解决总线冲突 。
设备唯一地址:每个从设备有独立的7位或10位地址,主设备通过地址寻址目标从机 。
二、协议层机制:通信时序与控制
起始(START)与停止(STOP)条件
START:SCL为高电平时,SDA从高→低跳变,标志通信开始 。
STOP:SCL为高电平时,SDA从低→高跳变,标志通信结束 。
重复START:在不释放总线的情况下开始新传输,优于STOP+START组合 。
数据传输格式
消息结构:由地址帧(Address Frame)和数据帧(Data Frame)组成,每帧8位数据+1位ACK/NACK 。
地址帧:
7位地址模式:高7位为从机地址,最低位为读写标志(0:主写,1:主读)。
10位地址模式:首字节前5位固定为11110.后2位为地址高位;次字节为地址低位 。
数据帧:每传输8位数据后,接收方在第9个时钟周期发送ACK(拉低SDA)或NACK(保持SDA高)。
ACK/NACK机制
ACK:接收设备在SCL第9个高电平时拉低SDA,确认数据接收成功 。
NACK:接收设备保持SDA高电平,表示:
数据接收失败
从机忙(时钟拉伸)
主设备需终止传输 。
三、关键控制机制
时钟同步(Clock Synchronization)
多主设备竞争时,SCL线通过“线与”逻辑合并时钟:
任一主设备拉低SCL,总线即低电平;
所有主设备释放SCL后,总线才恢复高电平 。
时钟拉伸(Clock Stretching) :从设备可拉低SCL延长周期,强制主设备等待,解决速度不匹配问题 。
仲裁(Arbitration)
多主设备同时发送数据时,通过SDA线电平竞争:
设备发送高电平时检测到SDA实际为低,则退出竞争并切换为从模式 。
仲裁失败的主设备可重试,不影响数据传输完整性 。
寻址扩展与保留地址
广播呼叫地址(0x00) :向所有设备发送命令(如复位),设备可选择响应或忽略 。
保留地址段:
0000XXX:特定功能(如系统管理)
1111XXX:高速模式或10位寻址 。
四、工作模式与性能
模式 | 速率 | 特性 |
---|---|---|
标准模式 | 100 kbit/s | 基础模式,支持7位寻址 。 |
快速模式 | 400 kbit/s | 向下兼容标准模式,需更严格时序控制 。 |
高速模式 | 3.4 Mbit/s | 需专用I/O缓冲器,时钟线启用主动上拉 。 |
超高速模式 | 5 Mbit/s | 部分新设备支持,非通用 。 |
五、应用场景与优劣分析
典型应用:EEPROM(如24C02)、温度传感器、LCD控制器、RTC芯片 。
优势:
引脚资源少,布线简单,成本低 。
支持热插拔(设备可动态接入/移除)。
局限性:
速率低于SPI,不适用于高速传输 。
长距离通信需加中继器(抗干扰能力较弱)。
六、设计注意事项
上拉电阻选型:典型值4.7kΩ,需根据总线电容调整以确保上升时间满足时序要求 。
地址冲突规避:
相同型号器件通过硬件引脚(如A0/A1/A2)配置地址低位 。
10位寻址扩展设备容量至1024个 。
时序合规性:
严格满足t_{SU;STA}(START建立时间)、t_{HD;DAT}(数据保持时间)等参数 。
通过上述机制,I²C以极简的硬件实现复杂设备组网,成为嵌入式系统中最通用的通信协议之一。实际应用中需结合具体器件手册调整时序与电气参数,确保稳定性 。