描述
I2C在重复启动时丢失仲裁
解
当I2C控制器用作多主总线上的主控制器时,I2C控制器不检测另一个主I2C控制器何时驱动SDA为低电平以重复启动。
当满足以下所有条件时,I2C控制器可以破坏总线上的事务:
-
另一个主服务器同时启动一个事务。
-
另一个主站寻址同一个从站。
-
另一个主机选择相同的事务(读或写)。
对于写入,另一个主驱动器驱动相同的数据。
对于读取,另一个主控制器同时进行ACK。 -
另一个主机读取或写入相同数量的数据。
-
在交易结束时,另一个主人重复启动。
影响 :
重大的。
在所描述的条件下,I2C控制器不会检测到来自其他主I2C控制器的重复启动,并且可以在其他主I2C控制器事务期间将SDA驱动为低电平以重复启动,
从而破坏了公交车上的交易。
然而,这种情况的可能性极为罕见。
解决方法:
通过始终将HOLD位清零来禁用重复启动。
受影响的配置:
所有Zynq器件都使用I2C控制器作为多主总线上的主控制器。
受影响的器件版本:
全部,没有计划修复。请参阅(Xilinx答复47916) – Zynq-7000 SoC芯片版本差异
解析度:
这是第三方勘误表;这不会被修复。
没有回复内容