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.

[参考译文] RTOS/TM4C1292NCPDT:通过 MII 接口进行外部 PHY 配置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/655657/rtos-tm4c1292ncpdt-external-phy-configuration-through-mii-interface

器件型号:TM4C1292NCPDT

工具/软件:TI-RTOS

您好!  

我想修改和测试 TM4C1294-XL 电路板的 tcpEcho 项目、以通过 MII 接口配置外部 PHY-KSZ8463FML、从而使其适用于使用 TM4C1292NCPDT 设计的系统。  我有一些 API 来设置 MII 和外部 PHY 配置。 MAC 正在准备就绪、PHY 配置也已正确完成、我可以在这里看到链路正在建立。 但我无法看到 IP 地址打印在控制台上、并且连接到电路板的 PC 没有 ping 响应。

我使用了在 Board_initEmac()之前调用的以下 API。 我想将 MII 接口用于100Mbps 全双工模式。

EMAPPHYConfigSet (EMAC0_BASE,(EMAC_PHY_TYPE_EXTERNAL_MII);

这是我获得的控制台输出。

暂停操作后的详细任务视图。

TM4C1294-XL 的 tcpEcho 工程与 My tcpEcho 工程之间的区别如下。

1.针对特定于我的目标板更改了.cmd 文件。

2.在 EMAC_Init()之前通过 SPI 接口配置我的以太网交换机;

EMACPHYConfigSet (EMAC0_BASE,(EMAC_PHY_TYPE_EXTERNAL_MII);EMAC_Init()之前的 API;

请帮助我建立链接并正常工作。 这里是否有任何遗漏。

此致

巴拉

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

    您好!

     您能否在 EN0TXCK 和 EN0RXCK 引脚上检查 PHY 到 MCU 是否生成25MHz?

     您能否在以太网上获取 Wireshark 捕获并比较使用内部 PHY 的项目与使用外部 PHY 的项目? 下面的捕获通过内部 PHY 和过滤器运行 tcpEcho、以便在代码开始运行后仅显示与 launchpad 相关的流量。  

      

      

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

    时钟正从 PHY 正确生成。 此外、我将能够使用 Tiva 驱动程序库发送/接收数据包、即裸机驱动程序初始化。 在以下主题中也发布了同样的内容。

    e2e.ti.com/.../448525

    现在、我想开发一个应用、它应该包含 NDK 堆栈和 TI RTOS。 我想执行基本的 ping 命令和文件传输。 首先、我使用了 tcpEcho 项目。

    请澄清以下问题。
    1.如何在 tcpEcho 项目中初始化 MAC? 它简称为 Board_initEmac()。 并且找不到相同的源文件。
    2.我们需要在何处配置或通知 MAC 我将通过 MII 接口使用外部以太网交换机?
    3.我们是否需要使用与 TI RTOS 中上述裸机代码中相同的驱动程序配置? 或者是否有不同的 API 可用于在 TI RTOS 中配置相同的 API?
    4. NDK 堆栈的最低要求是什么? 它是否正在等待完成 MAC 和 PHY 配置? 如果是、如何与配置了以太网交换机的 NDK 堆栈通信?

    此致
    巴拉
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bala、
    NDK 使用 EMACSnow.c 文件中的 TivaWare driverlib 调用。 这是您需要处理的文件。 我建议您调整 EMACSnow.c 文件以配置外部 PHY,而不是在 Board_initEMAC()之前调用 EMAPHYConfigSet()。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    感谢你的答复。 您是否意味着 EMACSnow.c 文件中连接的外部 PHY 需要替换 EMAPPHYWrite()和 EMAPPHYRead () API?

    这些 API 似乎正在传递其中一个参数是 EMAC_BASE? 因为我的外部 PHY 是通过 SPI 接口配置的。

    您是否有配置外部 PHY 的示例代码或指南? 根据我的理解,我只需要在 EMACSnow_hwiIntFxn()中进行编辑,以将链路状态更新为 NDK 生效,并且应在 NDK 看到链路状态之前配置 PHY。


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

    您好、Bala、
    KSZ8463FML PHY 可将其 SPI 接口置于 MIIM 模式、即串行管理接口(SMI)、这是对 PHY 进行编程的标准接口。 您是否将 KSZ8463FML PHY 置于 MIIM 模式并使用 MCU 的 MDIO 和 MDC 信号连接到 PHY 或使用单独的 SPI 连接到 PHY? 如果您使用 MIIM 模式、那么您可以使用 TivaWare API 通过 EMAPPHYWrite 和 EMAPPHYREAD 访问外部 PHY。 物理地址0用于内部 PHY。 您需要为外部 PHY 指定0x1到0xF 的物理地址。

     我想您要修改 EMACSnow.c 第909行的 EMAPPHYConfigSet 以配置外部 PHY。  

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

    您好、Charles、

    我们必须仅使用 SPI 接口来配置以太网交换机、因为我们无法通过 MIIM 接口将以太网交换机配置为100B-FX 模式。

    根据您的指导、我已在 EMACSnow.c 中针对外部 phy 配置进行了修改、代码附在此处。

    e2e.ti.com/.../tcpEcho_5F00_ExternalPhy.zip

    我已在 EMACSnow.c 和其他项目文件中添加了某些打印内容。 请在运行后查找控制台日志。

    e2e.ti.com/.../console_5F00_log.txt

    此时网络 IP 地址已正确添加、我们将能够观察到链路状态的变化。

    但我们仍然无法执行 ping 命令。 您能不能通过查看代码来建议它出错的地方。

    另外、请通过暂停功能查找几分钟后使用的 EMAC 配置寄存器。

    e2e.ti.com/.../Emac_5F00_register.txt

    此致

    巴拉

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bala、
    我对 KSZ8463FML 没有任何了解、因此您只能通过 SPI 接口而不能通过 MDIO 配置 PHY。 我们没有任何支持此类设置的示例、也没有您的等效硬件来复制行为。 从您的日志中、似乎链接已启动。 Wireshark 捕获什么内容?

    另请注意、System_printf 数据存储在内部缓冲区中。 System_flush 将把这个数据写入 CIO 缓冲器。 当 CIO 缓冲器已满或数据中有'\n'时(在您的情况下是如此)、目标会暂停、以便 CCS 可以读取数据。 这会使实时操作混乱。 我不知道这是否会影响您的操作。 您可以删除 System_flush、然后使用 Tools->ROV->SysMin 查看 System_printf 输出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bala、

    也许您应该试试 Wire Shark、看看您是否获得了与 Charles Capture 相同的结果? 通常、ICMP 回应 和多播广播必须配置 目标端 才能将响应数据包返回到主机 ping 应用程序。

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

    问题现已解决。 以太网交换机配置出现问题。 默认情况下、交换机配置为 ADN 旁路模式、因此不允许数据包进入微控制器。 现在、我们将能够 ping 通。 尚未完全测试 tcpEcho 项目。

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

    您好、Bala、

     很高兴您的问题得到解决。 我相信社区将从您的调查结果中受益。