1、I2C的不足之处
- 从设备无法主动向主设备发起通讯
- 降低吞吐量和上拉电阻限制了时钟速率且使得功耗偏高
2、SPI的不足之处
- 需要四根通讯线路来进行较大的数据通讯
- 没有一个明确的定义标准
3、I3C特性
- 明确的定义标准
- 两条通讯线路(DCL和SDA)
- 带内中断
- 带内命令代码
- 动态寻址
- 多主/多点通讯特性
- 支持热链接(是否是热拔插)
- 错误检查
- 向后兼容I2C
I3C最初的设计目的是为移动设备创建一个能够使用多个传感器的单一接口。随着现代化移动设备对于传感器数量的增加以及对性能的提高,I2C和SPI已经达到了他们所能支持的临界点,而I3C的出现就是为了解决这一问题,I3C可以在同一根主线上支持更多的传感器设备,而且不会因为要支持中断或睡眠模式而增加额外的逻辑信号。I3C可以在更低功耗的情况下提供更快的传输速率,该特性的提升不止是对移动设备,对其他的嵌入式设备也都是很大的帮助。例如穿戴设备,需要在有限的物理空间中使用多个传感器并且要求更小的耗电。随着时间的推移,I3C有个能在触摸、低分辨率camera、音效、环境传感器和变频器(transducers)等领取取代当前的I2C,SPI,UART等。
4、I3C的基本原理
I3C接口使用的跟I2C类似,也是一根漏级数据线(SDA)和一根推挽式时钟线(SCL),(对于open drain和push-pull的解释请参考 https://blog.csdn.net/tidavery/article/details/16787641 I2C两根都是open-drain)。该SDA线上的从设备可以控制数据总线,并且可以启动中断。主控通过该SCL线可以将总线的时钟频率调节到12.5MHZ。I3C支持多种类型设备,包括Main Master(当前主设备),secondary master(辅助主设备)、I3C Slave、I2C Slave。主设备可以动态为I3C分配7-bit地址同时也支持为传统I2C设备静态的分配地址。这样就使得I3C兼容I2C。而且相比I2C功耗降低了一个等级,但是传输速率提升了一个数量级。I3C提供了四种数据传输模式,在时钟速率达到12.5MHz时,默认的SDR模式下数据传输速率可以达到12.5Mbps,在HDR模式下可以达到25/27.5/39.5Mbps。除去控制字节,在美中模式下的数据比特率分别为11.1/20/23.5/33.3Mbps,而且在各种数据传输的过程中都会有I3C纠错机制进行保护。下图是I3C在不同模式下与I2C每传输一个bit数据消耗的能量对比(左图)以及比特率的对比(右图)。从结果来看,I3C在各方面都更具优势。I3C的HDR_TSP模式是数据速率最快功耗最低的一种模式,能够支持超过33Mbps的有效数据比特率。
I3C允许从设备启动带内中断,这对于I2C和SPI设备来说都需要一根额外的信号线才能实现。当总线处于空闲状态时,从设备可以通过中断机制发送一个"START"信号,然后主设备会为从设备提供一个时钟信号,从设备可以通过主设备提供的分配地址将设备驱动到总线上来启动中断。如果此时有多个从设备尝试启动中断,则地址最小的从设备获得此次仲裁。同时主设备发出ACK信号响应此次中断并重新启动总线或者继续从从设备接收数据,也可以发出NACK信号来结束通信。例如,光传感器通常用于控制设备中显示器背光亮度,如果光条件改变,传感器向系统发出中断,请求发送数据到系统,当光条件稳定时,传感器不需要发送中断和数据,系统也不必查阅传感器数据,从而节约了功耗和实效。
I3C允许从设备在总线配置完成之后再连接到总线上,即热接入特性。连接在同一总线上的传感器可以暂时关闭,直到需要唤醒的时候才激活唤醒。热连接应遵守特定的电气限制,不得干扰MIPI I3C线路。已为启用和禁用事件、管理MIPI I3C特定功能(动态寻址、定时控制等)等标准操作定义了一组通用命令代码(CCCs)。该通用命令代码可以发送广播(发送给所有设备)或者可以指向总线上的特定设备。在使用传感器时功耗和性能是我们必须考虑的,因为即使主程序处理器处于空闲状态(低功耗模式或者深度睡眠),Always-on sensors 和 sensor hubs也会不断的累积数据,累积的传感器数据通常是有规律的,需要在sensor、sensor hub和application processor之间定期快速传输,从而最大限度地降低功耗。
5、I3C传感器接口标准化
I3C的主要目的就是统一行业内的标准,而且该标准是以最低的成本(电路空间小),最快的速度,最低的功耗。mipi i3c标准为现有传感器系统提供了便捷,同时也为未来的移动和其他系统架构提供了预期特性。
6、MIPI I3C协议与系统集成
I3C提供过个通讯协议,包括I2C兼容的运行速率为12.5MHZ的SDR模式,I2C不兼容的HDR(High Data Rate)模式。高速I3C模式支持的速度超过基于SDR模式的12.5Mbps的速度。有两种主要的HDR模式——HDR-DDR(double data rate)和HDR-TSL/TSP(ternary symbol)。该模式下可以提供33Mbps的传输速率,从设备端实现也简单,且能够与传统的I2C设备兼容。也就是说,HDR_DDR可以用于与I3C从设备的通讯,同时如果与I2C设备位于同一总线上,当与I2C从设备通讯时将会使用传统的I2C接口。
I3C总线支持的数据率取决于总线模式或总线上的设备类型,以及其性能。仅连接有I3C设备的总线称为纯I3C总线。纯I3C总线支持从8.8 Mbps到26.7 Mbps的速率。典型情况下,纯I3C总线中的SCL时钟频率为12.5 MHz。对于同时连接了I2C和I3C设备的总线,I3C主设备能够在快速模式下(FM)和快速模式+(FM+)速率下与I2C从设备进行通信,速率分别为400 Kbps或1 Mbps。在这类混合模式总线中,I3C主设备仍能在相同总线上以高至20.5 Mbps的较高速率与I3C从设备进行通信。换句话讲,当将I2C设备与I3C总线相连时,总线的最高工作速率会降至20.5 Mbps,而不是26.7 Mbps。
正如所见到的那样,纯I3C总线支持具有较高性能的HDR和双数据速率模式,与已有选项相比,能显著改善性能和能耗效率。I3C还支持多个主设备,动态寻址,命令码兼容,以及高级功耗管理的统一方法,如睡眠模式等。下表给出了I3C系统支持的数据速率。
7、MIPI I3C for smartphones
原本的I2C和SPI存在的缺陷是无法主动的与主设备进行通讯,如果sensor需要反馈数据,都需要额外添加一个中断管脚,随着手机上sensor数量的增加,GPIO可能不够用了。此时I3C可以解决这个问题,I3C通过带内中断,使从设备可以主动发起中断进行通讯。大大减小了对GPIO中断的依赖。