Embeded Linux 之 PHY

一、介绍

PHY是IEEE802.3中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC或CPU)通过SMI(Serial Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器,使用细节后面描述),IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义。

二、PHY一般具备两种接口:

1.数据接口:千兆RGMII、百兆或十兆RMIIMII

  用来传输网络数据。

  TXC由MAC产生,RXC由PHY产生。

  TXC与RXC在千兆网络为125MHz,TXC与RXC在百兆网络为25MHz,TXC与RXC在十兆网络为2.5MHz。

   TXD[3:0] 和RXD[3:0] 数据传输时在时钟的边沿进行采样。

2.管理接口:数据MDIO和时钟MDC

  用来访问PHY寄存器。

举例读写时序图(RTL8211F):  

 三、访问寄存器:

  PHY寄存器一般分为标准寄存器和厂商扩展寄存器。

  标准寄存器:

  厂商扩展寄存器:

  一般使用分页操作,比如RTL8211F增加三个LED指示灯,位于Page 0xd04,addr 16寄存器。

  

  

  

  比如LED0为RJ45 link灯 LED1为RJ45 active灯,则可以通过MDIO设置:

  mdio_write (mii_name, phy_addr, 0x1f, 0xd04);//页选择
  mdio_write (mii_name, phy_addr, 0x10, 0x36b);//灯选择

原文地址:https://www.cnblogs.com/pokerface/p/7886743.html