如果两个 DP83867PHY 能够以 10Mbps 和 100Mbps 建立链路,但无法以 1Gbps 建立链路,请参阅以下调试过程:
注: 此勘误表仅出现在旧版 DP83867PHY(寄存器 0x0003 = A0F1)中
- 通过在其中一个 DP83867PHY 上写入寄存器 0x001F = 4000 来尝试软件复位,然后查看是否解决了问题。
- 读取寄存器 0x0005[15],如果 0x0005 bit[15] = 0,
- 则自动 MDIX 很可能没有完成。两个 PHY 同时在同一通道上发送自动 MDIX FLP_Brust,导致死锁情况。
解决方案:
- 更改其中一个 PHY 上的自动 MDIX 计时器可以防止死锁情况。
- 在其中一个 DP83867PHY 上更改寄存器 0x002C bit[32] = 0
- 写入 0x001F = 4000 以对 PHY 进行软件复位
- 读取寄存器 0x0005[15],如果 0x0005 bit[15] = 1
- 自动 MDIX 已完成,自动协商伪随机数 (PRN) 很可能是问题所在。伪随机数 (PRN) 发送随机数 以确定两个 PHY 在 1000Base-T 下进行通信时,哪个 PHY 是主 PHY(由本地时钟源提供时钟信号),哪个 PHY 是从 PHY(由所接收数据流中的恢复时钟提供时钟信号)。这可以通过寄存器 0x000A bit[14] 来检查。
- 但是,PRN 不是完全随机的,如果两个 DP83867 同时启动自动协商,则可能两个 DP83867 发送完全相同的随机种子 (PRN) 并导致死锁。
解决方案:
- 在其中一个 DP83867PHY 上将 0x0009 bit[12:11] 设置为 11,并在另一个 DP83867PHY 上将 0x0009 bit[12:11] 设置为 10。这个寄存器可以强制一个 PHY 始终作为 1000Base-T 通信的主机,以防止伪随机数 (PRN) 进程。
- 写入 0x001F = 4000 以对 PHY 进行软件复位,或写入 0x0000[9] = 1 以重新启动自动协商