PHY芯片快速深度理解
摘要:
什么是phy 为什么要熟悉RJ45网口 网络七层协议 两个模块进行通信 什么是MDIO协议 MDIO的作用 MDIO没那么重要 MDIO读写时序 为什么说读取的phy最多32个
mido协议即SMI协议,SMI协议也是一种通信协议类似与I2C协议但是通信方式不一样。SMI包含两根信号线,一个MDC时钟线,一个MDIO双向传输的数据线,
如图为SMI应用框图。STA设备通过MDIO接口与PHY通信。STA(StaTIon Management)为主控设备,比如MCU、MAC、ONU等。PHY为从设备。一个STA最多管理32个PHY。MDC信号由STA控制,MDIO信号根据通信方式的不同可以由STA或者PHY接管控制。如图通常MDIO会接一个电阻上拉至接口电源。
MDIO没那么重要
MDIO在上面说到的两个模块通信,我提到了 arm芯片和网卡芯片直接需要,那么这个真的有必要吗?其实没必要连接!!!
换个话说 不连接也可以使得网络畅通,因为网络的数据传输时靠RGMII不是靠MDIO,MDIO的作用仅仅只是用来查看一些状态和功能,还有简单的控制,而这些简单的控制是完全可以有网卡芯片内置去写死,arm层只要和网卡的写的一直就可以通讯。
但是为什么很多时候需要通过mdio来进行读写控制,这个只是在网络通讯正常后的升级优化,用来方便查看状态,就像写了个前端网页来看后台数据。
如果mido没有读通,或者读取的数据是0xfffff,那么不一定是mdio的问题,很多时候是网卡本身没有启动!
MDIO读写时序
Preamble:32bits的前导码
Start:2bit的开始位。
OP Code:2bits的操作码,10表示读,01表示写。
PHYAD:5bits的PHY地址。
REGAD:5bits的寄存器地址,即要读或写的寄存器。
Turn Around:2bits的TA,在读命令中,MDIO在此时由MAC驱动改为PHY驱动,并等待一个时钟周期准备发送数据。在写命令中,不需要MDIO方向发生变化,则只是等待两个时钟周期准备写入数据。
Data:16bits数据,在读命令中,PHY芯片将读到的对应PHYAD的REGAD寄存器的数据写到Data中,在写命令中,MAC将要写入对应PHYAD的REGAD寄存器的值写入Data中。
Idle:空闲状态,此时MDIO无源驱动,处高阻状态,但一般用上拉电阻使其处在高电平,上拉电阻一般为1.5K。
为什么说读取的phy最多32个