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.

[参考译文] DP83TG720S-Q1:如何使用带有 lwIP 的非 OS MCU 来初始化 DP83TG720S-Q1并完成自动协商。

Guru**** 2467270 points
Other Parts Discussed in Thread: DP83867E

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1465097/dp83tg720s-q1-how-to-use-a-non-os-mcu-with-lwip-to-initialize-dp83tg720s-q1-and-to-finish-auto-negotiation

器件型号:DP83TG720S-Q1
主题中讨论的其他器件:DP83867E

工具与软件:

我启用了 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:

    DP83TG720上不提供 MDI 自动协商。 您可以在寄存器0x1位[2]中检查链路状态。  

    SGMII 链路状态可在寄存器0x60A 位[11]中监控。

    谢谢!

    David

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

    尊敬的 David:

    我在寄存器0x01 bit[2]中检查了链路状态、该位为高电平;在寄存器0x60A bit[11]中检查了 SGMII 链路状态、该位为低电平。 这意味着链路状态为接通、SGMII 链路状态为断开。 如何解决该问题?

    谢谢!

    Philip

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

    您好、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.

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

    尊敬的 David:

    上图显示了寄存器0x608、其中位9和位0 都为1。

    上图是 DP83TG720的原理图、其中引脚24、25和26均悬空。

    谢谢!

    Philip

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

    您好、Philip:

    您使用的处理器是什么?

    处理器中是否启用了自动协商功能?

    您是否有我们可以查看的驱动程序.c 代码?

    此致、

    Undrea.

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

    尊敬的 Undrea:

    我们使用的处理器是 Zynq UltraScale+ MPSoC。

    我不确定它是否支持 SGMII 自动协商。

    如果处理器不支持 SGMII 自动协商、该怎么办?

    我们是否能够仅使用 MDC&MDIO 接口为 DP83TG720完成 SGMII 自动协商?

    driver.c:

    谢谢!

    Philip

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

    您好、Philip:

    我正在与团队进行咨询、并将在明天回复您。

    此致、

    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

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

    您好、Philip:

    我在文档中的任何地方都没有看到明确指出支持 SGMII 自动协商。  如相关文档中所述、启用 SGMII 时、不会进行自动协商。  我使用上面的寄存器描述是为了说明控制器会更改广播的内容(从启用自协商更改为禁用、因为在 RGMII 中启用自协商)。 最好直接与 AMD 核实。

    您是否能够尝试上周建议的更改?

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

    尊敬的 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

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

    您好、Philip:

    通过电子邮件获取。

    Thnaks,

    David