PHY芯片的使用(一)之基本概念讲解(MDIO)3

1、MDIO概述

        该总线由IEEE通过以太网标准IEEE 802.3的若干条款加以定义。MDIO是一种简单的双线串行接口,将管理器件(如MAC控制器、微处理器)与具备管理功能的收发器(如多端口吉比特以太网收发器或 10GbE XAUI收发器)相连接,从而控制收发器并从收发器收集状态信息。可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、TX/RX模式选择、自动协商控制、环回模式控制等。除了拥有 IEEE 要求的功能之外,收发器厂商还可添加更多的信息收集功能。

        通常phy,它具备符合IEEE802.3u标准22款所规定的标准管理接口,它包含2个管脚:MDC和MDIO。MDC是管理数据的时钟输入,最高速率可达8.3MHz。MDIO是管理数据的输入输出双向接口,数据是与MDC时钟同步的。MDIO的工作流程为:MDIO接口在没有传输数据的空闲状态(IDLE)数据线MDIO处于高阻态。 MDIO出现一个2bit的开始标识码(01)一个读/写操作开始。 MDIO出现一个2bit数据来标识是读操作(10)还是写操作(01)。 MDIO出现一个5bit数据标识PHY的地址。 MDIO出现一个5bitPHY寄存器地址。 MDIO需要2个时钟的访问时间。 MDIO串行读出/写入16bit的寄存器数据。 MDIO恢复成IDLE状态,同时MDIO进入高阻状态。

       2、使用心得

       一个简单的两线串行接口,一根MDIO数据线,一根MDC时钟线。驱动程序可以通过 MDIO 和MDC 这两根线访问PHY芯片的任意一个寄存器。一个MDIO接口理论可外挂管理32个PHY芯片。在有条件通常情况使用一个MDIO管理一个PHY,这样可避免一些开发错误(尤其是在需要使用PHY厂商额外寄存器的时候)。

       IEEE802.3协议对PHY的前16个寄存器功能进行了规定,PHY须遵循这些规定。因此理论分析PHY的通用驱动都可正常初始化。通过对一些PHY芯片linux驱动观察,如下图两个国产芯片为例,只有针对对应PHY特殊寄存器的配置是厂商添加config额外配置(看了这两个函数,都对其延时值做了相关配置),其他接口函数均使用通用驱动即可。

PHY芯片的使用(一)之基本概念讲解(MDIO)3_第1张图片

PHY芯片的使用(一)之基本概念讲解(MDIO)3_第2张图片

PHY寄存器0和1是比较关键的,在板卡调试初期可根据相关寄存器的状态来排查问题。PHY硬件复位管脚最好上电根据手册参数复位一次(重要)。

寄存器中有一种寄存器叫页寄存器,通过配置该寄存器可切换不同的页,在切换页寄存后相应操作结束最好切回0页。在linux使用中发现,内核会周期通过MDIO读取link状态,笔者在linux shell中使用mdio命令切换页去读其他寄存器,系统会打印link down。切回0页后以太网正常。(这点也是值得注意的地方)

更快判断link up状态:通常在1寄存器的bit2可读网络状态,10M、100M可迅速响应。但1000M状态下响应很慢。对网口双冗余切换造成影响。(若有兴趣可私聊沟通)

       3、小结

最后想说一下,PHY的地址要根据手册配死,不要吧地址接到端口不确定的IO上,可能会出现初始化不成功或后期使用出问题。回环模式排查故障也是高效的方式。

希望大家多交流!

你可能感兴趣的:(芯片国产化,phy,mdio)