IIC通信协议
封面图
•
2025-10-12
•
嵌入式
156
0
0
0
I²C(Inter-Integrated Circuit)是一种**半双工、同步、串行通信协议**,由飞利浦(现为恩智浦半导体)在1980年代开发。它主要用于在**短距离、低速的设备之间进行通信**,比如微控制器与传感器、EEPROM、ADC/DAC、LCD模块等外设之间的数据传输。 --- ## 🧩 一、I²C的基本特点 | 特性 | 描述 | |------|------| | **类型** | 同步、半双工、串行通信 | | **速度** | 标准模式:100 kbps;快速模式:400 kbps;高速模式:3.4 Mbps(部分支持) | | **主从结构** | 一个主设备控制多个从设备 | | **数据线** | SDA(数据线)和 SCL(时钟线) | | **地址** | 每个从设备有唯一的7位或10位地址 | | **多主设备** | 支持多主设备共存(通过仲裁机制) | --- ## 🔧 二、I²C通信的基本操作 ### 1. **起始信号(Start Condition)** - SDA 从高电平变为低电平,同时 SCL 保持高电平。 - 表示通信开始。 ### 2. **发送地址** - 主设备发送一个7位或10位的地址(最高位是读/写位)。 - 例如:`0x5A` 是一个7位地址,其中最低位表示读(1)或写(0)。 ### 3. **应答信号(ACK / NACK)** - 从设备在接收到地址后,会在第9个时钟周期拉低SDA(ACK),表示已接收。 - 如果未响应,则为主设备提供NACK(非应答)。 ### 4. **数据传输** - 主设备发送或接收数据字节。 - 每个字节后都跟一个ACK/NACK。 ### 5. **停止信号(Stop Condition)** - SDA 从低电平变为高电平,同时 SCL 保持高电平。 - 表示通信结束。 --- ## 📦 三、I²C的物理层 - **SDA(Serial Data)**:用于传输数据。 - **SCL(Serial Clock)**:用于同步数据传输。 - 通常使用**开漏输出(Open-Drain)**,需要上拉电阻(一般为4.7kΩ)。 --- ## 🚀 四、I²C的应用场景 - 传感器(如温度、加速度计) - EEPROM 存储器 - LCD 显示模块 - 电源管理芯片 - 低速外设接口 --- ## ✅ 五、I²C的优点 - 简单易用,只需要两条线 - 支持多主设备和多从设备 - 可以连接多个设备,节省引脚资源 - 适用于低速、短距离通信 --- ## ❌ 六、I²C的缺点 - 速度有限(最大约3.4 Mbps) - 不适合长距离通信(通常小于几米) - 需要上拉电阻,可能影响信号完整性 --- ## 🧠 七、常见I²C设备示例 | 设备 | 地址 | 功能 | |------|------|------| | PCF8563 | 0x51 | 实时时钟芯片 | | BMP280 | 0x77 | 压力/温度传感器 | | AT24C32 | 0x50 | EEPROM 存储器 | | TSL2561 | 0x29 | 光强传感器 | --- ## 🧪 八、I²C调试工具 - I²C总线分析仪(如Logic Analyzer) - I²C扫描工具(如 `i2cdetect` 在Linux中) - 示波器查看 SDA/SCL 波形 --- 如果你有具体的使用问题(如如何用 Arduino 或 STM32 实现 I²C 通信),欢迎继续提问!
上一篇:
Bootloader原理分析
下一篇:
进程间通信pipe
标题录入,一次不能超过6条
返回顶部
留言
留言
评论