7、I3C Protocol
本文讲解 I3C 协议规范的详细内容,从规范中可以看出,I3C 比 I2C 复杂很多,硬件简单带来的是软件的复杂。
对于 Linux 常用版本,kernel-4.14 和 kernel-4.19 并没有提供 I3C 驱动,kernel-5.10 有提供 I3C 驱动(从 kernel-5.0开始提供的)
如下可以在线查看 Linux 源码,目录/drivers/i3c/...
https://elixir.bootlin.com/linux/latest/source
Bus configuration
I3C 不仅支持多个从设备,还支持多个主设备。I3C 总线上可以支持的设备有:
- Main Master(当前主设备)
- Secondary master(辅助主设备)
- i3c Slave(i3c从设备)
- i2c Slave(i2c从设备)
I3C 特性寄存器描述并定义了 I3C 兼容设备在 I3C 总线上的 capabilities 和 functions,没有 I3C 特性寄存器的设备不得连接到公共I3C总线。
有三种特征寄存器类型:
- Bus Characteristics Register (BCR)
- Device Characteristics Register (DCR)
- Legacy Virtual Register (LVR)
Bus Communicaton
SDR 协议基于 I2C 标准协议,有几个显著的变化:
SDR Message
- 地址头中的地址是7'h7E(I3C广播地址)。所有 I3C 从设备应与地址值 7'h7E 匹配。
- 地址头中的地址与从机的动态地址匹配。所有 I3C 从机应匹配其自己的动态地址。
Role of I3C Slave
- 在分配动态地址之前,I3C从设备应作为I2C设备运行
- I3C START 和 STOP 在信号方面与 I2C START 和 STOP 相同,但在时序上可能不同。
I3C Address Header
- 支持带内中断
- 支持辅助主设备
- 支持热拔插 (热插拔特性可以让i3c从设备在不工作时处理睡眠或者关闭状态,需使用时才挂载到总线上使用,进一步达到降低功耗的目的)
I3C Address Arbitration
- 主设备和一个或多个从设备
- following a START (but not a Repeated START)
- Open Drain(whether Master or Slave)
- lower Addresses having higher Priority
Hot-Join Mechanism
- After a START, 7’b0000_010 + RnW(1’b0)
- 允许从设备在I3C总线配置完成后加入
- 热拔插设备可以是任何有效的从设备类型,包括辅助主设备
In-Band Interrupt
- After a START (but not a Repeated START) + Dynamic Address + RnW(1’b1)
- I3C 主设备提供 ack bits
Secondary Master Functions
- After a START (but not a Repeated START)+Dynamic Address +RnW(1’b0)
- 辅助主机保持控制总线,直到另一个主机被授予总线控制。
- defer some actions to a more capable Master(GETACCMST)
I3C Bus conditions
I3C总线应被视为不活动的三种不同情况:
- Bus Free Condition
- Bus Available Condition(tAVAL)
- Bus Idle Condition(tIDLE)
I3C 为主设备提供了一种机制,用于通知从属设备I3C总线上预期即将到来的活动级别:
总线初始化和动态地址分配模式
头地址是 7h7E(I3C 广播地址),所有的 I3C 从机将匹配 7h7E,任何的 I2C 从机设备将不会匹配此地址,因为这个地址在 I2C 中是保留的并且未使用。
Common Command Codes (CCC)
通用命令代码(CCC)是全球支持的命令,可以直接传输到特定的I3C从设备,也可以同时传输到所有I3C从设备。
CCC 命令分为四类:
- Broadcast Write
- Direct Read/Write
- Direct Write
- Direct Read
支持动态地址
i3c支持动态地址,同时可以分配 7bit 静态地址以适配传统 i2c 从设备。i3c从设备地址由主设备仲裁,但并不是所有设备地址都可用,部分地址是 i3c 标准所保留的,用于后期拓展或者错误仲裁。
支持多种通信模式
i3c支持4种通信模式,分别是 SDR、HDR-DDR、HDR-TSL、HDR-TSP,不同模式通信速率有差异。
SDR 很多 I3C 主控和设备支持,HDR 很多设备不支持,所以最常用的是 12.5MHz。
- SDR 模式:12.5Mbit/s
- HDR-DDR模式:25Mbit/s
- HDR-TSL模式:30 Mbit/s
- HDR-TSP模式:37.5 Mbit/s
I3C 应用场景
- 多传感器领域,节约总线 IO。
- 物联网领域,功耗低。
- 传统 i2c、spi、uart 设备接口中。
- camera、touch panel。
- i3c 向下兼容 i2c,可与传统 i2c 接口器件一起使用。