Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

I³C

I³C(Improved Inter-Integrated Circuit,改进型 I²C 总线)是 MIPI 联盟推出的新一代串行总线标准,旨在兼容传统 I²C 的同时,提供更高的数据速率、更低的功耗以及更丰富的功能。I³C 被设计为一种通用的芯片间通信接口,可以在传感器、SoC、移动终端和 IoT 设备中替代 I²C 和部分 SPI 应用。它最大的特点是 完全兼容 I²C 引脚(SCL 与 SDA),同时引入更高效的总线协议和动态寻址机制。

1. 物理结构

I³C 同样只需要两条信号线:

  • SCL(时钟线)
  • SDA(数据线)

与 I²C 一样,I³C 的总线也采用开漏结构支持多主多从。但在高速模式下,SDA 可以切换为 推挽驱动,提高传输速率和功耗效率。I³C 仍保持与 I²C 器件的兼容性,因此 I²C 设备可以与 I³C 设备共存于一条总线上。

主机 ───┬── SDA ──┬── 从机1 (I³C)
       │         ├── 从机2 (I²C)
       └── SCL ──┴── 从机3 (I³C)

2. 帧格式

I³C 继承了 I²C 的起始位、停止位概念,但帧结构更灵活,支持 命令码、动态地址分配高速突发传输

┌─────┬─────────────┬──────────┬─────────┬────┐
│ 起始 │ 设备地址+R/W │ ACK/NACK │ 数据字节 │ 停止│  (I²C 兼容模式)
└─────┴─────────────┴──────────┴─────────┴────┘

┌─────┬───────────────┬─────────┬─────┐
│ 起始 │ 命令码/动态地址 │ 数据突发 │ 停止 │   (I³C 专用模式)
└─────┴───────────────┴─────────┴─────┘
  • 起始/停止位:与 I²C 相同,用于通信边界标识。
  • 命令码(CCC,Common Command Codes):I³C 定义了一组标准命令,用于设备枚举、配置、动态寻址。
  • 动态地址分配:主机可在运行时给每个设备分配地址,而不是固定硬件地址。
  • 高速突发模式:采用推挽传输,提高吞吐率。

3. 原理

I³C 的核心改进在于 带宽与灵活性

  1. 兼容 I²C:I³C 可在总线上识别并兼容 I²C 设备,以较低速率与其通信。
  2. 动态寻址:不同于 I²C 的固定地址,I³C 设备在上电时通过 “热插拔” 或 “总线管理” 获取动态地址,避免地址冲突。
  3. 高速传输:在数据阶段允许 SDA 采用推挽输出,而非开漏,大幅提升传输速率(最高可达 12.5 Mbps)。
  4. 带内中断(In-Band Interrupt, IBI):设备可以通过 SDA 线直接向主机发起中断请求,无需额外引脚。
  5. 热插拔支持:设备可在总线上动态加入/退出而无需重启系统。

4. 硬件协议

I³C 协议在物理层和链路层上做了很多优化:

  • 物理层:与 I²C 相同的引脚定义,但允许 SDA 推挽驱动。
  • 链路层:新增 CCC 命令,统一配置和管理设备。
  • 设备类型:支持 I²C legacy 设备与 I³C native 设备共存。
  • 仲裁机制:类似 I²C 的线与仲裁,保证多主环境下通信安全。

5. 参数

I³C 在速率和功能上远超 I²C,主要参数如下:

特性I²CI³C
引脚数量2(SCL, SDA)2(SCL, SDA)
速率范围100 kbps ~ 3.4 Mbps10 Mbps(典型),12.5 Mbps
地址分配固定硬件地址动态地址分配
兼容性仅 I²C兼容 I²C + 原生 I³C
中断机制无,需额外引脚支持带内中断(IBI)
热插拔不支持支持
功耗优化较高(开漏传输)低功耗(推挽驱动 + 时钟停顿)