主题中讨论的其他器件:DP83867E
工具与软件:
我启用了 SGMII 接口并将 PHY 设置为自主模式、但 PHY 无法在链路建立时完成自动协商。
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.
工具与软件:
我启用了 SGMII 接口并将 PHY 设置为自主模式、但 PHY 无法在链路建立时完成自动协商。
您好、Philip:
我想澄清一下:
1.自主模式与自动协商不同。 自主模式意味着 PHY 将在上电时自动进入链路接通状态。 禁用自主模式时、您需要写入寄存器0x18B 才能建立链路。 自动协商是一个握手过程、用于确定 PHY 的速度/双工模式。
2. DP83TG720不支持 MDI 自动协商、但支持 SGMII 自动协商。
如果提示 PHY 在链路接通时无法完成自动协商、您是指 MDI 还是 SGMII 自动协商? 您是否正在读取特定的 PHY 寄存器?
这里是我们的 SGMII 故障排除指南供参考、您可以查询此处提到的 ts 寄存器:https://www.ti.com/lit/an/snla473/snla473.pdf?SGMII=1737586726526
此致、
Melissa
尊敬的 Melissa:
我想知道 DP83867E/IS/CS 是否支持 MDI 自动协商和/或 SGMII 自动协商? 当我为 DP83867E/IS/CS 开发驱动程序时、由于某种原因、MCU 的 SGMII 接口无法工作、但自动协商仍然可以通过。 如果 PHY 具有 SGMII 自动协商功能、但 MCU 的 SGMII 接口无法工作、为什么自动协商会完成? 因此、我想、仅在 PHY 之间执行自动协商。 DP83TG720的自动协商机制是否 与 DP83867E/IS/CS 不同?
谢谢!
此致、
Philip
您好、Philip:
您的设计是否同时使用 DP83TG720和 DP83867?
DP83867支持 MDI 和 SGMII 自动协商。
DP83TG720仅支持 SGMII 自动协商。
SGMII 自动协商在 SGMII 标准中指定、我还在应用手册 I 链接中介绍了该机制。
MDI 自动协商由 IEEE802.3标准指定。 在这个过程中、PHY 与链路伙伴交换功能确定速度和双工模式。
如果您在通过 SGMII 将 DP83867连接到 MAC 时遇到问题、建议尝试执行第1.1、1.2和1.3节中提到的步骤。 尝试后、请确认。 https://www.ti.com/lit/an/snla473/snla473.pdf?ts = 1737586726526
此致、
Melissa
DP83867没有问题。 我只遇到了 DP83TG720的问题。 我的意思是、在禁用 SGMII 接口时、我可以使用 DP83867进行自动协商、并通过使用 MDC&MDIO 获取合适的速度。 我在 DP83867的数据表中找到了自动协商和 SGMII 自动协商功能。 在我的上一个工程中、我使用了自动协商完成标志来检查 PHY 是否已完成自动协商、而不是 SGMII 自动协商完成标志。 我想知道它们是否不同。 如果它们不同、它们之间有什么区别? 我还发现 DP83TG720的数据表中仅出现了 SGMII 自动协商。 我还想知道我们何时使用 SGMII 自动协商以及何时使用自动协商?
您好、Philip:
为了帮助进一步调试、请参阅以下链接中的应用手册: https://www.ti.com/lit/pdf/snla473
您能否检查以下各项:
PHY 是否通过自举配置为 SGMII? 请提供引脚24、25和26的配置。 SGMII 的默认状态是这些引脚悬空。
请检查 SGMII_CTL_1寄存器状态(寄存器偏移608h)、尤其是位9 (cfg_SGMII_en)、查看 SGMII 是否已启用。 此外、请检查同一寄存器的第0位、该位通常应设置为1以启用 SGMII 自动协商。
此外、您是否可以提供原理图供您审阅?
此致、
Undrea.
您好、Philip:
由于处理器不支持自动协商、因此我们建议在 PHY 中禁用自动协商。 可通过设置 SGMII 配置寄存器(SGMIITL、地址0x608)中的位[0]= 0b0来禁用 SGMII 自动协商。
此外、在用于复位 PHY 的驱动程序代码中、您可以更改为软复位(寄存器0x1F、位14)。
注意、尽管我们删除了自动协商、但上面的代码似乎会写入此寄存器的默认值、并具有重新启动 SGMII 自动协商(0x0040)的注释值。
此致、
Undrea.
您好、Undera、
在我们的平台中,有一个具有 SGMII_en 位的寄存器, 其说明 如下所示:

浏览链接 https://docs.amd.com/r/en-US/ug585-zynq-7000-SoC-TRM/Register-XEMACPS_NWCFG_OFFSET-Details 以了解详情。
这是否意味着 MCU 的 SGMII 支持自动协商?
谢谢!
Philip
尊敬的 Undrea:
我上周尝试了建议的更改、但 SGMII 链路状态仍故障。
程序如下:
1.将值0x4000写入寄存器0x1F。
2.将值0x0278写入寄存器0x608、
3.读取寄存器0x60A 中的值、然后检查该值的位11。
我保持读取寄存器0x60A、并每秒检查位11、但它仍然是低电平。
我找到了另一个寄存器、如下所示、其中显示了自协商状态。

![]()
上述注册的链接为: https://docs.amd.com/r/en-US/ug1087-zynq-ultrascale-registers/pcs_control-GEM-Register
我读取寄存器 SGMII PCS 控制、该寄存器中的值为0x1140 (= 0001_0001_0100_0000)、如下所示。
如果寄存器的第12位为高电平、则表明 MCU 的自动协商已启用、SGMII 仍处于关闭状态。

谢谢!
Philip