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.

[参考译文] TM4C1292NCPDT:tm4c1292ncpdt 以太网示例

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1389158/tm4c1292ncpdt-tm4c1292ncpdt-ethernet-examples

器件型号:TM4C1292NCPDT
主题中讨论的其他器件: UNIFLASH

工具与软件:

您好!

我尝试将  tm4c1292ncpdt 与具有外部物理层的设计配合使用。 所有 Tivaware 示例都使用一个内部 Phy。 是否有使用外部 Phy 的示例或我可以用来转换示例的一组步骤? 深入研究一些示例看起来非常复杂、因此我不确定从哪里开始。 欢迎提供任何指导。

谢谢!

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

    您好!

     遗憾的是、我们没有连接外部 PHY 的示例。 我会进行一些 e2e 搜索、看看我是否能找到一些包含足够信息的过往文章、以便您快速入门。  

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

    感谢您的帮助!

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

    尊敬的 James:

    请参阅下面的文章、我希望这些文章能够帮助您快速入门。 如果您能让它发挥作用、请告诉我、并与我们分享该代码、以便社区也能从中受益。  

    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

      https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/448525/tm4c1292-ncpdt-ethernet

    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/2162933#2162933

    我认为它需要的是,你需要:

     -有一个 EMAC_PHY_CONFIG 宏为内部 PHY 定义、设置为 EMAC_PHY_TYPE_INTERNAL。 您需要修改为以下值。  

    #define EMAC_PHY_CONFIG EMAC_PHY_TYPE_EXTERNAL_RMII

     -您的应用程序必须包含代码,以便 通过调用 GPIOPinTypeEthernetMII()为 RMII/MII 函数配置 GPIO 引脚。 这一点非常重要。 如果您不将 GPIO 多路复用电路配置为用于以太网 RMII 或 MII、则它们仅保持为 GPIO 引脚。 请仔细检查、确保所有相关引脚均已正确配置。 例如、 下面两个调用为 TM4C1292NCPDT 器件的 EN0INTRN 配置 PP0。  

    MAP_GPIOPinConfigure (GPIO_PP0_EN0INTRN);
    GPIOPinTypeEthernetMII (GPIO_PORTP_BASE、GPIO_PIN_0);

     -我不知道 你在使用哪个外部 PHY。 外部 PHY 应该有一个寄存器、用于指示 PHY 是否已启动并正在运行。 您应检查此类寄存器以确保 PHY 已启动。   EMAC 使用 MDIO 接口来读取 PHY 状态寄存器。 确保可以通过 MDIO 接口读取/写入外部 PHY。  

      如果运行在 RMII 模式下、请确保从外部 PHY 到 EMAC 控制器的 EN0REF_CLK 的频率为50MHz。

    -仔细检查您是否处于正确的 MII 或 RMII 模式。 您可以读取 0xFC4处的 EMACPC 寄存器来验证这一点。  

    概括来说、这是我可以想到的通过 RMII/MII 支持外部 PHY 的功能。 很抱歉缺少示例和文档。  

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

    谢谢 Charles、他对我们很有帮助。 对于上下文、我将使用 RMII、并尝试使用 FreeRTOS + TCP 示例。 这在我尝试使用的 LaunchPad 评估套件上效果很好、但它有一个集成 PHY。

    我已按照这些说明进行了 操作、但还没有正常运行以太网。 我尝试使用 EMACPHYRead 函数通过 MDIO 与 PHY 通信。 因为我看到所有的零都出错了。 我尝试了所有的地址,只是为了确定。 使用 MDIO 可能会在软件端出现什么问题? 今天晚些时候、我可以进行物理访问、以确保看到 MDC/MDIO 线路上的活动。

    注意:我使用的是 TI DP83822IFRHBT PHY。

    非常感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    今天晚些时候我可以实际访问后、我将介绍它、以确保我看到 MDC/MDIO 线路上的活动。

    尊敬的 James:

     是的、检查 MDC/MDIO 上发生的任何事务都是 首先要做的事情。 这是为了确保在诊断 MII/RMII 总线上的事务之前正确配置 EPHY。  

     我找到一个基于  DP83822的 TI 参考设计。 请查看 EPHY 的硬件连接和软件配置。  

    https://www.ti.com/tool/TIDA-00928#design-products

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

    事实证明、我在 MDC/MDIO 线路中使用了错误的引脚。 正确修复后、大多数情况下网络堆栈都会正常运行。 除闪存用户寄存器外、一切都在工作。 我无法擦除它们、因此无法将 MAC 地址刻录到它们。 当时我使用了一个硬编码的 MAC 地址、但我需要一种方法来最终刻录我自己的地址。  

    关于闪存用户寄存器、我没有看到擦除 API。 我已尝试从 uniflash 擦除闪存、但这似乎并不触及用户寄存器? 我发现该工具非常令人困惑、因为它给了我对用户寄存器进行编程的选项、但没有字段来写入我自己的值。 如果有任何见解、我将不胜感激。

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

    尊敬的 James:

     很高兴您取得了良好的进展。 在设置外部 PHY 时、您在我之前的说明中是否看到遗漏了任何内容? 您是否可以共享用于设置 MII/RMII 接口与外部 PHY 的代码段? 我想将此帖子加入书签、以便我可以引用寻求使用外部 PHY 的其他人。

    除了闪存用户寄存器外、其他操作正常。 我无法擦除它们、因此无法将 MAC 地址刻录到它们。 当时我使用了一个硬编码的 MAC 地址、但我需要一种方法来最终刻录我自己的地址。  [报价]

     可以使用 FlashUserSet()和 FlashUserSave() API 将 MAC 地址保存到 USER0和 User1寄存器中。 USER0和 USER1寄存器必须首先被擦除。 擦除 USER0/USER1寄存器的唯一方法是解锁器件、这是一种将器件恢复到出厂设置的方法。 正常的闪存擦除只会擦除主闪存。 解锁是批量擦除的一种形式、它不仅会擦除闪存、还会擦除 NVM 寄存器(例如 USER0/USER1)和芯片上的 EEPROM 存储器。

    您也可以使用 Uniflash 等工具执行相同的操作。  

    如果您使用应用对 USER0/USER1寄存器进行编程、请参阅这些文章以供参考。

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers---internal/f/arm-based-microcontrollers---internal-forum/1232806/tm4c1294ncpdt-tm4c1294-programming-mac-id/4656203?tisearch=e2e-sitesearch&keymatch=FlashUserSet#4656203