主题中讨论的其他器件: UNIFLASH
工具与软件:
您好!
我尝试将 tm4c1292ncpdt 与具有外部物理层的设计配合使用。 所有 Tivaware 示例都使用一个内部 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.
工具与软件:
您好!
我尝试将 tm4c1292ncpdt 与具有外部物理层的设计配合使用。 所有 Tivaware 示例都使用一个内部 Phy。 是否有使用外部 Phy 的示例或我可以用来转换示例的一组步骤? 深入研究一些示例看起来非常复杂、因此我不确定从哪里开始。 欢迎提供任何指导。
谢谢!
尊敬的 James:
请参阅下面的文章、我希望这些文章能够帮助您快速入门。 如果您能让它发挥作用、请告诉我、并与我们分享该代码、以便社区也能从中受益。
我认为它需要的是,你需要:
-有一个 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 的硬件连接和软件配置。
事实证明、我在 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寄存器进行编程、请参阅这些文章以供参考。