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.
工具与软件:
您好、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, ¶ms);
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
正确的用户应用程序。
非常感谢您提供任何提示!
尊敬的 Dominik Fischer:
感谢您的提问。
我会检查一下、然后回复给您。
此致
Ashwani
尊敬的 Ashwani:
本主题有任何新内容?
尊敬的 Dominik Fischer ,
我上周在度假。
因此无法对此进行检查。
我们下周同一时间再见。
此致
Ashwani
尊敬的 Dominik Fischer ,
感谢您的耐心等待。
[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、并告知我您是否需要进一步的帮助?
此致
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 以太网驱动程序缺乏一些了解...
谢谢!
尊敬的 Dominik Fischer:
您是否可以 在"\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
我可以看一下结构,但这并不能真正帮助我。 我认为手动填充不是解决方案、因为它需要由驱动程序来完成? 我不知道如何正确填充所有这些属性。 这就是我想要使用从驱动程序中填充和配置的现有有效句柄的原因。
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 */ uint32_t reqLinkCaps; /*! PHY driver */ EnetPhyDrv_Handle hDrv; /*! Magic number indicating that this object is in use */ EnetPhy_Magic magic; /*! Caller-provided arguments to be used in MDIO driver calls */ void *mdioArgs; } EnetPhy_Obj;
我正在定制电路板上使用 DP83869
我在考虑这一点时假设您引用以下文档?
我知道吗、为什么要从应用程序中更改 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