马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
在I3C SDR模式,数据字仅仅在长度上是相似的,都是9bit。I3C SDR 数据字与I2C在三方面有很大的差异。 1.
从ACK到SDR Master 写数据的握手有差异:当执行SDR写时,从Slave地址头ACK到Master数据的首bit二者有差异。I2C使用的Open-Drain模式,所以重叠的ACK低电平和数据首bit并无太大问题。相反I3C是使用Push-Pull来传输数据,所有这一段握手协议有严格规定。 2.
SDR Master写 的第9bit作为校验位:I2C中数据字的第9bit是Slave对Master的应答。相反,I3CMaster写的第9bit是前8bit数据的校验位。因此,I3CSDR的Master写的时候,Slave不应在第9bit驱动SDA线。SDR术语中,写入数据的第9bit称作T-Bit。 地址头的ACK到SDR Master的写数据 地址头的最后是一个或多个设备的Open-Drain ACK/NACK: l
如果地址是7’h7E,那么ACK是BUS上所有I3C Slave l
如果地址是特定Slave的,那么ACK是对应设备发来的 当地址头得到ACK,且消息是SDR Master写过来的,SDA线必须在传输第一个bit时从Open-Drain切换到Push-Pull模式。为了安全得转换,I3C SDR对此进行明确说明: 1.
I3C Slave 先保持SDA Low一段时间。 2.
在I3C Slave收到SCL上升沿时候,将SDA线置为High-Z。 3.
SCL上升沿后,I3C Master将SDA线驱动为Low。结果是,Master和Slave双方共同将SDA线拉低一段时间。SCL高电平时期可以取的很短。 4.
在SCL下降沿,I3C Master开始将数据用Push-Pull驱动到SDA线上。 当地址头的收到NACK时候,Master可以: 1.
通过产生一个Repeated START继续传输 2.
产生一个STOP以重新引导总线 SDR Master数据字的第9bit校验 I3C Master数据字的第9bit 是数据的校验位,采用的计算方法为奇校验。校验位可以用于监测线上噪声带来的干扰。校验位的值为1同前8bit的XOR结果。 校验位应在SCL的高电平期保持有效。由于T-Bit是数据字的最后一位,因此写的时候应在SCL高电平时期保持有效,当下一个SCL下降沿到来时根须需要再改变SDA的值,为产生Repeated START或STOP准备。 SDR Slave返回数据的第9位作为End-of-Data I2C协议从Slave数倍读取数据时候有一个问题,只有Master才能终止数据的读取,Slave没有控制数据数量的权利。相反的,I3C SDR模式提供了Slave控制传输数据数量的能力;也同样允许I3C Master在必要的时候终止数据读出过程。 这一机制完全依赖于I3C Slave发来的SDR数据字的第9位。Slave以下述三种方式之一返回第9bit: 1.
I3C Slave返回第9bit 0 a.
Slave应该在SCL下降沿时候将SDA设置为0 b.
在接下来的SCL上升沿Slave应将SDA设置为High-Z c.
I3C Master应在SCL的上升沿驱动SDA为低电平,这样形成一段重叠 d.
接下来I3C Master应发送STOP或是RepeatedSTART 2.
I3C返回第9bit 1,意味着继续传输 a.
Slave应当在SCL的下降沿将SCL设置为高电平 b.
在接下来的SCL下降沿,Slave应当将SDA设置为High-Z,这样Bus便停在了SCL高电平状态 l
如果Master可以继续响应Slave,则不需要做任何事情,弱上拉电阻可以保持SDA在SCL高电平期保持高电平 l
如果I3C Master希望终止传输,则应当在SCL上升沿后将SDA拉低,这样就通过在总线上产生了一个Repeated START将消息传输终止了。I3C Master也在接下来的SCL下降沿接管了总线。Master应该SCL上升沿过后有足够的延时再拉低SDA以免竞争出现。为了达到这一延时,Master可能延长SCL高电平期。因为这是一个RepeatedSTART,Master可能发送一个新的地址或是在下个周期发送STOP。但是在混合总线上,Master应该延长SCL低电平期,以保证任何I2C设备的低通滤波器能够被充分得泄放 3.
Slave应该在SCL的下降沿监测SDA的电平 l
如果SDA为高电平,则传输继续 l
如果SDA为低电平,则传输终止 |