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.

[参考译文] DP83869-AM243X:如何读取/写入/修改 MCU-PLUS-SDK 的以太网 PHY 寄存器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1422374/mcu-plus-sdk-am243x-how-to-read-write-modify-ethernet-phy-registers-of-dp83869

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:DP83869

工具与软件:

您好、TI 团队:

问题可能不大、但在 MCU+ SDK 中是否可能读取/写入 PHY 寄存器以进行配置。 我正在定制电路板上使用 DP83869、并想将自动协商设置为启用。 实际上、我正在使用简单的 enet_lwip_cpsw_am243x-evm_r5fss0-0_freertos_ti-arm-clang 示例。

我遇到过 ETHPHY API 、但我不确定如何使用此功能/从何处获取必要配置。 在一个简单的测试中,我做了以下(我知道这看起来是错误的,但我不知道如何填充 mdioBaseAddress 和属性正确)。 gEthPhyConfigNum 和 gEthPhyConfig 不应该在自动生成的某个位置吗?

ETHPHY_Config gEthPhyConfig[1];
uint32_t gEthPhyConfigNum = sizeof(gEthPhyConfig) / sizeof(ETHPHY_Config);

void debug()
{
    static ETHPHY_Params params;
    static ETHPHY_Attrs attributes;
    attributes.mdioBaseAddress = 0;
    attributes.phyAddress = 0;

    gEthPhyConfig->fxns = &gEthPhyFxns_DP83869;
    gEthPhyConfig->attrs = &attributes;

    ETHPHY_Handle handle = ETHPHY_open(CONFIG_ENET_CPSW0, &params);
    uint32_t value = ETHPHY_SPEED_DUPLEX_CONFIG_AUTONEG;
    int32_t status = ETHPHY_command(handle, ETHPHY_CMD_SET_SPEED_AND_DUPLEX_CONFIG, (void *)&value, sizeof(value));
}

如何成功使用ETHPHY_command? 是否还有其他可能性可以轻松读取/写入 PHY 寄存器? 我EnetPhy_writeReg 也偶然发现,但我不知道如何传播/提取EnetPhy_Handle正确的用户应用程序。

非常感谢您提供任何提示!

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

    尊敬的 

    感谢您的提问。

    我会检查一下、然后回复给您。

    此致

    Ashwani

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

    尊敬的 Ashwani:

    本主题有任何新内容?

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

    尊敬的 ,

    我上周在度假。

    因此无法对此进行检查。

    我们下周同一时间再见。

    此致

    Ashwani

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

    尊敬的  ,

    感谢您的耐心等待。

    [quote userid="546259" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1422374/mcu-plus-sdk-am243x-how-to-read-write-modify-ethernet-phy-registers-of-dp83869我来过 ETHPHY API 、但我不确定如何使用这个/从哪里获取必要的配置。

    您能否参考以下 API 而不是此处的 API、并告知我您是否需要进一步的帮助?

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/10_00_00_20/exports/docs/api_guide_am64x/group__DRV__ENETPHY.html

    此致

    Ashwani

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

    尊敬的 Ashwani:

    我目前转到了其他主题、但仍然无法测试您的建议、希望我下周能回复您。

    此致、谢谢。

    Dominik

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

    感谢  Dominik 的更新。

    等待测试结果。

    此致

    Ashwani

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

    尊敬的 Ashwani:

    我曾尝试让它运行、但我仍然不完全了解如何在我的应用程序中使用此 API。 我再次使用 enet_lwip_cpsw_am243x-evm_r5fss0-0_freertos_ti-arm-clang 示例开始。

    -我需要访问 Phy_Handle 所有 API 功能在这里提到: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/10_00_00_20/exports/docs/api_guide_am64x/group__DRV__ENETPHY.html
    - En4.45Enphy_open(...) Phy_Handle 中似乎填充了 EnetPhy_open(...)
    -当 EnetApp_driverOpen (...) 中所描述的步骤
    - En454.C Phy_Handle 似乎存储在 Cpsw_Handle 中,这是一个重新解释的 En457.C Per_Handle
    - En4.12.4.8.4.11.8.4.11.8.4.11.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.4.8.9.8.9.8.9.8.9.8.9.8.9.8.9.8.9.8. Per_Handle

    问题在于这是一个自动生成文件中的静态变量,但我无法访问 gEnetAppSysCfgObj,因此无法访问存储在其中某个位置的 Phy_Handle。

    您能否说明一下它可以在正常的用户应用程序中使用、例如集成到 test_enet.c 中? 我应该如何访问 En弓 Phy_Handle?

    我是不是在错误地靠近它?
    也许您可以通过一个简短的独立示例来说明如何使用它? 可能我对 TI 以太网驱动程序缺乏一些了解...

    谢谢!

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

    尊敬的 

    您是否可以 在"\mcu_plus_sdk_am243x_10_00_00_20\source\"中查找 typedef 结构 En61 Phy_Obj_ construct

    /*!
    *\short PHY 驱动程序对象句柄。
    *
    *用于调用任何 PHY 相关 API 的 PHY 驱动程序不透明句柄。
    */
    typedef struct Enharvis Phy_Obj_* Enocvis Phy_Handle;

    此致

    Ashwani

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

    我可以看一下结构,但这并不能真正帮助我。 我认为手动填充不是解决方案、因为它需要由驱动程序来完成? 我不知道如何正确填充所有这些属性。 这就是我想要使用从驱动程序中填充和配置的现有有效句柄的原因。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    typedef struct EnetPhy_Obj_s
    {
    /*! MDIO handle used to access PHY registers */
    EnetPhy_MdioHandle hMdio;
    /*! PHY configuration params */
    EnetPhy_Cfg phyCfg;
    /*! MII interface type */
    EnetPhy_Mii mii;
    /*! MAC port supported capabilities */
    uint32_t macCaps;
    /*! Port Link configuration (speed, duplexity) */
    EnetPhy_LinkCfg linkCfg;
    /*! State-machine timeout configuration */
    EnetPhy_FsmTimeoutCfg timeoutCfg;
    /*! State-machine state */
    EnetPhy_State state;
    /*! PHY group */
    uint32_t group;
    /*! PHY device address */
    uint32_t addr;
    /*! Requested link capability mask */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    我在考虑这一点时假设您引用以下文档?

    定制板支持

    AM64x MCU+ SDK:以太网 PHY 链路配置

    我知道吗、为什么要从应用程序中更改 PHY 设置?

    此致

    Ashwani

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

    尊敬的 Ashwani:

    是的、我提供了`enet_cutom_board_config.c`文件。

    原因很简单、因为我在1Gbps 连接上存在此问题、所以我打算将其设置为固定为100Mbps 作为临时权变措施。

    e2e.ti.com/.../mcu-plus-sdk-am243x-lwip-cpsw-example-not-working-for-1-gbps-connection

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    原因很简单、因为我在1Gbps 连接时出现了此问题、所以我打算将其固定为100 Mbps 作为临时权变措施

    我会检查一下、然后回复给您。

    此致

    Ashwani