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.

[参考译文] DP83848K:当以太网交换机强制将链路速度连接到收发器时、未检测到链路断开

Guru**** 2587345 points
Other Parts Discussed in Thread: DP83848K

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/858267/dp83848k-not-detecting-link-down-when-ethernet-switch-is-forcing-link-speed-to-transceiver

器件型号:DP83848K

我一直在使用 DP83848K 收发器测试产品以传输用于过程监控的 TCP/UDP 数据、并且在通过以太网交换机强制执行网络速度时遇到问题。

收发器配置为自动协商链路速度和双工模式。 与收发器连接的微控制器具有一个专用线程、可读取 BMSR 寄存器(0x01)以确定链路是断开还是断开(分别为位2链路状态0或1)。 如果链路中断、则 MAC 接口将被禁用、直到链路恢复(链路状态设置为1)、此时将开始自动协商以确定链路速度和双工模式、该模式用于配置 MAC 接口。  

当最初将 DUT 连接到网络或在对 DUT 进行下电上电后、通信按预期继续进行。 此外、如果开关从自动协商更改为强制10M 或100M、则 DUT 会响应速度变化。 但是、如果交换机设置为强制10M 速度、然后设置为强制100M 速度、则通信将丢失、交换机报告链路已断开。 可以恢复通信、但它需要对 DUT 进行下电上电、强制网络速度恢复到10M 或将开关设置回自动协商。 在调试模式下操作微控制器、当网络速度从10M 强制为100M 时、BMSR 寄存器不会报告链路断开、因此 DUT 绝不会重新配置 MAC 接口。  

在强制网络速度从10M 到100M 运行时、收发器为何从未报告链路断开状态?这是否可以解决? 或者、是否有更好的方法来确定需要重新配置 MAC?  

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

    您好、Christopher、

    BMSR 寄存器中的 Link Status 位是一个锁存寄存器。 除非读取该位、否则该位不会改变、并再次读取以查看该改变。 PHYSTS 寄存器0x10的位0上提供了备用链路状态。 我会尝试将您的功能建立在该寄存器的基础上、并查看问题是否得到解决。 如果这会给您带来相同的问题、请告诉我、我们可以进一步调查。

    谢谢、

    Vibhu

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

    您好、Vibhu、  

    感谢您的快速响应。  

    从基本寄存器更改为扩展寄存器(从0x01更改为0x10)会导致相同的问题。  

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

    您好、Christopher、

    交换机是否开始与 PHY 进行自协商? 您能否查看在使用两个 DP83848并更改其中一个上的速度时是否看到相同的问题、以查看链路是否在10M 和100M 之间变化?

    谢谢、

    Vibhu

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

    Vibhu、  

    交换机是否开始与 PHY 进行自协商?

    否,当交换机强制使用网络速度时,将禁用交换机上的自动协商。 由于强制速度、因此假定速度。

    您能否查看在使用两个 DP83848并更改其中一个上的速度时是否看到相同的问题、以查看链路是否在10M 和100M 之间变化?

    我将运行一些测试并查看我可以确定的内容。  

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

    Vibhu、  

    我设置了一个使用 DP83848收发器与 DUT 连接的开发板。 已对开发板进行编程、禁用了自动协商、其中网络速度默认为100M (写入寄存器 BMCR 0x00)。 如果我按下开发板上的按钮、则速度在10M 和100M 之间切换。 正如我在网络交换机中看到的、当我将开发板从10M 过渡到100M 时、DUT 会断开链路、但不会改变速度。 我必须从物理上断开电缆以使 DUT 检测到链路断开、从而允许 DUT 在重新连接电缆时协商速度。  

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

    您好、Christopher、

    禁用自协商时不能执行此操作。 一种可行的方案是两个 PHY 都处于自协商状态并连接到100M。 然后、您强制将一个 PHY 设置为10M、而另一个 PHY 仍处于自动协商状态。 当链路断开时、PHY 将看到链路伙伴发出10M 空闲指示并设置为10M。

    关闭自动协商后、需要手动设置两个 PHY。

    谢谢、

    Vibhu

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

    谢谢、Vibhu。 您已经解决了这个问题、我了解如何继续。