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.

[参考译文] DP83867CS:通过 MDIO 读取的链路状态是间歇性的

Guru**** 2537490 points
Other Parts Discussed in Thread: DP83867CS, AM625

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1552580/dp83867cs-the-link-status-read-over-the-mdio-is-intermittent

器件型号:DP83867CS
主题中讨论的其他器件: AM625

工具/软件:

我们发现 DP83867CS 的链路状态未通过 MDIO 可靠读取。  我们的新电路板 Beagle Violet 使用运行 Linux 的 AM625 主机处理器。  默认情况下、MDIO 使用 bit-banging(不是硬件)。  这一选择可能是因为在使用不同(非 TI)PHY 的 BeaglePlay 上早期实现了 AM625。  是否有任何理由将位分组 MDIO 与此 TI PHY 一起使用?  是否有任何关于链路状态不可靠的经验?

我们通过在链路看起来从向上到向下时两次读取 PHY 状态来避免此问题。  这大大提高了我们的可靠性(但它是我们希望避免的 Linux 驱动程序的改变)。  我们还注意到、第二个以太网端口上的读数错误、未连接。

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

    您好、Victor、

    是否有任何已知的理由将位拆裂 MDIO 与此 TI PHY 配合使用?

    DP83867 不需要位拆裂 MDIO、但是、如果满足正确的 MDC/MDIO 时序、位拆裂应该可以正常工作。  

    当链接从向上到向下时、我们通过两次读取 PHY 状态来避免此问题。

    为了确认我的理解、您在链路状态位(寄存器 0x0001 [2])应该为高电平时可看到它设为低电平。 请注意、该位为锁存低电平、这意味着即使链路已启动、链路状态也将保持“0"。“。 它需要读取以取消锁存、并再次读取以查看实际状态。 我相信这就是为什么阅读两次可以解决您的问题。

    LINK_STATUS 位(寄存器 0x0011[10])不是锁存为低电平、直接反映链路状态。 如果您读取这个位、您仍然注意到问题吗?

    此致、

    Shane

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

    Linux 内核中的 PHY 轮询例程正在读取基本模式状态寄存器 (BMSR 寄存器 0x01)。  当以太网链路接通时、我们偶尔会收到链路断开指示。  我知道、当读取低电平时、需要读取才能释放锁存器。  我们添加了第二次读取链路状态的代码以确认链路断开、这一功能得到了改进、但并未完全实现。

    需要说明的是、我们使用的是 MDIO 驱动程序的位拆分版本、因为这是为 AM625 平台配置 Linux 内核/驱动程序的方式。

    作为测试、我们随后强制使用硬件 mdio 和 lo、不仅如此、我们没有读取任何错误的状态。  这可以解决我们的问题、但有一个勘误表说明我们应该使用位拆焊 MDIO。  实际上、如果我们使用硬件 MDIO、我们偶尔会读取链路断开状态(这正是使用建议的解决方案通过位拆裂看到的结果)。

    所以我们不知道哪条路更好。  您或许可以告诉我们勘误表 i2329 是否仍然适用于采用 DP83867cs PHY 的当前量产 AM625 处理器。

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/08_04_01_03/exports/docs/linux/operator/Kernel/cpsw-cpusw-and-pruss Foundational_Components /内核 Kernel_Drivers /CPSW3g.html#errate-i2329-mdio-interface-corruption-cpsw-cpsw-and-pruss

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

    您好、Victor、

    从 PHY 的角度来看、使用标准硬件 MDIO 没有问题、这似乎与 AM62x 处理器更相关。

    您可以提交包含处理器器件型号的单独 E2E 工单吗? 这会将线程引导至支持 AM625 的团队。 我支持我们的以太网 PHY、但没有处理器需要位拆分 MDIO 的背景信息。

    此致、

    Shane

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

    我们发现了与这个问题有关的有趣证据。  我们在 PHY 发送/接收数据时监控 MDIO_MDC 信号。  信号通常良好、但如果存在并发的 PHY 传输、MDC 信号将进入全电压、半电压和四分之一电压电平。  好像 VDDIO 上拉电压下降、或者可能有一个钳位来限制这些时间内的最大电压。  但不确定是它是 PHY 还是 AM6254 处理器。  它似乎独立于 MDIO 硬件与位拆裂。

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

    有趣的发现 您是否确定这是 MDC 信号? 因此它看起来 MDIO 线路更具有特性。 在传输数据时、MDC 看起来像是时钟信号。

    我在 PHY EVM 上还没有看到这种行为。 从 PHY 的角度来看、MDIO 应该为开漏 (PHY 中没有上拉至 VDDIO)、因此 PHY 不应忽略此设置。 通常、您会在 MDIO 线路上具有外部上拉电阻。

    此致、

    Shane

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

    您好、Victor、

    希望您做得好。 由于没有可执行的打开操作、由于不活动、我现在将关闭此主题。

    请随时在此处回答 DP83867 上的任何其他问题、我将继续回答。

    此致、

    Shane

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

    嗨、Shane、

    很抱歉我在假期里是 OOO。  这个问题仍然对我们开放。  您认为信号是 MDIO(而不是 MDC)是正确的。  这是我急于在一次不相关的电话会议之前发帖。

    作为新信息、我们的系统中有两个 DP83867CS(在每个 RGMII 上)和同一个 MDIO 上。  如果我们将第二个 PHY 保持在复位状态、则不会出现此错误。  这似乎意味着第二个 PHY 以某种方式干扰正确的状态读取。  我们可以为当前客户使用重置条件、但并非所有客户都会满意。

    谢谢、

    Victor

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

    您好、Victor、

    感谢您的更新。 您能否分享 MDC/MDIO 线路的原理图? 如果可能、我想查看从控制器到两个 PHY 的完整路径。

    PHY 是否使用不同的 MDIO 地址?

    此致、

    Shane

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

    完整路径运行在三个板上。  主板以太网原理图如下所示。

    第二个 PHY 原理图如下:

    我应该注意的是、我们捕获并更正了 LED_0 和 LED_2 的引脚排列错误。  在第二个 PHY 上交换了网、以便将该电路板配置为使用镜像模式。

    是、PHY 位于两个不同的地址。

    回顾一下、当两个 PHY 都未复位并且在 MDIO 操作期间发生数据包传输时、我们从工作 PHY(错误向下)和断开的 PHY(错误向上)读取了错误的状态。  这时出现了不正确的电压电平。  如果我们将断开的 PHY 保持在复位状态、我们将获得正确的链路状态读取。

    谢谢、

    Victor

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

    您好、Victor、

    我看到 MDC 和 MDIO 上的两组 2.2K 上拉电阻器是什么样的。 一个在处理器附近、另一个在 U3 PHY 附近。 MDIO 应具有一个 2.2K 上拉电阻、MDC 不需要一个上拉电阻(从 PHY 的角度来看)。 移除其中一个 MDIO 上拉电阻器是否可以修复不正确的电压电平?

    此外、我没有看到 PHY 侧中心抽头在您的 Magjack 中端接的位置。 DP83867 应在每个中心抽头上有 0.1uF 电容器连接到 GND、并且中心抽头不应短接在一起:

              

    另外、为了我的理解、链路状态是否是唯一读取意外值的位? 如果这是 MDC/MDIO 总线问题、我会预计所有寄存器的读取都有问题。

    此致、

    Shane

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

    您没有看到的是与以太网 PHY 一起在电路板上使用的 I2C 总线隔离器。  据我所知、我们需要在 I2C 电平转换器/隔离器两侧使用上拉电阻器。

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

    您好、Victor、
    感谢您的澄清。 为了我的理解、链路状态是否是唯一被错误读取的位?

    我们需要确保正确地将问题隔离到 MDIO 接口上、或者、如果这可能是 MDI 实现问题、

    此致、

    Shane

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

    如果没有大量的编程工作、我就无法回答这个问题。  我们从捕获的布线中看到了一系列可能出错的位。  我怀疑靠近低电平的位被每个 PHY 以不同的方式驱动。  我知道 MDIO 应该是开漏的、但该波形不能解释为开漏。  它被驱动为推挽。

    请记住、这仅在第二个 PHY 未使用(但未保持复位状态)并且第一个 PHY 存在 RGMII 活动时发生。

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

    您好、Victor、

    我正在尝试在我们的实验中复制此内容、但我没有看到问题。 我确实在传输过程中看到电压下降了一些、但没有您的图像明显下降。 MDIO 总线在我的设置中适用于链路建立和链路断开的两种场景。 以下是我设置中 MDIO 总线的波形:

    我有两个 DP83867 EVM(一个 R 型号和一个 S 型号)连接到充当 MDIO 控制器的 MSP430 LaunchPad。 它们均共享一条 MDIO/MDC 总线。 我很好奇、您的 MDIO 控制器是否会成为此处的问题、以及使用 LaunchPad 作为控制器是否会解决该问题。 如果 您能够通过外部 MDIO 控制器访问电路板上的 MDIO/MDC 线路、我们提供了一个公共 USB2MDIO 软件、可用于模拟 MSP430LaunchPad 上的 MDIO 控制器。

    请记住、仅当第二个 PHY 未被使用(但未保持复位状态)并且第一个 PHY 存在 RGMII 活动时才会发生这种情况。

    由于问题似乎发生在一个特定场景中、我认为这不一定是硬件实施问题。 如果存在硬件实现问题、无论 PHY 的复位状态或 RGMII 活动如何、我都会预计会发生故障。 我还有几个问题可以帮助我们缩小这一范围:

    • 该行为是否仅与一个 PHY 相关? 我知道、当一个 PHY 断开连接且未保持复位状态时、当另一个 PHY 传输数据时、会发生该问题。 如果交换发送 PHY 和断开连接的 PHY、问题是否会继续出现?
    • 您是否可以更改电路板上的 PHY IC? 我想排除有缺陷的器件。 如果您可以更换两个 PHY(一次更换一个 PHY、并在两个 PHY 之间进行测试)、我们可以确保这里没有出现故障芯片。
    • 您能否仔细检查一下您的上电和复位时序是否在这两个 PHY 的数据表规格范围内? 当不满足上电时序时、它可能会将 PHY 置于不良状态。 这可能会导致各种问题。

    如果我们可以排除故障的 PHY 和上电时序、则检查 MDIO 控制器不是导致此问题的原因。  

    此致、

    Shane

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

    需要考虑的一件事是 AM6254 具有 MDIO 外设异常、他们建议改用位拆裂 GPIO。  我们已经尝试了这两种方法、并看到了相同类型的故障。

    我们应注意、只有在 MDIO 上有多个 PHY(或任一 PHY 保持在复位状态)时、才会发生这种情况。  这使我们认为它与处理器异常无关。  任一 PHY 都可能发生链路状态错误(假设其中一个 PHY 保持在复位状态)。  连接一个 PHY、而另一个 PHY 未连接。  我们可能会得到错误的链路建立和链路断开读数。

    遗憾的是、我们无法轻松连接另一个 MDIO 主器件。  我会想一想我们能做些什么。  对于 PHY、我们已经为每个 PHY 尝试了至少两个板(它们位于单独的板上)。  至于电源时序、我们意识到需要在一个电路板上进行改进、并做出了适当的更改。  不过、PHY 可以很好地进行网络操作、不会出现意外的数据包错误。  所以我认为这严格来说是某种奇怪的 MDIO 情况。

    感谢您聆听并提供建议。  我们还没有准备放弃这一点。

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

    您好、Victor、

    我试图想一想我们可以做的其他测试、以帮助缩小这一范围。 听起来该问题与这两个 PHY 都无关。 由于您在多个电路板上看到这种情况、因此看起来也不像芯片出现故障问题。  

    我记得您曾提到过读取 PHY 上的其他寄存器需要编程工作。 这里是否可以读取其他寄存器?

    • 您不需要读取所有寄存器、但如果我们可以在失败的情况下对一个或两个其他寄存器进行抽查、那么我们可以更好地了解这个问题的范围。 基本上、如果链路状态是唯一显示问题的寄存器、则可能有东西会影响链路。
    • 我也很好奇您如何通过 Linux 读取 PHY 上的寄存器。 在特定 RGMII 发送模式下、是否运行的软件可能会干扰读取? 该实现方案是否可能读取到错误的 PHY?

     链路向上/向下时 LED_0 上是否显示正确的信号? 如果 LED_0 正确但寄存器不正确、则表示我同意、这可能是 MDIO 问题。

    您是否能够在 pdf 原理图中分享完整的 MDIO/MDC 路径? 我很好奇电平转换器是如何实现的(PDF 比图像更易于遵循、因为您可以按 Ctrl+F 网络名称Slight smile

    不幸的是、我们无法轻松连接另一个 MDIO 主站。

    这样做并不顺利、但您也许可以将导线焊接到 R133 和 R135 焊盘上以访问 MDC/MDIO。 如果您可以将 AM625 引脚设置为高阻态、则可允许 MSP430 控制总线。 不过、您需要在 MDIO 上连接一个外部上拉电阻。  

    此致、

    Shane