I3C协议Single Data Rate(SDR)模式研读(二):总线通信Bus Communication-2

I3C SDR Data Words

在I3C SDR中,数据字仅在它们均为9位长的意义上才与I2C匹配。 I3C SDR数据字在三个方面与I2C不同:

  1. 从地址ACK到SDR主机写数据的切换:执行SDR写操作时,I3C中从从机设备的地址标头ACK到主机设备的第一个数据位的切换是不同的。 I2C是漏极开路,因此从ACK低到第一位的重叠是OK的。 相反,I3C是推挽式的,因此指定了该切换。
  2. SDR主设备写入数据的第9位作为奇偶校验:在I2C中,主设备写入的第9个数据位是从设备的ACK。 相反,在I3C中,主机写入的第九个数据位是前八个数据位的奇偶校验。 因此,在I3C中,从机不得驱动SDA传输主机写入SDR的数据。 在SDR而言,写数据的第九位被称为T-位(为“过渡”)
  3. SDR从设备的第9位作为数据结束返回(读取)数据:在I2C中,从设备到主机的第9个数据位是主机的ACK。 相比之下,在I3C中,该位允许从设备结束读取,并允许主机中止读取。 用SDR术语来说,读取数据的第9位称为T位(用于“转换”)。

Transition from Address ACK to SDR Master Write Data

使用SDA上的漏极开路,任何一个地址头(无论是否已仲裁)的末尾都是一个或多个已寻址从机的ACK或NACK:

•如果是7’h7E,则它是总线上所有I3C从设备的ACK。

•如果是单个从站地址,则为被寻址的从站的ACK(或NACK),如果总线上没有此类从站,则为NACK。

当地址报头导致ACK,并且消息是从主机写入SDR时,对于第一个数据位,必须将SDA线从漏极开路转换为推挽。为了安全地做到这一点,I3C SDR指定了如何进行切换。总结如下,如图32所示。

  1.在ACK期间(当SCL为低电平时),I3C从机应将SDA线保持为低电平。

 •这是漏极开路SCL低电平时段。

2. I3C从器件看到SCL的上升沿后,将SDA线释放到High-Z。

•I3C从机应使用正常(推挽)时序释放SDA线(一旦看到SCL上升,就释放SDA线)。

  3.在SCL的上升沿之后,I3C主设备应将SDA线驱动为低电平。

   •结果,主设备和从设备都将SDA线驱动为低电平,并出现短暂的重叠(这是安全的)。

•SCL高电平周期可能短于最小tDIG_H。

  4.在SCL的下降沿,I3C主站应开始使用图32所示的推挽驱动器在SDA线上驱动数据。

当地址标头产生NACK时,主机可以选择以下任一方式:

1.通过生成重复启动来继续事务

或者

2.通过产生一个STOP来释放总线,如图33所示。

Transition from Address ACK to Mandatory Byte during IBI

使用SDA上的漏极开路,在IBI请求期间任何IBI地址标头的末尾(无论地址标头是否已仲裁)都是主机的ACK或NACK。

如果主机检测到一个从机地址,并且如果主机选择接收请求,则主机将对请求进行确认。

 •ACK:当IBI从机地址报头产生ACK,并且从机设备能够发送强制字节时,则必须将SDA线从第一个数据位的漏极开路变为推挽。为了安全地做到这一点,I3C SDR指定了如何进行切换。总结如下。

  1. 1.在ACK期间(即,当SCL线为低电平时),I3C主机应将SDA线保持为低电平。 这是漏极开路SCL低电平周期。
  2. 在SCL线的上升沿之后,I3C从机应尽快将SDA线驱动为低电平。 结果,主机和从机都将SDA线驱动为低电平,这会产生短暂的重叠(这是安全的)。
  3. 在(A)从机报告的最小tSCO时间之后,或(B)可以保证所有从机接管的预定安全时间之后,I3C主机应释放SDA线。SCL高电平周期可能短于最小tDIG_H。
  4. 在SCL的下降沿,I3C从机应开始使用推挽驱动器在SDA线上驱动数据。

•NACK:当地址标题产生NACK时,主机可以选择:

•通过生成重复启动来继续事务,或者

•通过生成STOP来释放总线。

Ninth Bit of SDR Master Written Data as Parity

由I3C主机写入的每个SDR数据字的第九个数据位(也称为T位)是一个奇偶校验位,是使用奇偶校验计算得出的。 奇偶校验有助于检测线路上由噪声引起的错误。 该奇偶校验位的值应为8个数据位与1的XOR,即:XOR(Data [7:0],1)。

例子:

•如果所有八个数据位均为1(0xFF),则奇偶校验位值为1。

•如果所有八个数据位均为0(0x00),则奇偶校验位值为1。

•如果数据字中的奇数位数为1(例如0xFE或0x01),则奇偶校验位值为0。

在SCL高电平期间,T(奇偶校验)位写操作应始终保持有效。 因此,在T位表示最后一个数据字节的情况下,写操作在SCL高电平期间一直保持有效,然后可以使用下一个SCL低电平来更改SDA或不更改SDA,为接下来的重复START或STOP做准备。

Ninth Bit of SDR Slave Returned (Read) Data as End-of-Data

在I2C中,从从机读取存在一个问题,即只有主机才能结束读取,因此从机无法控制它返回的数据量。相比之下,在I3C SDR中,从机控制着它返回的数据字的数量。但它也允许I3C主机在必要时提前中止读取。

该机制仅由I3C从机返回的每个SDR数据字的第九(T)数据位控制。从机以三种方式之一返回第九位,如下所述:

1. I3C从机将第九位返回0(SDA低)以结束消息:

      •从机应在SCL的下降沿将SDA设置为低。

      •在随后的SCL上升沿,从器件应将SDA设置为High-Z。

      •I3C主机应在SCL的上升沿将SDA驱动为低电平,从而与从机重叠。

      •然后,I3C主机应发出如图39所示的STOP信号,或发出如图40所示的重复START信号(在下一个时钟或之后,按照常规I2C程序设置SDA发出重复START信号)。

2.I3C从机将第9位返回1(SDA高)以继续发送消息(并允许主机中止消息):

•从机应在SCL的下降沿将SDA设置为高。

•在SCL的下一个上升沿,从机应将SDA设置为High-Z,从而将总线停在SCL高电平期间:

•如果I3C主机能够继续从设备的回复,则它什么也不做。 SDA上的弱上拉电阻会在SCL高电平期间将SDA保持为高电平,如图41所示。

•如果I3C主设备想要中止消息,则它将在SCL的上升沿之后将SDA驱动为低电平,从而以重复的START终止消息。然后,I3C主机从SCL的下降沿开始进行控制。主机应确保SCL上升后有足够的延迟,然后再将SDA驱动为低电平以确保没有冲突。为了实现此延迟,主机可能必须延长SCL高电平周期。

由于当SCL为高电平时SDA的低电平转换是重复启动,因此主机可以开始新的地址(见图43),也可以在下一个周期发出STOP(见图42)。 但是,在混合总线中,主机应延长SCL低电平时间,以确保正确重置旧式I2C器件的峰值滤波器。

3. 从机应在SCL的下降沿监视SDA:

    •如果SDA为高,则从机应继续下一个数据值。

    •如果SDA为低(即,如果有重复的START),则消息已中止,从机在此后将不会驱动SDA。

 

猜你喜欢

转载自blog.csdn.net/yinuoheqian123/article/details/107861811
今日推荐