I^2C通信协议

I²C 通信协议 一、什么是 I²C? I²C(Inter-Integrated Circuit)是一种常见的串行通信协议,主要用于芯片之间的短距离通信。 在嵌入式系统中,I²C 经常用于连接: 温度传感器 EEPROM 存储芯片 RTC 实时时钟 GPIO 扩展芯片 其他各种外围设备 例如,在树莓派上,可以通过 I²C 连接一个温度传感器,然后读取传感器内部的温度数据。 1. I²C 使用哪几根线? I²C 主要使用两根信号线: SCL(Serial Clock):时钟线,负责同步数据传输。 SDA(Serial Data):数据线,负责传输地址、数据和应答信号。 I²C 通常使用主从通信方式。主设备发起通信,从设备根据地址决定是否响应。 如,树莓派可以作为主设备,温度传感器作为从设备。 两根线通常都需要上拉电阻,设备通过开漏或开集电极方式控制信号线。 2. 为什么需要时钟线? 如果只有数据线,接收方可能无法判断一段电平持续了多久,以及它代表多少个数据位。 例如,数据线一直保持低电平,究竟表示一个 0,还是连续的多个 0? 因此,I²C 使用 SCL 提供时钟,让接收方知道何时读取数据。 类似时钟节拍: SCL 决定读取数据的节奏。 SDA 决定每一位数据是 0 还是 1。 I²C 的普通数据位通常在 SCL 高电平期间保持稳定,并在 SCL 低电平期间改变。 二、START 和 STOP:一轮通信的开始与结束 I²C 需要明确告诉设备一轮通信什么时候开始、什么时候结束。 1. START:起始信号 当 SCL 保持高电平时,SDA 从高电平变为低电平,就表示 START。 它告诉总线上的设备:一轮新的通信开始了。 2. STOP:停止信号 当 SCL 保持高电平时,SDA 从低电平变为高电平,就表示 STOP。 ...

2026-10-25 · 3 分钟 · Yawen Yang