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.

[参考译文] DP83848C:RX 帧损坏

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1024551/dp83848c-rx-frame-corruption

器件型号:DP83848C

您好!

我们在 RMII 模式下使用的是 DP83848 PHY 以及 STM32F407 (LwIP 协议栈)。 50MHz 参考 CLK 由 STM32 PLL 生成。

情况如下:

-无法实现100M 操作。 启用自动协商时、PHY 会进入100M 全双工模式、但 RXD0/1上的所有帧都会损坏。 µs、大多数帧将仅由保持在高电平20至100 μ s 的 RXD0组成。 100M 运行对于我们的应用不是至关重要的、因此进行了进一步的测试、迫使 PHY 达到10M。 我将其提及以进行故障排除。

-进行了两次测试:ping 命令和 Modbus TCP 请求。 Ping 响应偶尔会失败(大约5%的时间)。 当它未发生故障时、响应时间为低电平(<10ms)。 使用 Modbus TCP 时、我们观察到大多数请求回复很快、但偶尔 (每20秒左右)、响应时间将增加到500ms 或1秒。 将超时值设置为2秒、通常会在运行10-20分钟后发生超时。

- STM32上的调试显示失败的 ping 没有到达 LwIP 协议栈的入口(即协议栈对它收到的每个 ping 都进行了应答,每次应答都到达主机)

-为了测试数据包的完整性,我们设置了一个参数相同的开发板,并将其连接到同一个交换机,并比较了 RXD0信号。 我们在某些帧上发现了损坏。

以下是常规帧的示例。 除了前导码长度之外、两个电路板上的帧是相同的:

下面是一个损坏的帧示例。 DP83848的帧(上部)与开发板不同。

 

根据这些结果、DP83848似乎会破坏少量的 Rx 数据包。 在 TCP 操作中、发送方重新发送数据包、因此它只会引起应答延迟。 当同一数据包被损坏多次时、可能会发生 Modbus 超时

这似乎是一个硬件问题、因此我们尝试在 X1、RXD0和 RXD1信号上添加100欧姆串联电阻。 这使问题变得更加严重。 传输的帧中只有很小的一部分没有损坏。 负载因子似乎也会影响这种现象。 当将负载因子降低10倍时、损坏帧的百分比会降低。

这是 CLK 信号、没有串联电阻

根据这些信息,我们应该进行哪些设计更改,以确保至少有可靠的10M 运行?

