I²C(Inter-Integrated Circuit)是由飞利浦(现恩智浦)公司开发的一种同步、半双工、多主从架构的串行通信总线协议,广泛用于连接低速外围设备(如传感器、存储器、显示屏等)。其核心特点是仅需两根信号线即可实现多设备通信,硬件设计简单且成本低廉。
---
一、I²C的核心特性
1. 两线制架构
- SCL(Serial Clock):时钟信号线,由主设备控制。
- SDA(Serial Data):双向数据线,传输地址、命令和数据。
2. 通信模式
- 半双工:同一时刻只能发送或接收数据。
- 多主从支持:允许多个主设备通过仲裁机制共享总线。
- 地址寻址:每个从设备有唯一7位或10位地址(最多支持128或1024个设备)。
3. 速率模式
- 标准模式(Standard Mode):100 kbps
- 快速模式(Fast Mode):400 kbps
- 高速模式(High-Speed Mode):3.4 Mbps
- 超快速模式(Ultra Fast Mode):5 Mbps(非官方扩展)
---
二、I²C通信协议详解
1. 通信流程
1. 起始条件(START):SCL为高时,SDA从高→低跳变。
2. 地址帧:发送7位或10位从设备地址 + 1位读写标志(0=写,1=读)。
3. 应答(ACK):从设备拉低SDA确认地址匹配。
4. 数据传输:主设备发送/接收数据帧(每8位后跟随ACK/NACK)。
5. 停止条件(STOP):SCL为高时,SDA从低→高跳变。
2. 数据帧格式
| START | 地址 (7/10位) | R/W | ACK | 数据 (8位) | ACK/NACK | ... | STOP |
3. 冲突处理
- 总线仲裁:多个主设备同时发送时,检测SDA电平冲突,失败方退出。
- 时钟同步:SCL线为“线与”逻辑,主设备同步时钟相位。
---
三、硬件设计要点
1. 上拉电阻选择
-典型值:3.3V系统用4.7kΩ,5V系统用2.2kΩ。
2. 电平匹配
- 混合电压系统:若主从设备电压不同(如3.3V与5V),需使用电平转换芯片(如TXS0108E)。
3. PCB布局
- 短距离布线:I²C适合板级通信(通常<1米),长距离需加缓冲器(如PCA9600)。
- 避免干扰:SCL/SDA线远离高频信号(如开关电源),必要时包地处理。
---
四、典型应用场景
1. 传感器接口
- 温度/湿度传感器:如BMP280(气压)、SHT30(温湿度)。
- 加速度计/陀螺仪:如MPU6050(6轴运动传感器)。
- 应用优势:低功耗、多传感器共享总线。
2. 非易失性存储器
- EEPROM:如AT24C02(2KB存储),用于保存配置参数。
- FRAM:如FM24V10(铁电存储器),高速读写。
3. 人机交互设备
- LCD显示屏:如SSD1306(OLED驱动芯片)。
- 触摸控制器:如FT6236(电容触摸屏控制器)。
4. 实时时钟(RTC)
- DS3231:高精度时钟模块,通过I²C设置和读取时间。
5. 多设备控制系统
- GPIO扩展:如PCA9535(16位I/O扩展芯片)。
- 电源管理:如MAX7323(控制多路电源开关)。
---
五、常见问题与解决方案
1. 总线锁死
- 原因:从设备异常未释放SDA线。
- 解决:发送9个额外时钟脉冲强制复位。
2. 地址冲突
- 方法:选择支持地址配置的芯片(如跳线设置地址位)。
3. 长距离通信干扰
- 方案:使用I²C缓冲器(如PCA9515)或转CAN/USB模块。
---
六、总结
I²C凭借其简洁的两线制设计、灵活的多设备支持及低硬件成本,成为嵌入式系统中低速外设互联的首选协议。
关键设计原则:合理选择上拉电阻、严格时序控制、避免地址冲突。对于需要高速或长距离通信的场景,可结合SPI或CAN总线互补使用。