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.

[参考译文] TM4C129DNCZAD:外部以太网 PHY 示例

Guru**** 664280 points
Other Parts Discussed in Thread: TM4C129DNCZAD, EK-TM4C1294XL, TM4C1294NCPDT, TM4C129XNCZAD
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1165688/tm4c129dnczad-external-ethernet-phy-example

器件型号:TM4C129DNCZAD
主题中讨论的其他器件: EK-TM4C1294XLTM4C1294NCPDT

大家好、我在当地 TI FAE 的指导下在这里发帖、我在将外部 PHY 开关集成到 TM4C129DNCZAD 的 RMII 接口方面遇到了一些挑战。 我还没有找到任何更好的示例代码、EVK 演示、它们 可以通过使用外部 PHY 和 TM4C129芯片的 RMII 接口工作。 请提供建议?  供参考- 使用 TivaWare v2.1.1.71b、因为这是 TI-RTOS 在此器件上支持的最后一个版本、也欢迎使用 FreeRTOS 代码示例。 谢谢。

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

    您好、Kelly、

     在进行一些搜索时、我发现以下支持 MII/RMII 的 TI 设计可能很有用。 这就是我能找到的所有内容。 我们没有其他有关 RMII 的示例。  

      https://www.ti.com/tool/TIDA-00226?keyMatch=null&tisearch=tidesigns

    尽管这个帖子有点旧、但在设置外部 MII 时有一些代码片段。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/559297/tm4c129dncpdt-with-external-phy-through-mii/2048845?tisearch=e2e-sitesearch&keymatch=EMAC_PHY_TYPE_EXTERNAL#2048845

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

    查尔斯-
    感谢您的回复。 我回顾了上面的旧 MII 帖子、它确实让 人对一些事情有所了解、因此感谢您的评论。 但是、我还没有走出树林。

    令我惊讶的是、MDIO 线路会在  50MHz MDC/REFCLK 线路 由 外部 PHY 提供之前发出大量数据... 这对我来说是一种困惑、因为我认为 MDIO 线路在时钟边沿上"锁存"每个数据位之前必须有一个外部时钟? (如 SPI 总线?) 或者、我是否不完全了解 TI 如何实现此 RMII 接口?

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

    您好、Kelly、

     请参阅数据表中的方框图。 我还显示如下。 MDC 是由 EMAC 模块产生的 MDIO 时钟。  MDC 时钟与 REFCLK 不同。

    23.3.12串行管理接口
    以太网 MAC 能够通过外部 EN0MDIO 和对外部 PHY 进行编程
    EN0MDC 信号。 EN0MDC 信号是2.5MHz 时钟、由系统时钟(SYSCLK)提供
    然后通过对以太网 MAC 中的 CR 字段进行编程、分频至所需频率
    MII 地址(EMACMIIADDR)寄存器。 PHY 的可用地址为0x01到1F。

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

    感谢 Charles -在这里跟进、为这篇漫长的文章道歉、但希望如果我们不能使用这些 TI 器件、我们至少可以提前支付相关知识的费用。

    在进一步查看您提供的示例链接后、很遗憾、该链接不适用。 RMII 连接在接头引脚上被细分、但是它们不被使用。 运行以太网插孔演示使用内部 PHY、与 TM4C129系列中的其他 TI EVK 板类似。
    ------------------------
    我们发现并修复了一个代码问题-(从我最近的上述答复中) Tivaware (v2.1.4.178)驱动程序函数 EMACInit()上没有边界/错误检查或陷阱。 它将接受一个 ui32SysClk 值为零(是的、我们的代码有故障)、但是 Tivaware 函数将 MDC 时钟设置为比允许的最大频率高3.5倍。 作为参考、在这种情况下、MDC/MDIO 总线间歇性工作、这很难进行故障排除。 总的来说、这是"我的错"、但这可能是其他边缘情况和其他驱动程序功能中的一种可能性、因此需要注意(帮助可能阅读此帖子的其他人)。
    ------------------------
    第二个问题似乎是一个困难的停止以及器件/文档中的某些内容、 可能只有 TI 才能提供帮助。 波形和测试证明了外部 PHY (在我们的案例中为88E6320)通过 MDC/MDIO 总线正确设置、并且 REFCLK 为50MHz/稳定。 使用 enet_lwip 示例中 TI EVK 上的代码并在电路板上定义 EMAC_PHY_IS _EXT_RMII (而不是 EMAC_PHY_TYPE_INTERNAL)、不会发生 RMII 中断或数据到达。 对 EK-TM4C1294XL 上的工作 enet_lwip 示例进行最小但必要的更改、会导致在使用 SMI RMII 外部 PHY 时数据包不再出现在 Wireshark 中。

    在 TM4C129DNCZAD 数据表(版本15863.2743)的23.4以太网控制器"初始化和配置"部分(第1584页)中、这些步骤表示需要对 ECEXT 位和 PINTFS 进行编程、但在寄存器 pgs 1589-1704上、ECEXT 位不存在、且 EMACPC (应包含 PINTFS)为只读。 我们还没有找到任何示例代码或驱动程序库、这些示例代码或驱动程序库详细说明了可以成功执行的外部 PHY 初始化步骤(可能我们尚未搜索正确的位置)。

    7年前有 e2e 论坛帖子、指出 TM4C 器件中存在类似问题(其中一个是您在上面共享的链接、另一个是我在下面共享的链接)。 在阅读完这些文章中描述的解决方案并检查它们所附加的文件后、其他人似乎只成功配置 PHY 通信总线(MDC/MDIO)、但他们不解决以太网数据总线链路问题(如上面 e2e 链路的最后一个帖子所示)。 除非 TI 的专业知识能够提供其他步骤、否则我们将得出结论、即 RMII 的外部 PHY 支持从未完全开发/测试、并且无法使其在这些器件中完全正常运行。

    是否可能有数据表勘误表表明了这一点? 或已修订初始化步骤的非正式或未发布的附录文档? 这两种方法中的任何一种都将有助于正确指导设计人员、或管理设计人员不会将这些器件用于此目的的期望。 目标是防止其他设计人员在未来不必要地投入时间和硬件。

    这是我们在设计中保留 TI 处理器的最后一项努力、因为管理部门正在考虑不同制造商的选项和影响。 我们非常感谢您提供的任何帮助、或 TI 专家为您提供的有关此器件系列的帮助。 请提供建议、并感谢您的参与。

    e2e.ti.com/.../tm4c1292-emac

    e2e.ti.com/.../tm4c1292-ncpdt-ethernet

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

    您好、Kelly、

    [引用 userid="542081" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1165688/tm4c129dnczad-external-ethernet-phy-example/4413886 #4413886"]thernet contorller"初始化和配置"(第1584页)、这些步骤表示需要对 ECEXT 位和 PINTFS 进行编程、但在寄存器 pgs 1589-1704上、ECEXT 位不存在、且 EMACPC (应包含 PINTFS)只读。 [/报价]

    我认为这可能是 ECEXT 的文档错误。 我认为这个位不重要。 如果选择了外部 PHY、则将使用外部 REFCLK。 也许在某一时刻、ECEXT 存在、但后来由于冗余而被删除。 就 PINTFS 而言、它在数据表中显示为 RW。 不过,我希望我能为 RMII 提供帮助。 您是否知道您的外部 PHY 是否已正确配置? PHY 配置完毕后、您是否在 RMII 接口上看到任何信号发生变化?

      

      

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

    您好、Charles。

    这是我们一直在寻找的东西之一!  它来自哪个数据表?  我们从 TI 网站(SPMS440B、2014年6月18日)下载的 TM4C129DNCZAD 数据表显示了 EMACPC:

    我们是否下载了错误的数据表?  这就是 TM4C129DNCZAD 的网页上的内容。

    谢谢!

    Dan

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

    Dan、您好!

     我想我知道原因。 我正在阅读具有内部 PHY 的 TM4C1294NCPDT 数据表。 我同意数据表描述在谈到 PHY 配置时有一点不清楚。 它实际上讨论的是内部 PHY 配置。  TM4C129DNCZAD 没有内部 PHY、而是 MII/RMII 接口。  

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

    查尔斯-
    请看、您的寄存器屏幕截图来自 TM4C1294NCPDT 数据表、而不是 TM4C129DNCZAD 数据表、Dan 和我都很兴奋! 但老实说、这种情况会发生。

    无论如何、它确实会触发我尝试不同的东西。 按照...DNCZAD 数据表23.4节中的确切步骤操作、但使用...4NCPDT 数据表中的寄存器映射(用于缺失的信息)。 冗余地、我对所需的位进行了重新编程(充分了解它们可能已经发生在之前的驱动程序函数调用中)、但为了逐字执行 TI 的步骤。 遗憾的是、结果是相同的、在 MDC/MDIO 线路上进行了正确的 PHY 设置、但没有以太网数据链路。

    为了彻底、我还将其与 TM4C129XNCZAD 数据表进行了比较、以确保其中没有什么不同。 我们的硬件团队还仔细检查了该设计、确保所有信号都正确无误、RMII 连接上的信号由另一组眼睛进行三次检查、并且所有应该存在的波形都存在(MDC、MDIO、RESET、RXD0、 RXD1、RXDV 等)。

    暂停调试器并查看寄存器也确认了代码实际上是按照第23.4节中的步骤对器件寄存器进行编程、并且所有寄存器位都符合预期/需要。

    如果您遇到任何可能引发突破性进展的其他问题、请告诉我、但为了项目时间表的利益、我们将不得不探索其他选项。

    谢谢、
    凯利-

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

    您好、Kelly、

     很抱歉耽误你的回答。 我在度假。 我将继续搜索有助于设置 RMII 接口的帖子。