关键功能
对于 I3C 接口来说,两个主要问题是最重要的:
- 在传输数据和控制时使用尽可能少的能量
- 减少接口使用的物理引脚的数量。
因此,I3C接口具有:
- 使用推拉式高达12.5MHz的双线串行接口
- 旧版 I2C 设备在同一总线上共存(
有一些限制
) - 动态寻址,同时支持传统 I2C 设备的静态寻址
- 传统I2C消息传递
- 类似于I2C的单数据速率消息传递(SDR)
- 可选的高数据速率消息传递模式(HDR)(
I3C基本版中不支持
) - 多点能力
- 多主功能
- 支持带内中断
- 支持热连接
- 同步定时支持和异步时间戳(
I3C基本版中不支持
)
I3C 接口提供了总线电源的主要效率,同时提供超过I2C 10倍的速度改进。
技术概况
下面主要介绍 I3C 总线接口以及 I3C主设备和从设备。
I3C 是一种两线双向串行总线,针对多个传感器从设备进行了优化,一次只有一个 I3C 主设备。I3C 向后兼容许多传统I2C 设备,并且I3C 有着显著的速度和新的通信模式,包括随时间更改设备角色的能力(即初始主控器可以将主控器角色传递给总线上的另一个 I3C 设备,如果第二个 I3C 设备支持该功能)。
I3C基础包括:
- 支持许多传统 I2C 从设备和消息
- I3C 单数据速率 (SDR) 模式:新的 I3C 增强版 I2C支持协议private messages,并增加了两种标准的内置消息:
- 广播消息,它们被发送到总线上的所有I3C 从设备
- 直接消息,它们被发送给特定的从设备
基本原理
I3C 支持多种通信格式,全部共享一个两线接口。两条线分别指定为 SDA 和 SCL:
- SDA(串行数据)是双向数据引脚
- SCL(串行时钟)是时钟引脚
I3C总线支持各种消息类型的混合:
- 类似I2C 的 SDR 消息,SCL时钟速度可达12.5MHz
- 广播消息和直接消息的通用命令编码 (CCC) 消息,允许主设备分别与 I3C 总线上的所有或一个从设备通信。
- HDR模式消息,它在每个等效时钟周期中实现更高的数据速率(I3C基本版中不支持)
- I2C消息传递给传统的I2C从设备。
- 从设备向主设备发起的 START 请求,例如发送带内中断或请求主设备。
下图说明了如何启动I3C通信:
- 所有的I3C通信都发生在一帧内。帧以一个START开始,接着是一个或更多的传输和STOP。
- 对于 I3C Basic 不支持但 I3C Basic设备可以容忍的 HDR 模式:
- 首先,专用广播 I3C 地址 (7’h7E) 被分配给 I3C 总线上的所有从设备。
- 然后发出其中一个EnterHDR CCCs,表明主设备正在进入 HDR 模式。每个 HDR 模式都有自己的 EnterHDR CCC。
- 接下来是一个或多个HDR传输。
- HDR模式通过使用HDR退出模式协议来结束。
I3C基本框架总是至少包括开始STAR、头Header、数据Data,和停止STOP。
在START之后的报头允许总线仲裁。主设备使用报头来定位从设备。从设备可以将报头仲裁用于多种目的:
- 用于带内中断
- 用于热连接
- 用于Secondary Master辅助主设备功能
I3C在同一时间只允许一个Master控制I3C总线。提供了将主设备从一个设备切换到另一个设备的机制。
通信流程
主设备和从设备
主设备
I3C总线要求在同一时间恰好有一个I3C设备作为I3C主设备。用I3C术语来说,这个I3C主设备就是当前主设备。在典型的应用程序中,当前主设备是总线上的I3C设备,它发送大部分的I3C命令(CCC),地址可以是所有从设备(广播CCC),也可以是特定的单个从设备(定向CCC)。当前主设备也是I3C总线上唯一允许发送I2C消息的设备。
除了发送I3C命令和I2C消息外,I3C主设备还包括:
- 产生总线时钟
- 管理上拉结构
- 管理动态地址分配过程(包括热连接事件),同时作为主设备
- 管理来自总线上I3C从设备的启动请求以及地址仲裁请求:
- 产生带内中断
- 热连接事件
- 成为当前主设备
- 支持 I2C 传统从设备
- 支持 I3C SDR 模式
下图是一个典型的通用I3C主设备:
所有的I3C主设备都支持两个主设备角色中的一个,也可以支持两个从主设备角色中的一个。
Main Master Device Roles(Main Master和SDR-Only Main Master)
Secondary Master Device Roles(I3C Secondary Master和SDR-Only Secondary Master)
从设备
一个I3C总线支持多达11个I3C从设备,最大的设备数量取决于跟踪长度,每个设备的电容负载,以及总线上的设备类型(I2C和I3C),这些因素会影响时钟频率。
I3C从设备通过I3C总线接收当前主设备发送的相关I3C命令(ccc),并进行相应的响应。
这包括所有广播命令(CCC)和任何定向命令(CCC),专门针对该I3C从设备,并由该I3C从设备支持。
除了响应I3C命令外,I3C从设备也支持I3C SDR模式。
此外,I3C从属设备还可以选择:
- 请求带内中断
- 产生热连接事件
- 如果I3C从属设备也具有I3C主设备功能,则请求成为当前主设备
下图是一个典型的通用I3C从设备:
所有I3C从设备都支持I3C从设备角色: I3C Slave SDR-Only I3C Slave
特性解释
带内中断
2 线 I3C 接口使用推挽时钟线 (SCL) 和开漏数据线 (SDA)。 SDA 允许从设备控制数据线并启动中断。(SPI和I2C只能通过使用第三条专用线提供从设备中断。) I3C 从设备可以在总线空闲时请求中断。 I3C 通过允许最低分配地址获胜来仲裁来自多个从设备的冲突。
热连接
I3C 总线协议支持目标在总线已配置后加入 I3C 总线的机制。这种机制称为热连接。I3C 规范定义了目标可以执行此操作的条件,例如,目标必须等待总线空闲条件。
从而使传感器能够在需要之前关闭。
增加的吞吐量
主时钟使用 SCL 将通信总线计时到 12.5 MHz。I3C 支持多种类型的设备:I3C 主主机、I3C 辅助主机、I3C 从机和 I2C 从机。
I3C 有一个标准化的程序,主机可以动态地为所有 I3C 设备分配 7 位地址,并支持同一总线上 I2C 设备的静态设备地址。
I3C 提供四种数据传输模式,可有效提供 11.1、20、23.5 和 33.3 Mbps 的数据比特率,包括 I3C 比特率错误检测。
动态寻址
I2C 使用静态寻址。这里的问题之一是,对于使用 I2C 总线的产品,供应商可能使用与另一供应商相同的地址,从而导致集成过程中出现问题。
I3C 通过为 I3C 总线上的设备提供寻址解决了这个问题。