AR# 60695

Zynq-7000 SoC、I2C - I2C 重复启动时缺少仲裁

描述

I2C 反复启动时缺失仲裁

解决方案

当 I2C 控制器用作多主机总线上的主机时,不能检测到另一个 I2C 控制器重复启动时驱动SDA 为低电平的情况。 

当所有以下条件都符合时,I2C 控制器可能破坏总线上的事务处理

  • 另一个主机同时启动事务处理。
     
  • 另一个主机寻址相同的从机。
     
  • 另一个主机选择相同的事务处理(读或写)。
    写入时另一个主机驱动相同的数据。
    读取时另一个主机同时 ACK。
     
  • 另一个主机读取或写入相同数量的数据。
     
  • 事务处理结束时另一个主机发出重复启动。

 

 
影响

主要影响。
 
在上述情况下,I2C 控制器不会检测到另一个主机 I2C 的重复启动,会在其它主机 I2C 控制器事务处理期间驱动重复启动时的 SDA 为低电平,从而破坏总线上的事务处理。


不过,这种情况发生的可能性非常小。
 
解决方法::

始终清空 HOLD 位为零,禁用重复启动。
 
受影响的配置::

所有采用 I2C 控制器在多主机总线上作为主机的 Zynq 器件。  
 
受影响的器件修订版本:

全部,无计划修复。请参考(Xilinx 答复 47916) - Zynq-7000 SoC 芯片修订版差异。
 
分辨率:                

这是第三方勘误表,不会得到修复。                                                                   

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
47916 Zynq-7000 SoC 器件:芯片修订差异 N/A N/A
AR# 60695
日期 05/28/2018
状态 Active
Type 设计咨询
器件