Linux ARM平台开发系列讲解(网络篇)1.1 SMI 接口(MDIO)及其协议讲解

1. 嵌入式以太网组成

嵌入式以太网的硬件,分为两块,第一是MAC,第二是PHY。当然,在调试以太网以前,CPU和DDR、相关总线都要工作正常。MAC和PHY之间,有两个接口,第一是数据接口,可能是MII、GMII、RGMII、SGMII等;第二是管理接口,MDIO总线。数据接口用于传输数据。对RGMII而言,如果以太网工作在1000M,频率是125MHz;如果以太网工作在100M,频率是25MHz。MDIO是类似IIC的总线,MAC提供时钟MDC,数据线MDIO是双向的,既可以读PHY的寄存器,也可以写PHY的寄存器。

2. SMI

2.1 SMI接口

  • SMI 串⾏管理接⼝(Serial Management Interface),也被称作MII管理接⼝(MII Management Interface),包括MDC和MDIO两条信号线。MDIO是⼀个PHY的管理接⼝,⽤来读/写PHY的寄存器,以控制PHY的⾏为或获取PHY的状态,MDC为MDIO提供时钟。

  • MDC 为SMI通信提供时钟,可达到几MHZ,具体使用情况根据设备而定。

  • MDIO 数据的双向输入输出总线,与MDC时钟同步。

2.2 SMI协议

2.2.1 概述

MDIO前后有两种协议, 包括之前的Clause22 以及之后为了弥补Clause22 寄存器空间不⾜⽽出的Clause45, Clause 45 向前兼容

2.2.2.1 Clause22

  • Clause22 时序图

Linux ARM平台开发系列讲解(网络篇)1.1 SMI 接口(MDIO)及其协议讲解_第1张图片

STAStation Management
MMDMDIO Managed Device
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⽆源驱动,处⾼阻状态。

2.2.2.2 Clause45

  • Clause45 时序图
    Linux ARM平台开发系列讲解(网络篇)1.1 SMI 接口(MDIO)及其协议讲解_第2张图片
    Linux ARM平台开发系列讲解(网络篇)1.1 SMI 接口(MDIO)及其协议讲解_第3张图片
    STA: Station Management
    MMD: MDIO Managed Device
    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⽆源驱动,处⾼阻状态。

返回总目录

你可能感兴趣的:(Linux,ARM平台从入门到精通,网络,linux,arm)