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:我们已设计 TI HDK 开发板的原理图、在 EMAC 和 PHY 芯片之间实现 RMII 模式连接。 但是、在代码调试过程中、我们无法获取 PHY ID。 工程师能否

Guru**** 2463330 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1302198/tms570lc4357-we-have-designed-the-schematic-for-the-ti-hdk-development-board-implementing-the-rmii-mode-connection-between-the-emac-and-phy-chips-however-during-the-code-debugging-process-we-are-unable-to-obtain-the-phy-id-co

器件型号:TMS570LC4357

这是我的代码调试屏幕截图。 当运行函数以获取 PHY ID 时、USERACCESS0寄存器中的数据始终保持为0。 我无法确定原因。

这是我的硬件原理图。 TMS570LC4357芯片通过连接器连接到 PHY 芯片。 请帮助我检查硬件是否有任何错误。

我的代码使用的是官方示例项目 v00.04..00。 我EMACHWInit(emacAddress);main函数中添加了代码、但无法成功初始化、并且无法获取 PHYID。

在上述项目中、使用 HCG 所做的修改如下:

英文译本、我看到 PHY 芯片的 X1引脚的频率是50MHz、MDIO 引脚的频率是1MHz、用一个示波器。'

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

    尊敬的胡江博:

    我已开始处理您的问题、并将尽快为您提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    void EMACInstConfig (hdkif_t * hdkif)
    {
    hdkif->EMAC_BASE = EMAC_0_BASE;
    hdkif->EMAC_CTRL_base = EMAC_CTRL_0_BASE;
    hdkif->EMAC_CTRL_ram = EMAC_CTRL_RAM_0_BASE;
    hdkif->MDIO_base = MDIO_base;
    hdkif->phy_addr = 1u;
    /*(MISRA-C:2004 10.1/R)使用 Code Composer Studio MISRA 校验器报告 MISRA 错误。 */
    hdkif->phy_AutoNeg =&PhyAutoNegotiate;
    hdkif->phy_partnerability =&PhyPartnerAbilityGet;

    hdkif->phy_addr上述代码中的1分配是否正确?

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

    您好,Jagadish M ü,

    PHY_ADDR 问题已经得到解决。

    谢谢!

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

    很高兴听到您解决了问题。

    您能告诉我如何纠正该问题吗、这对未来的类似主题很有帮助。

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

    这个问题还没有解决。 通过函数 MDIOPhyRegRead 获取的 phyID 仍为0。 我希望您可以帮助解决硬件和软件问题。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题尚未解决。 通过函数 MDIOPhyRegRead 获取的 phyID 仍为0。 我希望您可以帮助解决硬件和软件问题

    当然、我会做的。

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

    尊敬的胡江博:

    我将您的原理图与有效的 HDK 原理图进行了比较、并注意到了以下几点。

    1. PHY 的 RX_DV (引脚39)是否正确地输入到原理图上的10K 上拉电阻器中?但在我们的测试中、我们总是将这个引脚输入到2.2K 上拉电阻器中并进行测试。

    2.我注意到 MDC (引脚31)也有一个1.5K 的上拉电阻、但不需要。 我的意思是、只有 MDIO 需要1.5K 的上拉电阻。

    3.在原理图上、PHY 和控制器之间未连接 RX_ER (引脚41)、且2.2K 的上拉电阻器也未连接到此引脚。

    4.也最好将一个2.2K 上拉电阻器连接到 PHY 的 CRS_DV (引脚40)。

    也请从您身边进行比较、这是 HDK 电路板的原理图:
    TMDX570LC43HDK 开发套件| TI.com

    --

    谢谢。此致、
    Jagadish。

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

    非常感谢!

    我们的硬件板设计无法再改变。

    这些引脚的设计错误是否会导致 PHY 无法读取和写入? 或者这只是一个意外的小影响。

    因为我们正在调查是硬件问题还是软件问题。

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

    我们已经成功使用 MII 模式在开发板上读取和写入 phy、但我找到了一个先决条件、即 ECLK 引脚必须配置 ECLK 功能、并且时钟必须配置为25MHz。

    如果 ECLK 引脚配置为 GIO 功能、则无法读取和写入 phy。

    从数据手册中可以看出、ECLK 引脚与 MII 网络端口功能无关。

    为什么会发生这种情况?

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

    在 HDK 电路板上使用 MII 模式、并且已经成功。

    我们在电路板上使用 RMII 模式、因此我们需要 调查是硬件还是软件问题导致无法读取/写入 Phy。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. PHY 的 RX_DV (引脚39)是由原理图上的10K 上拉电阻器指定的吗?但在我们的测试中、我们总是将这个引脚指定给2.2K 上拉电阻器并进行测试。

    这个问题对于将 PHY 置于 RMII 模式非常重要、因此您能否尝试实施和测试它。

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

    好的、我现在将进行尝试。

    顺便说一下、 是 ECLK 引脚与 PHY 的功能相关?我发现我必须  ECLK 引脚配置为 ECLK 功能 、而不是 GIO 功能、我可以读取/写入物理层、ECLK 的频率无效。

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

    另一个问题:

    我引用了   EMACHWInit ()函数中的 MDIOPhyRegRead ()和 MDIOEnable/Disable ()函数,它可以成功运行并获得所需的结果。

    但是,当在 main ()函数中引用时,它将输入一个 DataEntry 异常中断。

    原因是什么?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. PHY 的 RX_DV (引脚39)是否正确地输入到原理图上的10K 上拉电阻器中?但在我们的测试中、我们总是将这个引脚输入到2.2K 上拉电阻器中并进行测试。

    这个问题对于将 PHY 置于 RMII 模式非常重要、因此您能否尝试实施和测试它。

    [/报价]

    我按照您的说明进行测试、现在可以读取 PHY 了。

    但是、DP8640中 BMSR 寄存器的位2不能读为1、始终读为0、如下图所示:

    这将导致以下代码执行失败,无法进入"if ((linkStatus & PHY_LINK_STATUS)!= 0u)"

    您能帮助我分析原因吗?谢谢!

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

    我按照您的说明进行测试、现在可以读取 PHY 了。

    但是、DP8640中 BMSR 寄存器的位2不能读为1、始终读为0、如下图所示:

    这将导致以下代码执行失败,无法进入"if ((linkStatus & PHY_LINK_STATUS)!= 0u)"

    您能帮助我分析原因吗?谢谢!

    [/报价]
    这样做的原因应该是没有连接到网线。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另一个问题:

    我引用了   EMACHWInit ()函数中的 MDIOPhyRegRead ()和 MDIOEnable/Disable ()函数,它可以成功运行并获得所需的结果。

    但是,当在 main ()函数中引用时,它将输入一个 DataEntry 异常中断。

    原因是什么?

    谢谢!

    [/报价]

    您能帮助我分析原因吗,请?

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

    好的、我现在将进行尝试。

    顺便说一下、 是 ECLK 引脚与 PHY 的功能相关?我发现我必须  ECLK 引脚配置为 ECLK 功能 、而不是 GIO 功能、我可以读取/写入物理层、ECLK 的频率无效。

    [/报价]

    您能帮助我分析一下 ECLK 引脚必须配置为 ECLK 功能的原因,请?

    顺便说一下、 在将 10K 上拉电阻器更改为 2.2K 后、我可以在 RMII 模式下读取 phy、非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    顺便说一下, ECLK 引脚是否与 PHY 的功能相关?我发现我必须  ECLK 引脚配置为 ECLK 功能 ,而不是 GIO 功能,我可以读取/写入 phy,ECLK 的频率不起作用。

    它的原因是发现、开发板是 Lanuch 而非 HDK、ECLK 连接到 PHY 的 X1引脚。

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

    尊敬的 HU Jiangbo,

    顺便说一句, 我可以在 RMII 模式下读取 phy  ,在将10K 上拉电阻器更改为2.2K 后,非常感谢!

    很高兴听到这个消息。

    之所以如此,开发板是 Lanuch 不是 HDK,ECLK 连接到 PHY 的 X1引脚。

    对此您是正确的。

    出现此情况的原因应该是没有连接到网络电缆。

    您对此也是正确的。

    --
    谢谢。此致、
    Jagadish。

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

    另一个问题:

    我引用了    EMACHWInit ()函数中的 MDIOPhyRegRead ()和 MDIOEnable/Disable ()函数,它可以成功运行并获得所需的结果。

    但是,当   在 main ()函数中引用 MDIOPhyRegRead ()和 MDIOEnable/Disable ()函数时,它将进入 DataEntry 异常中断。

    原因是什么? 您能帮助我分析原因吗,请?

    谢谢!

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

    尊敬的许江波:

    是的、如果您直接在主函数中调用"MDIOPhyRegRead API" API、则可能会出现 DataEntry 异常。 因为实际上" hdkif_data"  应初始化为  "netif->state (状态)"  在调用"MDIOPhyRegRead "函数之前、因为此 hdkif 数据结构仅包含  MDIO_base 地址等。

    如果您验证此初始化是否在"hdkif_init" API 中发生、并且在调用"hdkif_hw_init"之前进行。

    如果 未进行此初始化 、则 MDIO_BASE 地址将仅为0x0、写入此地址将导致 DataEntry 中止。 因此您不应直接在主函数中调用它们。

    --
    谢谢。此致、
    Jagadish。

     

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

    在 RMII 模式下、我已经按照您的建议将 RX_DV 引脚上的上拉电阻更改为2.2K、并删除了 MDC 引脚上的1.5K 上拉电阻。 然而、由于硬件限制、将一个2.2K 的上拉电阻器连接到 CRS_DV 引脚是很困难的。 此外、RX_ER 引脚未连接至 CPU。 在进行 TCP 传输实验时、我在发送数据时遇到困难、并且 Ping 数据包似乎有问题。 您能否告知 CRS_DV 和 RX_ER 引脚是否对 ping 数据包有影响? 谢谢你。

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

    尊敬的 HU Jiangbo,

    很抱歉我的答复出现延误,我上周休假了。

    您能否告知 CRS_DV 和 RX_ER 引脚是否对 ping 数据包有影响?

    我真的不知道这会对行为有何影响。

    --
    谢谢。此致、
    Jagadish。