一文了解I3C 解析(三)
前面介绍了I3C的一些常识性介绍, 协议部分内容较多,按照部分内容一点一点解析。
这篇就是I3C设备SDR模式下启示位和停止位。
I3C 协议部分:
该部分内容是针对I3C模式下的所有指定通信协议:
·单一数据率(SDR)模式
·不支持I3C基本:高数据速率(HDR)模式
·HDR三元符号纯总线(HDR- TSP)模式(翻译有点怪)
·HDR三元符号传承包容总线(HDR- TSL)模式(翻译有点怪)
·HDR双数据速率(HDR- DDR)模式。
需要注意的是,I3C总线都是在SDR模式下初始化和配置,而不是在HDR模式下。
重点先看SDR模式(Single Data Rate Mode):
SDR模式是I3C总线的默认模式,主要用于从当前主设备到从设备的私有消息传递。
SDR模式也用于进入其他模式、子模式/状态、和内置特性:Common Commands(CCCs),带内中断以及I2C到I3C分配动态地址的过度。
I3C SDR模式在程序和条件上与I2C协议[NXP01]非常相似,因此I3C设备和I2C从设备(但不是I2C主设备)可以在同一I3C总线上共存。
当然,SDR模式还包括许多I2C不具备的新特性。
在I2C与I3C共享的程序和条件,SDR模式严格遵循I2C规范中的定义。
所有I3C从机都将忽略从I3C主机到I2C从机的I2C通信,目的就是:I3C协议的设计允许I2C通信。
而从I3C主设备到I3C从设备的I3C通信,大部分不会被I2C从设备识别到,因为I2C尖峰滤波器对I3C较高的时钟速度是不透明的(无效的)。
上面这个图标识了, I3C设备中不同角色。按照Only SDR or not 可以分成8种。实际上可以直接按照四种来看比较直观。如上图所示,蓝色的就是I3C主设备,蓝粉相间的I3C辅助主设备(可以在不同时间内担任不同的角色),粉色就是I3C的从设备,深蓝色就是I2C的从设备。
在每次从断电状态启动时,主控器应为总线上的每个设备(包括其自身)分配一个唯一的动态地址。动态地址创建按照带内中断的优先级排序。通过通用命令代码,使I3C总线上的任何二级主控器了解与总线上每个I3C兼容设备相关的动态地址分配和特征寄存器。
主主机负责执行动态地址分配过程,以便向连接到I3C总 线的每个设备提供唯一的动态地址。
主主机应向设备提供动态地址:
1.3C总线初始化时,
2.当设备连接到已配置的I3C总线时。
一旦一个设备接收到一个动态地址,该动态地址将被用于该设备在I3C总线上的所有后续事务,直到并且除非主机更改了设备的动态地址。
主机更改设备动态地址的唯一方法是使用RSTDA CCC命令或SETNEWDA CCC命令。
由于重设优先级,主机可能会选择更改设备的动态地址。
主主机控制动态地址分配过程。
这个过程包括一个地址与I2C类似的仲裁程序。
但I3C仲裁程序与I2C不同,它使用48位临时ID的值和设备的I3C特性寄存器(即BCR和DCR)。
I3C总线上连接值最低的设备依次赢得每轮仲裁,主主机为每个获胜设备分配一个唯一的动态地址。
I3C的主要协议和模式是SDR (Single Data Rate)模式。SDR协议基于I2C标准协议[NXP01],有几个显著的变化:
1.I3C启动和停止在信令上与I2C启动和停止相同,但在时间上可能与I2C不同。
注意,在启动和停止过程中,SDA引脚都处于open drain 模式,由tDV的缓慢上升时间表示。
由此可见,在启示信号的形式上是相同的, 但是在协议上时间上是有差异的。