
📌 基本特性
-
全称:Inter-Integrated Circuit(集成电路总线)
-
类型 :同步、半双工、多主多从串行总线
-
信号线:仅2根
-
SDA:串行数据线(双向)
-
SCL:串行时钟线(主→从)
-
-
拓扑 :所有设备并联 在总线上,需上拉电阻
-
速度:
-
标准模式:100 kbps
-
快速模式:400 kbps
-
高速模式:3.4 Mbps
-
超快模式:5 Mbps
-
🔌 硬件连接
text
Vdd
|
Rp (上拉电阻,典型4.7kΩ)
|
+---- SDA ---- 所有设备SDA引脚
|
+---- SCL ---- 所有设备SCL引脚
|
设备1 设备2 设备3 ... 设备N
⏰ 关键时序规则
1. 数据有效性铁律
SCL为高时,SDA必须稳定;SCL为低时,SDA才可变化
2. 三大控制信号
| 信号 | 条件 | SDA变化 | 含义 |
|---|---|---|---|
| 起始(S) | SCL=高 | 高→低 | 开始传输 |
| 停止(P) | SCL=高 | 低→高 | 结束传输 |
| 重复起始(Sr) | SCL=高 | 高→低 | 切换方向/新传输 |
3. 应答机制
-
每字节(8位)后跟1位应答位(共9时钟)
-
ACK:接收方将SDA拉低(成功)
-
NACK:SDA保持高(失败/结束读)
📊 数据传输格式
主设备写数据到从设备
text
[S] + [7位地址 + W(0)] + [ACK] + [数据1] + [ACK] + ... + [数据N] + [ACK] + [P]
主设备从从设备读数据(典型)
text
[S] + [地址 + W(0)] + [ACK] + [寄存器地址] + [ACK] +
[Sr] + [地址 + R(1)] + [ACK] + [数据1] + [ACK] + ... + [最后数据] + [NACK] + [P]
🎯 寻址方式
-
7位地址(最常用):0x00~0x7F(部分保留)
-
10位地址:扩展至1024个地址
-
广播地址:0x00(所有从机响应)
📍 字节传输细节
text
MSB先传 应答位
SDA: __| b7 | b6 | ... | b0 |___ACK/NACK___|
SCL: __/¯¯¯\___/¯¯¯\___.../¯¯¯\___/¯¯¯¯¯¯¯¯\__
1 2 8 9
✅ 优点
-
引脚经济:仅需2线
-
支持多主:仲裁机制防止冲突
-
软件寻址:无需片选线
-
广泛支持:大多数MCU和外设都有
❌ 缺点
-
速度较慢:不适合高速流
-
距离短:通常<1米
-
软件复杂:比SPI协议复杂
-
上拉电阻影响速度:RC时间常数限制
🔧 典型应用场景
-
传感器:温湿度、加速度计等
-
小存储器:EEPROM
-
RTC模块
-
GPIO扩展芯片
-
音频/视频芯片配置
🛠️ 调试要点
-
波形检查顺序:S → 地址 → ACK → 数据 → ACK/NACK → P
-
常见问题:
-
无ACK:地址错误/设备未就位
-
SDA始终高:上拉电阻过大/线路断开
-
波形畸变:总线电容过大/上拉电阻过小
-
-
工具:逻辑分析仪(设置I2C解码器)
🧠 速记口诀
两线通信,上拉必备
时钟高稳,数据有效
起始下降,停止上升
地址先行,ACK响应
字节八位,MSB先飞
第九时钟,应答必回
核心总结 :I2C是用最少的线 实现多设备 中低速通信的优雅方案,掌握其时序铁律和应答机制即可驾驭。