i2c 时序解析
I2C(Inter-Integrated Circuit)是一种广泛使用的串行通信协议,通常用于连接微控制器与各种外设。I2C通信时序主要包括以下几个方面:
1. I2C信号线
SCL(时钟线):控制数据传输的时钟信号。
SDA(数据线):传输实际的数据。
VCC:电源。
GND:地线。
2. I2C通信时序
I2C协议基于主设备和从设备之间的同步时序。常见的时序步骤如下:
启动条件(Start Condition)
SDA 在 SCL 为高时从高电平变为低电平。
启动信号表明通信开始。
停止条件(Stop Condition)
SDA 在 SCL 为高时从低电平变为高电平。
停止信号表示通信结束。
数据传输
SDA 在线上数据传输时会随时变化,而 SCL 提供时钟同步。
每次传输 8 位数据(1 字节),然后主设备会发出一个应答位(ACK),如果从设备成功接收数据,会拉低 SDA 线以响应ACK。
数据时序
数据传输是通过 SDA 线的电平变化来实现的。
每个字节由 8 位数据组成,并且每 8 位数据后面会有一个 ACK 位(低电平表示应答,未应答则为高电平)。
SCL 线的上升沿或下降沿触发数据读取。
I2C时钟速率
标准模式:100 kbps。
快速模式:400 kbps。
高速模式:3.4 Mbps。
示例时序图
SCL: __--__--__--__--__--__--__--__
SDA: __|__|__|__|__|__|__|__|__|_____Start Data ACK Data ACK Stop
3. I2C通信步骤
启动信号(Start):主设备发出开始信号。
发送设备地址:主设备将目标设备的地址发送到 SDA 线上,地址格式为 7 位或 10 位,最后一个位是读/写控制位。
数据传输:主设备与从设备进行数据交换。
ACK响应:每次数据传输后,从设备返回ACK信号。
停止信号(Stop):主设备发出停止信号,通信结束。
4. I2C时序分析
I2C通信的关键在于时钟同步,通过SCL线上的时钟信号确保数据在SDA线上正确的时序传输。对于每个字节的传输,从设备会在接收到每个字节后发送ACK响应,表示数据接收成功。