硬件(十二)I2C 通信协议:时序、操作
I²C 协议通过特定的电平变化定义通信的关键节点,其中 START(起始)和 STOP(停止)信号是划分通信周期的核心标识,而数据有效性则决定了信号的可采样时机。信号类型定义与实现方式作用START(起始)SCL 保持高电平时,SDA 由高电平跳变为低电平告知总线上所有设备:通信即将开始STOP(停止)SCL 保持高电平时,SDA 由低电平跳变为高电平告知总线上所有设备:通信已结束,释放总线数据有
在嵌入式系统中,微控制器与外设的通信接口选择至关重要。I²C(Inter-Integrated Circuit,集成电路总线)作为由 NXP(原 Philips)提出的串行通信协议。
一、I²C 总线核心构成:两根线的极简设计
I²C 总线的最大优势在于硬件接口的简洁性,仅通过两根信号线即可实现双向通信,他是半双工串行同步通信,极大节省了微控制器的引脚资源。
SCL(Serial Clock Line):串行时钟线
由通信中的主机(通常为微控制器)控制,提供同步时钟信号,用于协调数据传输的节奏,确保发送方与接收方的时序一致性。
SDA(Serial Data Line):串行数据线
负责双向传输数据,所有设备的 SDA 引脚均连接至此线路,数据的发送与接收均通过该线完成。
硬件关键:上拉电阻
为保证总线在空闲状态(无设备通信时)保持高电平,SDA 和 SCL 线路需各串联一枚4.7 kΩ ~ 10 kΩ的上拉电阻。当设备未驱动线路时,电阻会将信号线拉至高电平,避免信号悬空导致的误触发。
二、I²C 关键信号定义:通信的 "起止密码"
I²C 协议通过特定的电平变化定义通信的关键节点,其中 START(起始)和 STOP(停止)信号是划分通信周期的核心标识,而数据有效性则决定了信号的可采样时机。
| 信号类型 | 定义与实现方式 | 作用 |
|---|---|---|
| START(起始) | SCL 保持高电平时,SDA 由高电平跳变为低电平 | 告知总线上所有设备:通信即将开始 |
| STOP(停止) | SCL 保持高电平时,SDA 由低电平跳变为高电平 | 告知总线上所有设备:通信已结束,释放总线 |
| 数据有效性 | SCL 低电平时 SDA 可改变,高电平时 SDA 需稳定 | 接收方仅在 SCL 高电平时采样 SDA 信号,确保数据准确 |
三、I²C 核心时序解析:字节传输与读写操作
I²C 通信由主机全程控制,所有时序流程均围绕 "起始 - 数据传输 - 应答 - 停止" 的逻辑展开。不同操作场景下,时序细节存在差异,以下为核心时序的分步拆解。
1. 单字节传输时序:基础通信单元
单个字节的传输是 I²C 通信的最小单位,流程可分为 3 个关键阶段:
- 起始信号触发:主机将 SCL 置为高电平,随后将 SDA 从高拉低,产生 START 信号,启动通信。
- 8 位数据传输:数据以高位在前的顺序发送,SCL 在低电平时,发送方可修改 SDA 电平(准备数据);当 SCL 跳变为高电平时,SDA 电平保持稳定,接收方此时采样数据。
- 应答信号反馈:第 8 位数据传输完成后,进入第 9 个 SCL 周期:
- 若接收方成功接收数据,会将 SDA 拉低,产生ACK(应答) 信号,告知发送方继续传输;
- 若为读操作的最后一个字节,主机可将 SDA 置高,产生NACK(非应答) 信号,告知从设备停止数据发送。
2. 写操作时序:主机向从设备传数据
写操作是主机将数据写入从设备(如向 EEPROM 存储数据)的过程,流程清晰且线性,具体步骤如下:
- 主机发送START信号,启动通信;
- 主机发送 8 位 "设备地址 + 读写位":前 7 位为从设备的唯一地址,第 8 位为写控制位(0);
- 从设备识别地址后,返回ACK信号;
- 主机逐字节发送待写入数据,每发送 1 字节后等待从设备的ACK,确认数据接收成功;
- 所有数据发送完毕,主机发送STOP信号,释放总线,写操作结束。
3. 读操作时序:主机从从设备取数据
读操作需先明确从设备的 "数据位置"(通常为寄存器地址),因此流程为 "先写后读",包含一次 "重复起始" 信号,具体步骤如下:
- 主机发送START信号,启动通信;
- 发送 "设备地址 + 写位(0)",等待从设备返回ACK(此阶段为 "寻址 + 告知写意图");
- 主机发送目标寄存器地址(即要读取的数据所在位置),从设备返回ACK;
- 主机发送重复 START信号(不发 STOP,避免总线释放),启动读阶段;
- 发送 "设备地址 + 读位(1)",从设备返回ACK;
- 从设备逐字节向主机传输数据,每传输 1 字节后等待主机的ACK;
- 当读取到最后 1 字节时,主机发送NACK,告知从设备停止传输;
- 主机发送STOP信号,释放总线,读操作结束。
四、I²C 协议核心优势:为何成为嵌入式优选?
- 硬件极简:仅需 SDA、SCL 两根信号线,搭配上拉电阻即可实现多设备互联,大幅简化 PCB 设计。
- 扩展性强:支持 "多主多从" 架构,总线上可连接多个主机和从设备,通过唯一设备地址区分不同节点。
- 速率灵活:适配不同场景需求,提供多种传输速率:标准模式(100 kbps)、快速模式(400 kbps)、高速模式(3.4 Mbps)等。
- 可靠性高:通过 ACK/NACK 应答机制确认数据传输状态,避免数据丢失;同步时钟(SCL)确保收发双方时序匹配。
总结
I²C 协议以 "简洁而不简单" 的设计,在嵌入式短距离通信中占据重要地位。其核心在于通过两根信号线实现同步数据传输,借助 START/STOP 信号划分通信周期,通过 ACK/NACK 保障传输可靠性。掌握字节传输、读写操作的时序逻辑,理解上拉电阻的硬件作用,是灵活应用 I²C 协议进行设备开发的关键。无论是传感器数据采集还是外设配置,I²C 都能以高效、低成本的方式满足互联需求。
更多推荐



所有评论(0)