工具与软件:
我们有一个 DP83TG720S-Q1 PHY、它在硬件复位后以 SGMII 模式启动。 从 U-Boot 中、寄存器0x45D (SOR_VECTOR_1)回读为0x2008、以表示
SGMII_EN=1、RGMII_EN=0、MAC_MODE=0x0=SGMII、PHY_AD=0x8
不过、我们需要 PHY 在 RGMII 模式下运行、我们认为是为此设置了电阻器搭接。
从 U-Boot 读取寄存器0x45d:
UBoot>MII 写入0x8 0xd 1f;
MII 写入0x8 0xe 0x45d;
MII 写入0x8 0xd 0x401F;
MII 读取0x8 0xe
2008.
我们看到过此论坛帖子: DP83TG720R-Q1:MAC 地址和 RGMII 模式选择、上拉电阻器-接口论坛-接口- TI E2E 支持论坛
并尝试按照以下顺序从 U-Boot 将 PHY 置于 RGMII 模式:
GPIO 清除21 #置位 PHY 复位线
GPIO set 21; # deassert reset
#清除0x608中的第9位以禁用 SGMII
MII 写入0x8 0xd 1f;
MII 写入0x8 0xe 0x608;
MII 写入0x8 0xd 0x401F;
MII 写入0x8 0xe 0x7B;
#设置0x600中的位3 以启用 RGMII
MII 写入0x8 0xd 1f;
MII 写入0x8 0xe 0x600;
MII 写入0x8 0xd 0x401F;
MII 写入0x8 0xe 0x128
当我们读回这两个寄存器时、它们会匹配我们写入的值(分别为0x7B 和0x128)、但寄存器0x45d 始终回读为0x2008。 我还尝试了写入 BMCR 位15以在执行此操作后软复位 PHY、并且仍然在0x45d 中看到0x2008。 此外、我们没有看到与 MAC 进行通信、且 PHY 仍然显示为 SGMII 模式。
电源上升时间完全在数据表规格范围内、我们已确认当 PHY 对搭接电阻器进行采样时、RGMII 线路为静态(FPGA 侧具有高阻抗)。 我们已使用示波器探测了 RGMII 线路、并确认 PHY 清楚地处于 SGMII 模式。
对于如何将 PHY 切换到 RGMII 模式、或者为什么它进入到错误的模式、您有什么想法吗?
谢谢!