I3C :Improved Inter Integrated Circuit ,是 MIPI(Mobile Industry Processor Interface)移动工业处理器接口联盟推出的改进型 i2c 总线接口。
传感器在手机等移动产品中的快速发展带来了新的设计挑战。由于没有统一的连接物理传感器的方法,设计师面临的数字接口碎片包括 I2C、SPI 和 UART 等。
除主接口外,还可能需要其他信号,如特殊中断和芯片选择信号(SPI),启用和睡眠信号。这将增加所需的主机 GPIO 数量和更多 PCB 层的系统成本。
随着时间的推移和传感器数量的增加,这种情况变得越来越难以控制。
MIPI I3C 该产品通过为传感器提供快速、低成本、低功耗的二线数字接口,简化了移动无线传感器系统的设计架构。
框架如下:
Example classes of sensor addressed by I3C are listed in Table 1.
翻译一下:
是否需要额外的中断线
I2C 和 I3C 主要区别如下:
- I2C 虽然也是两条线,但传感器往往需要一条额外的中断线来告诉主控数据已经准备好了。I3C 允许设备直接在总线上中断,不再需要额外的中断线。
- I2C 传输速度最高 3.4MHz,I3C 可以 12.5MHz。
- I3C 向下兼容 I2C,但不兼容 10bit 的 I2C 扩展地址。
- I2C 的从设备是静态地址,I3C 动态地址由主设备分配。
- 由于支持带内中断,涉及到设备的优先级。一般来说,如果动态设备数量较低且优先级较高,则优先响应为中断。(这也是线和线的特性)
- I3C 支持使用 推挽输出 的GPIO,增强驱动能力只需要特殊设置。
如果所有 sensor 器件都采用 I3C 如下图所示:
I3C 关键特性
Mbps 而数据流量单位 MHz 是频率单位。
Mbps 是 Million bits per second 的缩写,1 Mbps代表每秒传输 1048576 位(1Mb=1024Kb=1024*1024bit),也就是说,每秒048、576 / 8 = 131,072 字节 = 128 KB = 0.125MB。
-
使用推拉功能的双线串行接口最高可达 12.5 MHz
-
同一总线共存的传统传统 I2C 设备(有一些限制)
-
同时支持传统的动态搜索I2C静态寻址设备
-
传统I2C通讯
-
类似I2C单数据速率信息传输(SDR)
-
I3C BASIC 不支持:可选高数据速率消息模式(HDR)
-
多点功能
-
多主功能
-
带内中断支持
-
热连接支持
-
I3C BASIC 不支持:同步计时支持和异步计时冲压
-
secondary master support
-
不支持 I2C master
-
不支持从机 clock stretching
-
每个 I2C 需要有从机设备 50ns spile filter on SCL
-
还不多 I3C 市场上出现了设备
I3C
I3C 支持许多传统 I2C 从设备,I3C 有两种模式:SDR Mode、HDR Modes
I3C Single Data Rate (SDR) Mode
- 数据只在时钟的边缘传输。
- Private/Typical messages: 使用动态地址将消息发送到从机
- 广播信息:所有从机发送到总线(如:ENTDAA)
- 直接消息:向特定从属设备发送消息(如:SETDASA)
I3C High Data Rate (HDR) Modes
- 双数据速率(HDR-DDR)模型:使用与使用SDR相同模式的信令(即12)C协议没有明显区别),但运行速度约为SDR速度的2倍
- 通过在两个时钟边缘传输数据实现更高的速度
- Ternary Symbol Legacy (HDR-TSL) Mode: 混合更高的数据速率和三元编码I2C和I3C设备总线I2C协议明显不同
- Ternary Symbol Pure-bus (HDR-TSP) Mode: 更高的数据速率和三值编码适用于只有I3C设备总线C协议显着不同
- 三元符号有三种状态,SCL线改变状态,SDA线改变状态,或两条线改变状态
SDR Mode
- SDR 模式是 I3C 默认模式的总线
- 用于传递从当前主设备到设备的特殊信息。
- 用于进入其他模式、子模式和状态
- 用于内置功能,如通用命令(CCC)、通过分配动态地址,区域中断和从I2C过渡到I3C。
- 在程序和条件上I2C协议【NXP01】非常相似,所以I3C设备和许多传统I2C从设备(但不是I2C主设备)可以相同I3C总线共存。
- 对于I3C与I2C共享程序和条件,SDR严格遵循模式I2C规范中的定义。
- 所有I3C正确忽略从机I3C主机到I2C从机的I2C通信,因为I3C协议旨在允许I2C通信。
- 大多数传统I2C从设备上看不到I3C主设备到I3C从设备的I3C因为通信量I2C尖峰滤波器对I3C时钟速度不透明。
I3C Master Device
I3C Slave Device
本文讲解 I3C 从规范中可以看出协议规范的详细内容,I3C 比 I2C 硬件带来的复杂性要复杂得多。
对于 Linux 常用版本,kernel-4.14 和 kernel-4.19 并没有提供 I3C 驱动,kernel-5.10 有提供 I3C 驱动(从 kernel-5.0开始提供)
以下可在线查看,目录/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 接口器件一起使用。