公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
xiaoyang_code
Level 1
Level 1
First reply posted First question asked Welcome!

您好:

           因为我现在想监测TC397内部MAC 的链接状态,由此来观察我的Eth模块是否在正常工作,我找到了MAC_PHYIF_CONTROL_STATUS与MAC_LPI_CONTROL_STATUS这两个寄存器,但是当我将外部phy芯片断电后,这两个寄存器并没有查看到相应的link状态,我想知道有什么方法能监测到吗?或者能满足我这种需求的方法

           目前我的工程是使用MCAL,然后使用EB配置生成的代码来实现网络模块相关的驱动与应用代码。

 

#TC397 #Eth

0 点赞
8 回复数
Di_W
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 100 likes received

可以试一下MAC_LPI_CONTROL_STATUS的PLS和PLSEN位。

0 点赞
xiaoyang_code
Level 1
Level 1
First reply posted First question asked Welcome!

我有尝试过将MAC_LPI_CONTROL_STATUS 的PLSEN和MAC_PHYIF_CONTROL_STATUS的TC位置1,代码为:GETH_MAC_LPI_CONTROL_STATUS.B.PLSEN = 1;GETH_MAC_PHYIF_CONTROL_STATUS.B.TC = 1;

但是我在debug观察寄存器时,除了我自己设置的TC位和PLSEN位会变为1,其他的位始终都是为0 

0 点赞
Di_W
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 100 likes received

当使用MII接口时,须使用管理数据输入/输出接口(MDIO)对PHY进行配置。有专用的读/写功能用于此目的。

当使用RGMII、SGMII和SMII接口时,须通过MAC和PHY之间的介质独立接口直接配置PHY,而不是通过MDIO。在这种情况下,寄存器MAC_PHYIF_CONTROL_STATUS提供有关Link Status位(LNKSTS)的信息。

看下您的接口是什么类型?

两种常见的PHY配置方法:通过管理数据输入/输出接口(MDIO)和通过介质独立接口直接配置。

  • MDIO配置方法
    第一种配置PHY的方法是使用MDIO接口。MDIO接口通过两个信号实现,分别是MDIO接口时钟(MDC)和MDIO数据。可以使用以下读取和写入函数检查MDIO连接:

读取函数示例:

void IfxGeth_phy_Clause22_readMDIORegister(uint32 layerAddr, uint32 regAddr, uint32 *pData)
{
// 5位物理层地址、5位GMII寄存器编号、4位时钟分频器、读、忙
GETH_MAC_MDIO_ADDRESS.U = (layerAddr << 21) | (regAddr << 16) | (0 << 😎 | (3 << 2) | (1 << 0);

IFXGETH_PHY_WAIT_GMII_READY();

// 获取数据
*pData = GETH_MAC_MDIO_DATA.U;
}


写入函数示例:

void IfxGeth_Phy_Clause22_writeMDIORegister(uint32 layerAddr, uint32 regAddr, uint32 data)
{
// 放置数据
GETH_MAC_MDIO_DATA.U = data;

// 5位物理层地址、5位GMII寄存器编号、4位时钟分频器、写、忙
GETH_MAC_MDIO_ADDRESS.U = (layerAddr << 21) | (regAddr << 16) | (0 << 😎 | (1 << 2) | (1 << 0);

IFXGETH_PHY_WAIT_GMII_READY();
}


这两个函数的实现可以在AURIX项目的相应文件中找到。

  • 介质独立接口配置方法
    第二种配置PHY的方法是通过介质独立接口直接进行。这种配置方法仅适用于快速介质独立接口,例如RGMII、SGMII和SMII,因为在这些情况下,MAC与PHY之间没有通过MDIO物理连接。在这种情况下,我们可以通过寄存器MAC_PHYIF_CONTROL_STATUS获取有关Link Status位(LNKSTS)的信息。
0 点赞
xiaoyang_code
Level 1
Level 1
First reply posted First question asked Welcome!

我在EB Tresos中配置的是RGMII接口的。

0 点赞
Di_W
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 100 likes received
0 点赞
xiaoyang_code
Level 1
Level 1
First reply posted First question asked Welcome!

您好,我用illd库有有一个工程,但是我发现的现象是一样的,我上述的两个寄存器并没有对应的值。并且我用劳特巴赫查看寄存器的时候是这样的

xiaoyang_code_0-1707098012994.png

 

0 点赞
Di_W
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 100 likes received
0 点赞
xiaoyang_code
Level 1
Level 1
First reply posted First question asked Welcome!

用的不是这个工程,我用你这试试,有结果了我会反馈给您,谢谢

0 点赞