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.

[参考译文] DP83822I:PHY 接收数据包但不发送;MII 环回失败

Guru**** 2466550 points
Other Parts Discussed in Thread: DP83822I

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1470404/dp83822i-phy-receives-packets-but-does-not-transmit-mii-loopback-fails

器件型号:DP83822I

工具与软件:

我要在模块化定制板上测试 DP83822I:微控制器位于一个板上、以类似屏蔽的方式连接到定制板、如果 PHY 是。 在 MAC 侧、微控制器(STM32H723)及其代码能够按预期运行。 它已经使用另一个 Phy (微芯片 LAN8742A)进行了测试。

在 PHY 侧、自举设置为在 RMII 主模式下运行、XI = 25MHz、它正确生成50MHz 输出。 仅设置了用于实现该配置的搭接(RX_DV 和 CRS_DV)、其余配置默认保持开启。

问题在于在正确的连接和自动协商(100 Mbps、全双工)之后、它只接收来自连接方的数据包、而不能正确传输。 Wireshark 显示传输的数据包具有正确的帧长度、但数据错误。 另一种方法则工作正常、因为在微控制器上接收到的数据包与 Wireshark 读取的数据包相同。

我已验证的内容:

  • 根据寄存器0x467和0x468、可正确配置 Strap 配置引脚
  • 连接已接通、自动协商 在正常操作中完成100Mbps、全双工模式
  • 反向环回测试通过。 PHY 正确 回传由链路伙伴发送的数据包
  • 模拟、数字、输入和输出环回测试 使用数据包生成器时通过 . 如果我在数字测试中将电缆连接到计算机、则内部生成的数据包会显示在 Wireshark 上。
  • 在第二个电路板中、从微控制器到 PHY 的整个布线中、RMII 信号保持不变
  • 在示波器上测量的信号靠近 PHY 侧、因此我想说物理连接不是问题

MII 环回模式 . 我已经验证了以下内容

  • 自动协商在 100Mbps、全双工时成功
  • 微控制器将数据发送到 PHY、我可以在上看到传输的信号 TX0和 TX1 位置。
  • TX_EN 工作正常
  • TX0和 TX1波形与微控制器发送的字节相匹配、 并在使用 LAN8742A 进行测试时相同
  • PHY 显然会回送数据、 因为我可以看到接通的信号 RX0、RX1和 RX_DV 示波器测量的。
  • 但是 未触发微控制器中的 RX 回调 .
  • 通过以太网从计算机接收数据包时也使用相同的代码、因此 MAC 和回调机制在正常运行中似乎正常工作。

同理、在另一个点上 带有 MAC 生成的数据包的近端环回模式:

  • 自动协商和自动 MDIX 已禁用并强制设置为100Mbps 全双工
  • 在示波器中看到 TX_EN、TX0和 TX1波形
  • PHY 显然会回送数据和信号  RX0、RX1和 RX_DV  在 示波器中看到。
  • 尽管相同的代码适用于链路伙伴数据包、但不会调用 Rx 回调。

我怀疑此问题可能与时钟或 MAC 配置或其处理数据包的方式有关。 为了确保 MAC 正确处理 TX 引脚上的数据、我应该检查什么?

如果有任何见解、将不胜感激。

谢谢!

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

    您好!

    PHY 似乎完全符合预期、但 MAC 可能在解释数据时遇到问题。 我需要关注的一个问题是、要确保 MAC 线路的长度正确匹配、并且在 RX 侧的 MAC 引脚处探测的信号符合 MAC 的设置/保持时间与 VoD 要求。

    此致、

    Gerome.

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

    您好 Gerome,感谢您的快速回复。

    实际上、这是 TX 线路中的时序问题。 在  更仔细地将它们与 ref_clk 信号进行比较后、结果表明建立时间几乎不存在...这种情况很少见、因为它在其他 具有更高设置要求的 PHY 下运行良好、这就是我不认为很多的原因。  Wireshark 读取的错误数据 与非相位采样一致。

    通过从 MAC 侧改变 TX 信号的驱动强度来解决这个问题,这里 已经指出:解决: STM32H7 RMII 计时- STMicroelectronics 社区 

    不过、我还有一个相关的问题、希望您能帮助我:

    在 从 MAC 端进行尝试之前、我 找到了 PHY 的 RMII TX 时钟移位功能。 我将寄存器0x17的位8设置、然后将扩展寄存器0x42设置为0x11。 但再次读取0x42时、它显示0x1、这意味着无法启用相移。 我不确定这是否是正确的使用方法或者这在本例中是否有所帮助、但在数据表中也找不到有关这些寄存器的更多信息。 该功能是否旨在用于 RMII? 如果是、它是如何工作的?

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

    您好!

    据我的理解、寄存器0x42更适用于 MII、而不适用于 RMII。 如果需要调整 RMII 时序、建议使用寄存器0x17[8]。

    此致、
    Gerome.

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

    在这种情况下、班次应该是多少? 启用后、我应该期待什么结果? RGMII 指定为3.5ns、RMII 也是如此?  
    我认为0x42更适合 MII、但由于我在传输上没有看到任何变化、因此我认为 它也可能与0x17[8]相关。

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

    您好!

    我们的预期目标是 TX 路径内部移位4ns。 它不会进行物理测量、但功能观点可能会受到影响。

    此致、
    Gerome.

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

    明白了。 感谢您的帮助 Gerome。 祝您周末愉快!