这里是原理图。 我应该补充的是、RMII 信号布线非常短、因为组件距离 MAC 只有3cm。 差分信号布线较长(10cm)。 所有 RMII 信号都直接传输到微控制器。

 

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

    您好 

    请您进行查询。

    下面是我在查看原理图时遇到的一些问题

    时钟来自哪里? 来自 MCU。

    上电后、时钟可用

    器件在时钟稳定后复位至少200ms  

    您能否移除 C11和 C12并进行测试

    如有可能、请分享 PDF 原理图以方便查看。

    此致、

    Sreenivasa

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

    您好、先生、

    时钟确实来自 MCU。 我将确保器件处于复位状态至少200ms。

    没有 C11和 C12。 您是指 IC18和 IC23钳位吗?

    此致

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

    您好 

    感谢您的参与。

    请移除 C111和 C112。 这些是靠近49.9R 电阻器的 MDI 电容器。

    R100-102和 R105是否放置在靠近器件的位置?

    如果可能、请分享 PDF 原理图

    此致、

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

    我删除了 C111和 C112并再次进行测试。 我没有注意到任何变化。 49.9R 电阻器放置在靠近器件的位置。

    这是 e2e.ti.com/.../CES-391_2D00_1-D_2D00_2_2D00_6.pdf 的原理图

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

    您好 

    您能否移除另外两个电容器以及 ESD 二极管 IC18和 IC23并进行测试?

    此致、

    Sreenivasa

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

    您好、先生、

    我移除了其他电容器和 ESD 二极管。 这并不是决定性的。 您能不能用示波器捕获中显示的方式描述导致组件损坏帧的情况?

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

    您好 

    感谢您的参与。

    我假设存在一些基本误差。

    您能不能写入 一个表来将以太网接口信号从 MAC 映射到 PHY、并检查方向是否匹配。

    此致、

    Sreenivasa

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

    我不确定我是否理解。 我向您发送了原理图。 您是否参考了 UC 引脚配置?

    我使用 ST 库来控制 uC 的 ETH 外设、因此所有 RMII 引脚都是自动配置的。 引脚分配(PC4 = RXD0、PC5 = RXD1等)取自 uC 数据表、并根据开发板原理图进行了验证。 此外、大多数帧都是无误传输的、因此我不认为它可能是混频。

    连接了三个额外的信号:REF_CLK、RESET_N 和 INT。 我向您发送了 REF_CLK 示波器捕获、正如您在原理图上看到的、它是 uC 的输出(在 PA8上)。 它连接到 PHY、但也反馈到 uC (在 PA1上)。 RESET_N 是 uC 的输出、我在启动时将其保持300ms、然后将其升高。 INT 被配置为一个悬空输入(由外部电阻器上拉)、并且不在代码中使用。

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

    您好 

    您的问题之一是: 我们应该对设计进行哪些更改,以确保至少有可靠的10M 运行?

    参考此查询、我尝试了解是否存在某些板级错误、因此要求进行快速检查。  

    是的、没错。 我希望您能看到 MCU 侧是否需要所有连接。

    请参阅7.4电源建议、 您是否可以在 电源引脚上添加10uF 并进行检查。

    MCU 的时钟输出连接到内部 MAC 和 PHY。 您是否看到长度和时钟之间的一些差异会影响性能。

    您能否检查 MCU Mac 是否提供了串联端接、以及由于 PHY 侧没有串联电阻器、是否可以禁用此功能。

    您是否在 器件 配置为 RX_DV 的情况下进行了一些测试。

    是否尝试执行环回或 BIST  

    此致、

    Sreenivasa

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

    感谢您的快速反馈。 现在您已经指出了、我注意到 MAC 和 PHY 之间的时钟信号完全不匹配。 有45mm 的差异。 我需要找到一种使用匹配长度进行测试的方法。

    此致

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

    您好 

    谢谢。 另请检查 MAC 是否具有串联端接。 如果是、则可能必须为 PHY 侧的 RX 线路添加相同的内容。

    此致、

    Sreenivasa

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

    您好、先生、

    我设法使用较少的时钟迹线长度对电路板进行测试、我获得了与以前相同的结果。

    MAC 没有端接电阻器、但我已经看到使用这个 uC 的设计、包括开发板、在所有 RMII 线路上放置一个22欧姆串联电阻器(不一定靠近接收器)、大概是出于7.2.2.1中提到的原因。

    但是、正如我之前提到的、在 CLK、RXD0和 RXD1信号上放置27欧姆串联电阻器并不是很好。 它们实际上并不是终端电阻器、因为它们都靠近 PHY。 但是、它似乎在开发板上工作(具有散射 PHY、但 RMII 预防措施应该是相同的)、并且信号线的长度无论如何都只有3cm。

    此致

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

    您好 

    感谢您的检查。  您能否尝试连接外部时钟而不是 MCU 时钟并检查性能。 您能不能向我指出 MCU EVM 原理图。

    此致、

    Sreenivasa  

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

    EVM 的原理图可在以下位置找到: https://www.st.com/en/evaluation-tools/stm32f4discovery.html#cad-resources

    以太网扩展板的原理图可在以下位置找到: https://www.element14.com/community/docs/DOC-51693/l/stm32f4dis-bb-stm32dis-cam-stm32f4dis-lcd-discover-more-schematics (STM32F4DIS-BB rev1.0.pdf)

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

    https://www.ti.com/lit/an/snla076a/snla076a.pdf

    您好 

    谢谢。 请检查所附的链接。

    您能否检查使用 RX_DV 和测试的可行性。

    此致、

    Sreenivasa

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

    您好、先生、

    我应用了使用外部时钟的建议。 为此、我直接使用了 EVM 上的 LAN8720A 生成的时钟。 令我非常惊讶的是、尽管时钟信号看起来真的很糟糕(CF 捕获)、但这解决了问题。 我仍然不明白这是一个比 STM32提供的时钟信号"更好"的时钟信号(可能是抖动??)。 此外、如果我对、数据表中指出、在 RMII 模式下、DP83848不支持 EVM 上使用的时钟模式(25MHz 输入晶振、50MHz 时钟输出到 MAC)、因此我需要一个外部振荡器、而不是一个晶振?

    如果您建议使用 MAC 时钟、我很感兴趣、因为重新布线和重新设计新的电路板实际上是这里的最后解决方案。

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

    您好 

    感谢您的参与、这是一个好消息。

    您能捕获时钟信号并进行共享吗?

    此外、您能否检查时钟抖动并查看是否可以在 应用到 MAC 和 PHY 之前添加 RC 滤波器。

    此致、

    Sreenivasa

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

    您好 

    您是否还想与 MCU 供应商一起检查时钟输出的生成情况?

    此致、

    Sreenivasa

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

    您好、先生、

    添加100R-22pF RC 滤波器解决了这个问题! 它还允许100M 运行。

    非常感谢您的建议、它非常有帮助。 我感谢你的答复质量很高,以及你所显示的可用性。 这是我第一次需要使用 TI 的论坛、我必须说我印象非常深刻。

    此致、

    Henri

    编辑:最终仍导致问题。 我们使用了外部振荡器。 这不会改变我对建议的质量的看法

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

    您好 

    感谢您的注意、很高兴听到您已解决了问题。

    感谢您测试不同的组合并耐心等待。

    如果您对电路板进行了一些更改、请提供串联端接的配置。

    祝你好运。

    此致、

    Sreenivasa