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

MDIO是一种用于连接管理器件和收发器的串行接口,用于控制收发器和收集状态信息,如链接状态和速度。PHY芯片有预定义的寄存器,其通用驱动可正常初始化,但厂商可能添加额外配置。在调试时,PHY的硬件复位和页寄存器的使用很重要,且注意切换页可能影响link状态检测。PHY地址应固定,避免初始化问题。文章强调了MDIO在以太网设备管理和故障排查中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

       3、小结

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

希望大家多交流!

评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特流1024

1毛也是支持也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值