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.

[参考译文] FPC402:当主机侧 SCL 在远程下行端口访问期间中断或延迟很长时间时、端口状态机卡住。

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1535738/fpc402-port-state-machine-is-stuck-when-host-side-scl-is-interrupted-or-delayed-for-long-time-during-remote-downstream-port-access

部件号:FPC402

工具/软件:

在远程下行端口访问期间、我们怀疑内部端口状态机卡住。  

当发生问题时、在主机发送逻辑器件 I2C 地址后始终收到 NACK、并且下游接口中没有任何 I2C 信号。

我们捕获了主机侧 I2C 波形、发现 SCL 信号没有定期驱动、在整个字节传输期间有时会延迟很长时间(保持长“1"或“或“0")“)。

同时检查所有 FPC402 寄存器、未发现异常信息。

您能否帮助确认 SCL 被中断是否会导致 端口状态机卡滞 ?

是否有任何用于指示卡滞状态的寄存器? 在编程人员指南中找不到这种寄存器。

为避免此类卡住而建议的任何变通办法?  

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

    尊敬的 Liming:

    • 是否可以共享示波器捕获?
    • 您知道为什么没有定期驱动 SCL 吗?  除非发生时钟延展、否则 SCL 通常是周期性的。
    • 我将查看我们是否有任何此状态指示器。  我们将在下周收到反馈。
    • 您是否尝试过端口复位 (0x00[3:0])?

    谢谢、

    Drew

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

    您好、Drew、

    只需附加示波器捕获即可。

    我们在 CPU 主机端的 GPIO 上通过 bit-banged 仿真模式来实现 I2C 控制、

    当 CPU 负载增加时、 主机侧 I2C 输出将中断或延迟很长时间、然后导致 SCL 输出不规则。

    是的、我们 尝试了端口复位 (0x00[3:0])、它确实可以从卡滞状态恢复。

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

    尊敬的 Liming:

    感谢您分享更多详细信息。  我们已经看到一些罕见的情况、即不规则的 I2C 时序会导致 FPC 器件上出现“卡滞“状态。  我有一些建议/建议:

    • 您可以继续使用端口重置来帮助解决此问题。
    • 尝试增加主器件看门狗计时器寄存器的值、以查看这是否会影响该行为
    • 尝试调整 Protocol Timeout 寄存器 、以查看这是否会影响该行为

    谢谢、

    Drew

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

    您好、Drew、

    感谢您发送编修。

    我们实际上尝试将 协议超时寄存器值从默认值 10ms 降低到 1ms/2ms/5ms、这可以缓解问题发生的情况。

    此外、还尝试了减少主器件看门狗计时器寄存器、似乎没有影响、不确定是否增加。

    还有一个问题、

    是否有任何指示此类异常状态的保留或隐藏寄存器?

    由于我们检查了所有相关的状态寄存器、因此未找到故障信息。

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

    尊敬的 Liming:

    很高兴您能够缓解该问题。

    遗憾的是、没有任何其他可帮助指示此状态的隐藏寄存器。

    您可以检查“端口 SCL 卡滞中断寄存器“和“端口 SDA 卡滞中断寄存器“、但我不确定他们会报告此情况、因为问题似乎与主机端时序有关。

    谢谢、

    Drew

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

    您好、Drew、

    是的、我们已经检查了寄存器“端口 SCL 卡滞中断寄存器“和“端口 SDA 卡滞中断寄存器“、

    当 FPC402 卡住时、两个寄存器都有值 0x0。

    更多问题、

    协议超时寄存器的当前默认值为 10ms、主看门狗计时器寄存器为 3ms。

    我们尝试调整主看门狗计时器寄存器和协议超时寄存器。

    协议超时寄存器减小至 3ms/5ms 或主看门狗计时器寄存器增加至 5ms/10ms 可以避免在转储 SFP 模块信息时发生 FPC 卡滞问题、 同时仍然存在未收到值的意外读取字节错误。

    1.您对两个注册表的更好值或两个注册表的最佳组合有何建议?

    2.仍然不是很了解两个登记册如何影响行为,任何文件解释它的细节?

    3.该寄存器“I2C SlaveWatchdogTimerRegister(offset =0x04)“怎么样 ?

       我们试图调整它,没有影响。

    谢谢!  

     

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

    尊敬的 Liming:

    我过去观察到一种类似的情况、即减少协议超时寄存器或增加主看门狗计时器寄存器来解决这种情况。  我不确定您的 I2C 主机的行为是否与我实验过的测试条件完全相同、但我认为问题是类似的。

    我在尝试执行下游读取时发现了问题。  重现此“端口卡滞“问题所需的关键事项:

    • 在这种情况下、I2C 主机控制器在下游读取期间 NACK 和 STOP 位之间存在较长的延迟 (~6ms)。
    • 在写入和读取之间、需要一个“重复启动“条件。  单独的“停止“和“启动“条件不会导致该问题。

    重要观察结果:

    • 如果 NACK 和 STOP 之间的延迟缩短至~4ms、则不会发生“端口卡滞“问题
    • 如果 NACK 和 STOP 之间的延迟增加~12ms、则不会发生“端口卡滞“问题
    • 如果协议超时寄存器减少到 NACK 和 STOP 之间的延迟长度以下(即 NACK-STOP 延迟为 9ms、协议超时寄存器为 7ms)、则问题已解决。
    • 如果主看门狗计时器增加到 6ms、并具有 6ms NACK 停止延迟、则不会发生问题。
      • 主器件看门狗计时器寄存器值与哪些 NACK 停止延迟值导致“端口卡滞“问题之间似乎存在~1ms 至 2ms 的差值。  例如、默认的主看门狗计时器为 3ms、但将 NACK 停止延迟从 6ms 降低至 4ms 已解决问题。  换句话说、由于与这个问题有关、主看门狗计时器值的作用似乎更像是 REGISTER_VALUE + 2。

    摘要:

    • 我们观察到、在这种 NACK 停止延迟较长的异常情况下、如果 NACK 停止延迟时间位于主看门狗计时器和协议超时寄存器值之间、则会发生端口卡滞情况。
    • 在我们的测试台中、我们观察到了可以通过在默认情况下 (10ms) 使用协议超时寄存器将主看门狗计时器增加到 5ms 来缓解问题。

    >>您对两个寄存器的更好值或两个寄存器的最佳组合有何建议?

    • 我们可以通过将主器件看门狗计时器增加到 5ms 并将 Protocol Timeout Register 保留为默认值来缓解这个问题。  我会考虑尝试一下。

    >> 仍然不是很了解两个寄存器如何影响行为,有任何文件来详细解释它?

    • 遗憾的是、除了编程指南和数据表之外、我没有太多关于这方面的文档
    • 主看门狗计时器监控端口侧、以确保事务在特定时间段内发生。
    • 协议超时寄存器监控主机侧以确保事务在特定时间段内发生。

    >>  该寄存器如何“I2C SlaveWatchdogTimerRegister(偏移=0x04)“  

    • 我们没有观察到这会对这个“端口卡滞“问题产生影响。

    谢谢、

    Drew

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

    您好、Drew、

    感谢您分享详细信息。

    在我们的情况下、您的一方触发“端口卡滞问题“的条件可能不同、因为我们没有观察到  NACK 和 STOP 位之间存在长延迟 (~6ms)。

    无论如何、与侧的同一点在主机发送期间的某个位置会有较长的延迟。

    我们会考虑您的所有建议。

    BTW、  

    您是否会建议同时增加主监控计时器和减少协议超时寄存器? 喜欢将两者都更改为 5 毫秒?

    谢谢!

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

    尊敬的 Liming:

    我认为我们只增加了主看门狗计时器就执行了更多测试、因此我对此更有信心。  话虽如此、我不知道将两者降低到 5ms 有任何问题。  请随时尝试此操作。

    谢谢、

    Drew