常见的板级间通信总线有i2c、spi、uart、i2s等,这类总线常用于ADC、DAC、传感器、触摸屏等等外设中;i2s则用于传输音频信息,在音频ADC和DAC中应用。随着物联网的应用越来越广泛,涌现各类传感器,温度、气压、心率、陀螺仪,传统传感器一般是以i2c、spi、uart为接口,随着传感器种类的激增和对性能与功耗的要求,暴露出总线的一部分缺陷,典型的问题有几点。
基于上述问题,MIPI主导并提出了i3c总线,可以解决现有问题,适用于多个传感器的场合。
i2c全称是Inter Integrated Circuit
,i3c是MIPI(Mobile Industry Processor Interface)移动产业处理器接口联盟推出的改进型i2c总线接口,全称是Improved Inter Integrated Circuit
,因此简称为i3c。i3c仍然是采用2根通信线,一根数据线SDL,一根时钟线SCL。i3c向下兼容i2c,也就是i3c总线可以挂载传统i2c接口的器件,使用很是方便。MIPI联盟的新接口标准旨在通过减少传感器系统集成的物理引脚来实现传感器通讯的标准化,提供一个快速、低成本、低功耗、两线数字接口标准。
注
i3c向下兼容i2c,但不兼容10bit的i2c扩展地址
i3c除了向下兼容i2c的特点外,最重要是引入了自身特有的功能,以适应物联网应用的需求发展。
i3c标准的目标电平电压是3.3V、1.8V、1.2V,甚至更低。
传统i2c、spi接口需增加中断线通知主控制器,i3c支持软中断,无需外部中断线,传感器数目多的情况下,节约IO引脚和中断资源。i3c软中断的基本原理是,当总线处于空闲状态时,从设备可以通过中断机制发送一个"START"
信号,然后主设备会为从设备提供一个时钟信号,从设备可以通过主设备提供的分配地址将设备驱动到总线上来启动中断。如果此时有多个从设备尝试启动中断,则地址最小的从设备获得此次仲裁。同时主设备发出ACK信号响应此次中断并重新启动总线或者继续从从设备接收数据,也可以发出NACK信号来结束通信。
i3c不仅支持多个从设备,还支持多个主设备。i3c总线上可以支持的设备有:
热插拔特性可以让i3c从设备在不工作时处理睡眠或者关闭状态,需使用时才挂载到总线上使用,进一步达到降低功耗的目的。
i3c支持动态地址,同时可以分配7bit静态地址以适配传统i2c 从设备。i3c从设备地址由主设备仲裁,但并不是所有设备地址都可用,部分地址是i3c标准所保留的,用于后期拓展或者错误仲裁。
i3c支持从12.5 Mbps到接近37.5 Mbps的通信速率。
i3c支持4种通信模式,分别是SDR、HDR-DDR、HDR-TSL、HDR-TSP,不同模式通信速率有差异。
上述i3c特点,传统i2c、spi、uart所不具备的,因此弥补了前面提及的弊端。
起始时序与i2c一致,当SCL线为高电平是,SDA线由高电平到低电平变化。
停止时序与i2c一致,当SCL线为高电平是,SDA线由低电平到高电平变化。
i3c传输1位数据时需要一个时钟脉冲,配合主设备的时钟信号完成数据逐位传输。在进行数据传输时,SCL线为高电平时SDA线电平保持稳定,低电平表示数据0,高电平表示数据1;在SCL线为低电平时允许SDA线电平变化。
i3c相比i2c要复杂得很多很多,前面只是提及其主要特点,关于其实现原理、支持模式、纠错原理过程等,进一步深入研究,可以参考官方协议文档。
通过对比分析,i3c继承了i2c、spi、uart的优点,并增加了新的特性,实现了一个快速、低成本、低功耗、挂载节点数目多的总线标准。i3c将会像type-c统一外部接口(充电、数据传输)一样,统一板间通信,解决接口碎片化问题。但目前只是初步阶段,支持i3c接口的cpu和外设比较少,传统i2c、spi、uart依然是主流。
可以通过一个表格,对比几种总线的特性。
通信接口 | uart | i2c | spi | i3c |
---|---|---|---|---|
线数 | 2 | 2 | 4 | 2 |
最大通信速率 | 典型115200bps | 3Mbps | 60Mbps | 37.5Mbps |
主设备 | 单一 | 单一 | 单一 | 支持多个 |
从设备 | 点对点 | 多个 | 多个 | 多个 |
软中断 | 不支持 | 不支持 | 不支持 | 支持 |
热插拔 | 不支持 | 不支持 | 不支持 | 支持 |
从设备地址 | 不支持 | 静态地址 | 不支持 | 静态和动态地址 |
【1】I3C 总线协议详细解析(第一章)
【2】mipi i3c官网