UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 63025

面向 Zynq-7000 SoC , I2C 的设计咨询 - 从机接收器模式下的 I2C 事务处理损坏

描述

当 PS I2C 控制器为从机接收器模式而不止一个 I2C 从机连接到相同总线上时,PS I2C 控制器可接收并确认数据发送到不同的 I2C 从机,前提是传输的数据模式包含 0xF0 或 0xF1 以及跟随的 PS I2C 控制器从机地址。

就跟随的从机地址的数据字节而言,PS I2C 控制器设置 i2c.Status_reg0[RXDV] 寄存器字段为 1 并生成 ACK。

如果预期的 I2C 从机不确认数据,那么总线会损坏,因为 I2C 主机会看到错误的 ACK,而不是预期的 I2C 从机发出的 NACK。

解决方案

影响:                     
主要影响。

解决方法
     
  1. 在主机软件应用中,针对其它从机的消息拆分到多个事务处理中,这样后面跟随有 Zynq 从机地址的 0xF0 或 0xF1 模式不会出现在相同的事务处理中。

  2. 在主机软件应用中,在传输数据到其它从机前写入面向 Zynq 从机的 SYNC 模式。
    Zynq I2C 控制器在检测到 SYNC 字后将改变其模式为主接收器,并通过轮询 i2c.Status_reg0 [BA] 位持续监控总线活动状态。
    如果 I2C 主机必须传输到 Zynq 从机,那么会在一定时间内让总线闲置,而 Zynq I2C 控制器软件会保持等待直到超时,从而在改变到从机接收器模式前检查总线是否闲置。
    I2C 主机持续传输数据到 Zynq 从机。

  3. 当 I2C 主机和从机都在 Zynq 中实现且只有一个 I2C 主机连接到相同总线时,主机软件可让 Zynq 从机休眠,方法是在传输数据到另一个从机时将 Zynq 从机保持为复位状态(写入 slcr.I2C_RST_CTRL[I2Cx_CPU1X_RST]=1)。
    通过采用软件级的握手机制,Zynq 从机控制器在主机控制器传输数据到 Zynq 从机之前可以脱离复位状态。
     
  4. 用 I2C 多路复用器芯片可将 Zynq 从机与总线上的其它从机隔离。
    非 Zynq 从机可连接到单个 I2C 总线,而多路复用器可一次启用 I2C 主机和 Zynq 从机之间,或 I2C 主机和总线上其它从机之间的一个连接。
    I2C 主机软件首先选择它要发送给数据的从机,方法是写入 I2C 多路复用器芯片,随后传输实际数据。
     
  5. 在 PL 中(而不是 PS I2C 控制器)采用软 IP。
受影响的器件修订版本:

参考 (Xilinx Answer 47916) - Zynq-7000 SoC 芯片修订版差异

受影响的
配置:
所有在多个从机拓扑中采用 PS I2C 控制器的 Zynq 器件。

分辨率:
这是一个第三方错误,该问题不会修复。  
 

链接问答记录

主要问答记录

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