This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] FPC402EVM:FPC402不确认下游 I2C 访问

Guru**** 1101410 points
Other Parts Discussed in Thread: FPC402EVM, FPC402, FPC401
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/698366/fpc402evm-downstream-i2c-access-is-not-acknowledged-by-fpc402

器件型号:FPC402EVM
主题中讨论的其他器件: FPC402FPC401
我们使用的是 FPC402EVM。 我们通过外部主机访问 FPC402、并能够通过默认地址0x1E 与 FPC402通信。 我们能够控制 GPIO 和 FPC402的其他 I/O (例如打开 LED 等)
我们在地址0x1E 处只有一个 FPC402。 因此、根据数据表中的表6、下游 I2C 端口0的地址为0xF0。
在必要的 GPIO 和 I/O 初始化(启用 QSFP/SFP 模块的 VCC)、取消激活模块的 RESET_L 等之后、我们对器件0xF0发出读取访问权限
我们已验证模块的电源是否正常。 模块复位结束等
主机没有收到用于访问0xF0的 ACK 的原因是什么? 如前所述、只有一个 FPC、它使用默认地址0x1E。 FPC402的寄存器值转储如下。

值@0x00:0xF  

值@0x01:0x3F  

值@0x02:0x0  

值@0x03:0x11  

值@0x04:0x6  

值@0x05:0x1c  

值@0x06:0xb0  

值@0x07:0xf8  

值@0x08:0xFF  

值@0x09:0xFF  

值@0x0a:0xFF  

值@0x0B:0xFF  

值@0x0c:0x0  

值@0x0d:0x0  

值@0x0E:0x1  

值@0x0F:0xef  

值@0x10:0x11  

值@0x11:0x98  

值@0x12:0x98  

值@0x13:0x4  

值@0x14:0x0  

值@0x15:0x0  

值@0x16:0x0  

值@0x17:0x0  

值@0x18:0x0  

值@0x19:0x0  

值@0x1a:0x30  

值@0x1b:0x0  

值@0x1c:0x0  

值@0x1d:0x0  

值@0x1E:0x0  

值@0x1f:0x0  

值@0x20:0x0  

值@0x21:0x80  

值@0x22:0x0  

值@0x23:0x0  

值@0x24:0x0  

值@0x25:0x0  

值@0x26:0x0  

值@0x27:0x0  

值@0x28:0x0  

值@0x29:0x0  

值@0x2a:0x0  

值@0x2b:0x0  

值@0x2C:0x0  

值@0x2D:0x0  

值@0x2e:0x0  

值@0x2F:0x0  

值@0x30:0x11  

值@0x31:0x98  

值@0x32:0x98  

值@0x33:0x4  

值@0x34:0x0  

值@0x35:0x0  

值@0x36:0x0  

值@0x37:0x0  

值@0x38:0x0  

值@0x39:0x0  

值@0x3a:0x30  

值@0x3b:0x0  

值@0x3c:0x0  

值@0x3D:0x0  

值@0x3E:0x0  

值@0x3f:0x0  

值@0x40:0x0  

值@0x41:0x80  

值@0x42:0x0  

值@0x43:0x0  

值@0x44:0x0  

值@0x45:0x0  

值@0x46:0x0  

值@0x47:0x0  

值@0x48:0x0  

值@0x49:0x0  

值@0x4a:0x0  

值@0x4b:0x0  

值@0x4c:0x0  

值@0x4d:0x0  

值@0x4e:0x0  

值@0x4f:0x0  

值@0x50:0x11  

值@0x51:0x98  

值@0x52:0x98  

值@0x53:0x4  

值@0x54:0x0  

值@0x55:0x0  

值@0x56:0x0  

值@0x57:0x0  

值@0x58:0x0  

值@0x59:0x0  

值@0x5a:0x30  

值@0x5b:0x0  

值@0x5c:0x0  

值@0x5d:0x0  

值@0x5e:0x0  

值@0x5f:0x0  

值@0x60:0x0  

值@0x61:0x80  

值@0x62:0x0  

值@0x63:0x0  

值@0x64:0x0  

值@0x65:0x0  

值@0x66:0x0  

值@0x67:0x0  

值@0x68:0x0  

值@0x69:0x0  

值@0x6A:0x0  

值@0x6b:0x0  

值@0x6c:0x0  

值@0x6d:0x0  

值@0x6e:0x0  

值@0x6f:0x0  

值@0x70:0x11  

值@0x71:0x98  

值@0x72:0x98  

值@0x73:0x0  

值@0x74:0x0  

值@0x75:0x0  

值@0x76:0x0  

值@0x77:0x0  

值@0x78:0x0  

值@0x79:0x0  

