我一直在使用 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?