嵌入式系统中的I2C总线时序

嵌入式系统 时间:2026-04-30来源:

I2C 总线在嵌入式系统中非常常见,本文详细讲解 I2C 总线的时序规则。

许多电子工程师第一次接触 I2C 总线,都是通过 EEPROM 或 ROM 通信。实际上,I2C 的应用远不止存储芯片,其使用场景与 RS‑485、SPI 等总线类似。

wKgaomXX-WmAHq5CAAGINCnUWgg407.jpg

EEPROM内存系统架构图

1. 位传输

I2C 是由飞利浦公司开发的双向两线同步串行总线,只需要 SCL(时钟线)SDA(数据线) 两根线,就能实现总线上多个芯片之间的控制与数据传输。

wKgZomXX-WmALo44AAB81B1QOmo106.jpg

I2C 总线位传输

I2C 总线上的数据是逐位传输的:

关键时序条件

2. 数据传输

字节传输

主机发送数据时,先发出起始信号,然后将 SDA 设为输出模式,先发送最高位(MSB),依次发送 8 位数据。

发送完 8 位后,主机会将 SDA 切换为输入模式,等待从机回复 ACK(应答)NAK(非应答),之后再发送下一个字节。

从机地址

I2C 总线上的每个设备都有固定地址,通常由芯片上的 A0、A1、A2 引脚配置。

地址字节包含:

设备地址的高 4 位(D7~D4)通常由厂商固定为 1111,低 3 位(D3~D1)由 A2、A1、A0 引脚设置。

这就是常见地址如 0xA0、0xA1 的由来。

wKgZomXX-WqAMFnaAAAXBGZc_XA953.jpg

EEPROM设备地址

3. 读 / 写流程

① 写操作流程

  1. 主机发送停止信号,避免总线忙碌导致写入失败。

  2. 主机发送总线复位信号,确保总线空闲。

  3. 主机发送起始信号,启动写操作。

  4. 主机发送从机地址 + 写位(W/R=0),等待从机 ACK。

  5. 收到 ACK 后,主机连续写入多个字节,每写完 1 字节等待从机 ACK。

  6. 收到最后一次 ACK 后,主机发送停止信号,释放总线。

② 读操作流程

  1. 主机发送停止信号,避免总线忙碌导致读取失败。

  2. 主机发送总线复位信号,确保总线空闲。

  3. 主机发送起始信号,启动读操作。

  4. 主机发送从机地址 + 读位(W/R=1),等待从机 ACK。

  5. 收到 ACK 后,主机连续读取多个字节,每读完 1 字节向从机回复 ACK。

  6. 读完最后 1 字节并回复 ACK 后,主机发送停止信号,释放总线。

I2C 在嵌入式领域应用广泛,在各类电源、工控、消费电子设备中都十分常见。


关键词: 嵌入式系统 I2C 总线 时序

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版