MII的英文Medium Independent Interface的缩写,翻译成中文是“介质独立接口”,MII接口一般应用于以太网硬件平台的MAC层和PHY层之间,MAC层一般采用带有MAC的单片来完成、当然市面上也有如W5500之类的芯片提供了片外MAC的功能。MII接口的类型有很多,如:MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等;但对于MCU单片机而言,常用的有MII、RMII。
主要有以下几个信号:
必须信号:
TX_CLK:发送数据时钟,由PHY输出到MAC;
RX_CLK:接收数据时钟,由PHY输出到MAC;
TXD[3-0]:发送数据,有4个信号,从MAC输出到PHY的TXD[3-0],当TX_EN为高电平时发出;
RXD[3-0]:接收数据,有4个信号,从PHY输出到MAC的RXD[3-0],当RX_EN/RX_DV为高电平时发出;
TX_EN:从MAC输出到PHY的TX_EN,高电平开始发送数据,在高电平到来时,第一个TX_CLK上升沿开始发送数据给PHY;
RX_DV:高电表示接收到有效数据;在高电平到来时,第一个RX_CLK上升沿开始发送数据到MAC;
可选信号:(我在用STM32+SWITCH芯片实现时,1000Mbps SWITCH芯片本身就没有这些信号)
TX_ER:发送数据出错,由MAC控制输出到PHY的TX_ER,部分MAC或PHY芯片没有此功能;如果数据送过程中出现高电平,表示数据出错;1000Mbps芯片对于100Mbps速率以下,TX_ER不起作用;100Mbps芯片对于10Mbps速率下,TX_ER不起作用;
RX_ER:接收数据出错,由PHY控制,部分芯片没有此功能;在没有作用信号时,MAC对应信号要接到低电平;如果数据输出过程中出现高电平,表示数据出错;1000Mbps芯片对于100Mbps速率以下,RX_ER不起作用;100Mbps芯片对于10Mbps速率下,RX_ER不起作用;
CRS:载波侦测信号,不需要同步于参考时钟,只要有数据传输,CRS就有效,另外,CRS只有PHY在半双工模式下有效;芯片没有些信号时,只能实现全双工;
COL:冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效;芯片没有些信号时,只能实现全双工;
必须但可替换信号:(部分芯片采用I2C、SPI等)
MDC:对PHY芯片寄存器操作的时钟信号;
MDIO:对PHY芯片寄存器操作的数据信号;
在实际应用中,最少要用到MDC、MDIO和TX_CLK、RX_CLK、TXD[3-0]、RXD[3-0]、TX_EN、RX_DV共14个信号;