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.

[参考译文] TMS570LC4357:由于 MDIOPhyAliveStatusGet ()故障,以太网连接无法正常工作

Guru**** 2477065 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN, LAUNCHXL2-570LC43

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1021353/tms570lc4357-ethernet-connection-dont-work-because-mdiophyalivestatusget-troubles

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGENLAUNCHXL2-570LC43

大家好、  

我想使用电路板的 EMAC (TMS570LC4357)。 为此、我使用的是 Lwip。  此时会发生错误。

if(!((MDIOPhyAliveStatusGet(hdkif->mdio_base) 
        >> hdkif->phy_addr) & 0x01 )) {
    return ERR_CONN;
  }

ERR_CONN 表示"未连接"。 我正在尝试将数据发送到我的 RaspberryPi、并且已经将它们连接在一起。

问题是什么?

提前感谢您

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

    如果您使用从 HALCoGen 生成的代码、请确保在引脚多路复用配置中选择了 MDIO 和 MDCLK。 检查 MII 或 RMII 不会选择 MDIO 和 MDCLK。

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

    感谢你的答复。 我正在使用 Halcogen 编写的通用代码、并且已经选中了所有这些框。 问题似乎在其他地方。

    还有其他想法吗?  

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

    感谢您的帮助。

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

    尊敬的 Sory:

    您是否使用 TI LC43x EVM 或您自己的电路板?

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

    我使用 的是 TI LC43x EVM。 请参阅以下链接:

    www.ti.com/tool/LAUNCHXL2-570LC43

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

    谢谢。 还有一个问题、您是否使用 LWIP 演示或 Active Webserver 演示? 您是否修改了由 HAlCoGen 生成的代码或演示中的代码(lwip 或 webserver)? 我注意到您发布的代码与 HALCoGen 中的代码不同:

    您的代码:

    if (!((MDIOPhyAliveStatusGet (hdkif->MDIO_base))
    >> hdkif->phy_addr)& 0x01){
    返回 ERR_CONN;

    HAL 代码:

    if ((uint32) 0U =((MDIOPhyAliveStatusGet (hdkif->MDIO_base))
    >> hdkif->phy_addr)&(uint32) 0x01U){
    RetVal = EMAC_ERR_CONNECT;
    }否则{

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

    要使用 Launchpad 进行以太网通信、应解决以下 HALCoGen 配置问题:

    a.驱动程序启用选项卡。 启用 GIO 驱动程序:

      i.选中"Enable GIO Driver"(启用 GIO 驱动程序)。

      二 确认启用了 GIO、SCI1和 EMAC 驱动程序。

    b. ECLK 选项卡。 为 PHY 提供25MHz 时钟:

      i:在 ECLK 引脚模式组中、将 ECLK 引脚模式更改为 ECLK。

      二 在 ECLK 引脚组中、确保 DIR 已选中。

      三 在 ECLK 功能配置组中、将分频器更改为3、以便 ECPCLK 为25MHz。

      四. 同时选中"Continue on SUSPEND (暂停时继续)"按钮。

    c. PINMUX/引脚复用选项卡。 将 MII 和 MDIO 接口引脚更改为其默认位置:

      i.确保在 PINMUX 顶部的启用/禁用外设组中选中 MII。 这对于将 MAC 置于 MII 模式是必要的、即使它也会将 MII 引脚移动到它们的备用位置、这些位置必须手动撤消。

      二 取消选中焊球 A14、B4、B11、D19、E18上的 MII 和 MDIO 信号、 F3、G3、G19、H18、H19、 J18、J19、K19、N19、P1、 R2和 V5。 尽管您可以根据需要选择非以太网功能、但这些行现在应该为空。

      三 将焊球 T4、U7上的选择更改为默认功能(从 MII_RX_AVCLK4更改为 MII_RXCLK、从 MII_TX_AVCLK4更改为 MII_TX_CLK)。 PHY 将向 Launchpad 上的 MAC 提供这些时钟。 注意:列表冲突显示了焊球 T4和 U7的总冲突2 -只需忽略此项即可。

    d. PINMUX/输入引脚复用选项卡。 将所有输入 MII 和 MDIO 信号更改为默认(左列)状态

    I. MDIO=F4、MII_COL=W4、MII_CRS=V4、MII_RX_DV=U6、MII_RX_ER=U5、 MII_RXCLK=T4、MII_RXD[0]=U4、MII_RXD[1]=T3、MII_RXD[2]=U3、MII_RXD[3]=V3、 MII_TX_CLK=U7

    E. GIO/端口 A 选项卡。 需要将 GIOA[3]和 GIOA[4]驱动为高电平、以使 PHY 从复位和断电状态中释放出来。

      i.选中位3和位4的"DIR_"框。

      二 将位3和位4的 DOUT 更改为"1"。

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

    我不使用 LWIP 演示例。 我仅使用 Lwip 库。 以太网位置的配置。 我认为  它在结构上是由转出器修改的,转出器负责维护代码,但不 涉及内容。 我猜我的硬件可能是缺陷的、因为我可以调试代码、直到这个位置、在这个位置上查询寄存器值(我想)。

    if(!((MDIOPhyAliveStatusGet(hdkif->mdio_base)
    >> hdkif->phy_addr) & 0x01 )) {
    return ERR_CONN;
    }

    并且它始终返回 ERR_CONN、

    我可以从何处下载原始的 Lwip-libraries、以便再次进行测试。

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

    尊敬的 Sory:

    以下是下载 lwip 演示和活动 Web 服务器演示的链接:

    http://software-dl.ti.com/hercules/hercules_docs/latest/hercules/Examples/index.html

    以太网环回示例还可用于检查电路板是否正常工作:

    e2e.ti.com/.../TMS570LC4357HDK_5F00_EMAC_5F00_Loopback.zip

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

    谢谢你。 示例的示例。 我应该对代码进行更改。 因为它不会发生任何情况(甚至不是接收到的数据的打印)。  
     就 LWIP-Demo 而言、它还没有准备好使用?

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

    回送示例和 lwip 演示应在不修改任何代码的情况下工作。

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

    我做了这些修改、下面的问题似乎已经消失:

    if (!((MDIOPhyAliveStatusGet (hdkif->MDIO_base))
    >> hdkif->phy_addr)& 0x01){
    返回 ERR_CONN;

    我知道这个问题:

    if (!Dp83640LinkStatusGet (hdkif->MDIO_base、hdkif->phy_addr、0xFFFF)){
    返回 ERR_CONN;
    }  

    具体效果如何?如何解决此问题?

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

    运行 lwip 演示时、您是否将电路板连接到以太网交换机? 否则、您将遇到链接器失败问题。  

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

    它现在可以工作了。 我遵循了这些说明。  用于 Hercules LaunchPad 的最小 lwIP 项目- Hackster.io

    我还确保电路板已连接到以太网。

    谢谢你

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

    尊敬的 Sory:

    请分享导致链接器故障问题的原因吗?