值@0x7a:0x30  

值@0x7B:0x0  

值@0x7c:0x0  

值@0x7d:0x0  

值@0x7E:0x0  

值@0x7f:0x0  

值@0x80:0x0  

值@0x81:0x80  

值@0x82:0x0  

值@0x83:0x0  

值@0x84:0x0  

值@0x85:0x0  

值@0x86:0x0  

值@0x87:0x0  

值@0x88:0x0  

值@0x89:0x0  

值@0x8a:0x0  

值@0x8b:0x0  

值@0x8c:0x0  

值@0x8d:0x0  

值@0x8e:0x0  

值@0x8F:0x0  

值@0x90:0x0  

值@0x91:0x0  

值@0x92:0x0  

值@0x93:0x0  

值@0x94:0x0  

值@0x95:0xf0  

值@0x96:0x22  

值@0x97:0x0  

值@0x98:0x0  

值@0x99:0x0  

值@0x9a:0xFF  

值@0x9b:0x0  

值@0x9C:0x0  

值@0x9d:0x5  

值@0x9e:0x5  

值@0x9f:0x5  

值@0xa0:0x5  

值@0xa1:0xFF  

值@0xa2:0xFF  

值@0xa3:0xFF  

值@0xa4:0xFF  

值@0xA5:0x0  

值@0xa6:0x0  

值@0xa7:0x0  

值@0xa8:0x0  

值@0xa9:0xFF  

值@0xAA:0xFF  

值@0xab:0xFF  

值@0xac:0xFF  

值@0xAD:0x0  

值@0xae:0x0  

值@0xaf:0x0  

值@0xb0:0x0  

值@0xb1:0x0  

值@0xb2:0x0  

值@0xb3:0x0  

值@0xb4:0x50  

值@0xb5:0x51  

值@0xb6:0x50  

值@0xb7:0x51  

值@0xb8:0x50  

值@0xb9:0x51  

值@0xba:0x50  

值@0xbb:0x51  

值@0xbc:0x0  

值@0xBD:0x0  

值@0xbe:0x0  

值@bbbf:0x0  

值@0xc0:0x0  

值@0xc1:0x0  

值@0xC2:0x0  

值@0xc3:0x0  

值@0xc4:0x0  

值@0xc5:0x0  

值@0xc6:0x0  

值@0xc7:0x0  

值@0xc8:0x0  

值@0xc9:0x0  

值@0xca:0x0  

值@0xcb:0x0  

值@0xcc:0x0  

值@0xcd:0x0  

值@0xce:0x0  

值@0xCF:0x0  

值@0xd0:0x0  

值@0xD1:0x0  

值@0xd2:0x0  

值@0xd3:0x0  

值@0xd4:0x0  

值@0xd5:0x0  

值@0xd6:0x0  

值@0xd7:0x0  

值@0xd8:0x0  

值@0xd9:0x0  

值@0xda:0x0  

值@0xdb:0x0  

值@0xdc:0x0  

值@0xdd:0x0  

值@0xDE:0x0  

值@0xdf:0x0  

值@0xe0:0x0  

值@0xe1:0x0  

值@0xe2:0x0  

值@0xe3:0x0  

值@0xe4:0x0  

值@0xe5:0x0  

值@0xe6:0x0  

值@0xe7:0x0  

值@0xe8:0x0  

值@0xe9:0x0  

值@0xEA:0x0  

值@0xeb:0x0  

值@0xec:0x0  

值@0xED:0x0  

值@0xee:0x0  

值@0xef:0x0  

值@0xf0:0x10  

值@0xF1:0xA0  

值@0xf2:0x0  

值@0xf3:0x0  

值@0xf4:0x0  

值@0xf5:0x0  

值@0xf6:0x0  

值@0xf7:0x0  

值@0xf8:0x0  

值@0xf9:0x0  

值@0xfa:0x0  

值@0xfb:0x0  

值@0xFC:0x0  

值@0xFD:0x0  

