S32K3+lwip裸机(三)调用MDIO读取配置PHY寄存器
什么是MDIO
MDIO是单片机与以太网通讯的桥梁,通过MIDO总线可以读取PHY寄存器和写入PHY寄存器
MDIO分为时钟线(MDC)和数据线(MDI0),MDC的时钟线
MDIO两种通讯格式
MDIO分为Clause22和Clasuse45,寄存器比较多的千兆以太网选用Clasuse45的比较多,普通百兆一般选择Clause22通讯。
C
Clause22的格式如上图
PRE:帧前导码,为32个连续“1”比特。
ST:帧开始标志, Clause22 的开始标志为比特“01”。
OP:操作码,CL22中比特“10”表示此帧为一读操作帧,比特“01”表示此帧为一写操作帧。
PHYAD:MMD的物理地址,5个比特,每个MMD都把自己的地址与这5个比特进行比较,若匹配则响应后面的操作,若不匹配,则忽略掉后面的操作。
REGAD:用来选MMD的32个寄存器中的某个寄存器的地址。
TA:状态转换域,若为读操作,则第一比特时MDIO为高阻态,第二比特时由MMD使MDIO置“0”。若为写操作,则MDIO仍由STA控制,连续输出“10”两个比特。
DATA:帧的寄存器的数据域,16比特,若为读操作,则为MMD送到STA的数据,若为写操作,则为STA送到MMD数据。
IDLE:帧结束后的空闲状态,此时MDIO无源驱动,处高阻状态。
PRE:帧前导码,为32个连续“1”比特。
ST:帧开始标志, 为了区别CL22,Clause45 的开始标志为比特“00”。
OP:操作码,Clause45有4种操作码,比特“00”表示设置当前寄存器地址,比特“01”表示写当前寄存器。比特“10”表示读当前寄存器,比特“11”表示读当前寄存器读完后把当前寄存器的值加1,用于顺序读。
PRTAD:Port Address,端口地址, 也称物理地址。
DEVAD:器件地址,CL45新增概念,各值与器件对应如下。
REGAD:用来选MMD的65536个寄存器中的某个寄存器的地址。
TA:状态转换域,若为读操作,则第一比特时MDIO为高阻态,第二比特时由MMD使MDIO置“0”。若为写操作,则MDIO仍由STA控制,连续输出“10”两个比特。
DATA:帧的寄存器的数据域,16比特,若为读操作,则为MMD送到STA的数据,若为写操作,则为STA送到MMD数据。
IDLE:帧结束后的空闲状态,此时MDIO无源驱动,处高阻状态
MDIO的时钟来源为单片机的内核分频,在不接PHY的情况下仍可以输出
PHY的寄存器定义数量有限,后面厂家为更多的配置开启了扩展功能
register 0,其中有REST 和SPEED;
register 17,其中有link连接,模式;
register 23,其中有link_up状态,LOC_RCVR_STATUS , PHY_STATE;