I2C 总线协议详解

档提供一份完整、准确的 I2C 总线协议中文说明,为开发者实现 I2C 驱动程序提供参考。

1. 总线概述

I2C (Inter-Integrated Circuit) 总线由 Philips 公司开发,是一种两线制串行通信协议,用于连接微控制器和外围设备。其特点包括:

  • 简单性: 仅需两根线 (SDA 和 SCL) 进行数据传输。
  • 灵活度: 支持多主多从架构,允许多个设备连接到同一总线。
  • 低成本: 硬件实现简单,无需额外的收发器。

2. 信号定义

  • SDA (Serial Data Line): 串行数据线,用于传输数据。
  • SCL (Serial Clock Line): 串行时钟线,由主设备控制,用于同步数据传输。

3. 数据传输

I2C 总线采用字节为单位的数据传输,每个字节后跟随一位 ACK (Acknowledge) 或 NACK (Not Acknowledge) 信号。

数据有效性: SCL 为高电平时,SDA 上的数据必须保持稳定;SCL 为低电平时,SDA 上的数据才能发生改变。

起始和停止条件:

  • 起始条件: SCL 为高电平时,SDA 由高电平变为低电平。
  • 停止条件: SCL 为高电平时,SDA 由低电平变为高电平。

4. 寻址模式

I2C 总线采用 7 位或 10 位地址寻址模式。

  • 7 位地址模式: 第一个字节的前 7 位为设备地址,最后一位为读写标志 (0 为写,1 为读)。
  • 10 位地址模式: 前两个字节用于传输 10 位设备地址。

5. 数据帧格式

每个 I2C 数据帧包含以下部分:

  • 起始条件
  • 设备地址 (7 位或 10 位)
  • 读写标志 (R/W)
  • 应答位 (ACK/NACK)
  • 数据字节 (0 个或多个)
  • 应答位 (ACK/NACK)
  • 停止条件

6. 时序图

(此处应插入 I2C 时序图,包括起始条件、停止条件、数据传输、应答位等)

7. 应用场景

I2C 总线广泛应用于各种嵌入式系统中,例如:

  • 传感器数据采集 (温度、湿度、压力等)
  • EEPROM 和 FRAM 存储芯片读写
  • 实时时钟 (RTC) 控制
  • LED 和 LCD 显示屏驱动

总结

档详细介绍了 I2C 总线协议的关键要素,包括信号定义、数据传输、寻址模式、数据帧格式、时序图和应用场景。希望这份资料能够帮助开发者更好地理解和应用 I2C 总线。

pdf 文件大小:845KB