工具与软件:
我要在模块化定制板上测试 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 引脚上的数据、我应该检查什么?
如果有任何见解、将不胜感激。
谢谢!