值@0xFE:0x0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bala、

    对于您向模块发出的读取操作、目标寄存器地址是否处于 FPC402的预取范围内?

    在任何情况下、主机必须看到 ACK 或 NACK、具体取决于器件地址0xF0处的模块是存在还是不存在。 在主机执行读取操作的同时、您能否探测下游 I2C 线路并查看与模块之间以及与 FPC402端口之间的通信?

    谢谢、
    SRI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    数据表提到当 FPC 器件地址为0x1E 时、0xF0是为端口 P0映射的地址。 因此、我的理解是、我们正在访问正确的地址。

    根据文档、我的理解是、即使在轮询端口0 I2C 下行流端口之前、FPC 器件也应 ACK 主机以访问地址0xF0。 不是吗?

    在我们的案例中、我们确实有 QSFP/SFP+模块、正如我提到过的、这些模块已通电、也未复位等。

    如前所述、我们能够访问器件地址为0x1E 的 FPC 器件的所有内部寄存器。 请参阅寄存器转储

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bala、

    我是说您尝试读取的寄存器偏移-它是否处于 FPC402的预取范围内? 只是想了解 FPC 是从本地寄存器还是模块读取。 我同意0xF0应该是正确的地址、并且在这两种情况下、您应该看到主机的 ACK。

    一旦 FPC402接收到一个读取命令、它首先通过相应的下行 I2C 端口检查器件 ID、并根据模块是否存在将 ACK 或 NACK 发回主机 (在这种情况下、它应该从模块接收一个 ACK、并将其发送到主机)。 所以我很好奇、在这个读取操作期间、您是否在下游端口上看到任何通信。

    谢谢、
    SRI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为预取被禁用(默认为?)。
    检查范围并发布信息
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Sri

    您是否看到任何寄存器编程问题? 初始 POST 中提供了寄存器转储

    谢谢

    巴拉

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bala、

    您似乎已经将寄存 器0xB4配置为默认值0x50 (对应于8位地址0xA0)、该寄存器指定了端口0、器件0的地址。 这就是器件不响应0xF0地址的原因。 表6列出  了可分配给器件的所有可能有效 I2C 地址。 但是 、除非使用该寄存器0xB4重新配置、否则任何端口的器件0的默认地址都将为0xA0。 有关如何将端口0器件0 ID 配置到目标地址的说明、请参阅编程指南的第2.70节。

    谢谢、

    SRI

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Sri
    我们只有 FPC401编程人员指南(SNLU221A - 2016年12月、2017年修订版)。 四天前、我已经申请了 FPC402的文档。 我还向 TI 团队提供了与项目相关的所有数据(构建计划、项目名称、年度使用情况等)。 看起来访问权限尚未授予。 能不能看到发生了什么?
    请向我们提供 FPC402的最新数据表及其编程指南。
    我们使用的编程指南错误。 FPC401编程指南没有针对寄存器0xB4的第2.7节或说明
    谢谢
    巴拉
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bala、

    很抱歉您的请求延迟。 我刚刚授予您 FPC402文档的访问权限、其中包括完全机密的数据表、编程指南、SDK 和 EVM 用户指南。 除了与器件和端口的 I2C 寻址相关的部分之外、其他所有内容都应该与您之前使用的 FPC401相同、因此您不需要太多地更改寄存器。

    请参阅 FPC402程序指南中的第2.70节、并相应地配置端口0器件0的所需地址。

    谢谢、
    SRI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sri、
    感谢您授予访问权限。 我将对此进行检查。 但下面是我的想法-
    如果为0x50、则寄存器0xB4和端口1、端口2、端口3的其他类似寄存器的默认值应为"正常"。 原因是、这些是地址、当从上游进行的访问发生在地址0xF0时、FPC402将用于下游访问。
    例如、
    如果上行访问发生在0xF0、则 FPC402将启动对端口0上器件地址0xA0的下行访问。
    如果上行访问发生在0xF4、则 FPC402将启动对端口1上器件地址0xA0的下行访问。 。 等等

    那么,我们还有什么问题呢?

    此外,您能否授予/批准我的同事 Manju Mahajan 的帐户创建(电子邮件:manju.mahajan@fungible.com)。
    她已提交配置文件信息并等待激活。
    谢谢
    巴拉
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    巴拉

    我不确定我是否理解您的示例。 只要寄存器0xB4未被重新配置、器件0就需要由其默认地址0xA0来访问。 请尝试通过当前寄存器配置中的0xA0进行访问、并告诉我是否看到 ACK 信号。 或者、您可以尝试更新寄存器0xB4以对应于0xF0 (按照编程指南中的第2.70节)、并尝试使用它进行访问。 请告诉我它是否可以解决该问题。

    当然、我现在已授予她访问该文件夹的权限。

    谢谢、
    SRI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sri、
    最后我们破解了它。
    复位寄存器(偏移= 0x00)位[3:0]必须写入0xF、然后写入0x0以复位端口状态机、然后才能开始工作。
    现在、我们能够读取串流 QSFP 和 SFP 模块。
    我认为、此信息没有明确记录。
    谢谢
    巴拉
    关于
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bala、

    很棒的消息! 编程人员指南将该寄存 器的默认值指定为00、但它没有明确说明访问下行端口必须重置为该值。  

    感谢您分享信息、我们 将与我们的团队一起更新文档。

    此致、

    SRI