STM32网络之MII和RMII接口

在上篇文章《STM32网络之SMI接口》中,我们介绍了STM32网络控制器的SMI接口,SMI接口主要是用于和外部PHY芯片通信,配置PHY寄存器用的。

真正网络通信的数据流并不是通过SMI接口传输的,是通过MII接口或者RMII通信的。

1

MII接口

介质独立接口(MII) 定义了10 Mbit/s 和100 Mbit/s 的数据传输速率下MAC 子层与PHY 之间的互连。

管脚定义介绍:

  1. MII_TX_CLK:连续时钟信号。该信号提供进行TX 数据传输时的参考时序。标称频率为:速率为10 Mbit/s 时为2.5 MHz;速率为100 Mbit/s 时为25 MHz。

  2. MII_TXD[3:0]:数据发送信号。该信号是4 个一组的数据信号,由MAC 子层同步驱动,在MII_TX_EN信号有效时才为有效信号(有效数据)。MII_TXD[0]为最低有效位,MII_TXD[3]为最高有效位。禁止MII_TX_EN时,发送数据不会对PHY 产生任何影响。

  3. MII_TX_EN:发送使能信号。该信号表示MAC 当前正针对MII 发送半字节。该信号必须与报头的前半字节进行同步(MII_TX_CLK),并在所有待发送的半字节均发送到MII时必须保持同步。

  4. MII_RX_CLK:连续时钟信号。该信号提供进行RX 数据传输时的参考时序。标称频率为:速率为10 Mbit/s 时为2.5 MHz;速率为100 Mbit/s 时为25 MHz。

  5. MII_RXD[3:0]:数据接收信号。该信号是4 个一组的数据信号,由PHY 同步驱动,在MII_RX_DV信号有效时才为有效信号(有效数据)。MII_RXD[0]为最低有效位,MII_RXD[3]为最高有效位。当MII_RX_DV 禁止、MII_RX_ER使能时,特定的MII_RXD[3:0]值用于传输来自PHY 的特定信息。

  6. MII_RX_ER:接收错误信号。该信号必须保持一个或多个周期(MII_RX_CLK),从而向MAC子层指示在帧的某处检测到错误。该错误条件必须通过MII_RX_DV验证。

  7. MII_RX_DV:接收数据有效信号。该信号表示PHY 当前正针对MII 接收已恢复并解码的半字节。该信号必须与恢复帧的头半字节进行同步(MII_RX_CLK),并且一直保持同步到恢复帧的最后半字节。该信号必须在最后半字节随后的第一个时钟周期之前禁止。为了正确地接收帧,MII_RX_DV信号必须在时间范围上涵盖要接收的帧,其开始时间不得迟于SFD 字段出现的时间。

  8. MII_CRS:载波侦听信号。当发送或接收介质处于非空闲状态时,由PHY 使能该信号。发送和接收介质均处于空闲状态时,由PHY 禁止该信号。PHY必须确保MII_CS 信号在冲突条件下保持有效状态。该信号无需与TX 和RX 时钟保持同步。在全双工模式下,该信号没意义。

  9. MII_COL:冲突检测信号。检测到介质上存在冲突后,PHY必须立即使能冲突检测信号,并且只要存在冲突条件,冲突检测信号必须保持有效状态。该信号无需与TX 和RX 时钟保持同步。在全双工模式下,该信号没意义。

  10. MDC:MDC信号属于SMI接口,具体请看《STM32网络之SMI接口》。

  11. MDIO:MDIO信号属于SMI接口,具体请看《STM32网络之SMI接口》。

下图TX接口信号编码

下图RX 接口信号编码

MII接口的时钟源

要生成TX_CLK 和RX_CLK 时钟信号,必须向外部PHY 提供25MHz 时钟,如图所 示。除了使用外部 25 MHz石英晶体提供该时钟,还可以通过STM32F20xx 微控制器的MCO引脚输出该信号。这种情况下,必须对PLL 倍频进行配置,以通过25 MHz 外部石英晶体在MCO 引脚上获得所需频率。

对应的代码

/* Enable GPIOs clocks */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
/* Enable SYSCFG clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* Configure MCO (PA8) */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; GPIO_Init(GPIOA, &GPIO_InitStructure);/* Output HSE clock (25MHz) on MCO pin (PA8) to clock the PHY */RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_1);
2

RMII接口

Reduced media-independent interface: RMII(精简介质独立接口)。精简介质独立接口(RMII) 规范降低了10/100 Mbit/s 下微控制器以太网外设与外部PHY 间的引脚数。

根据IEEE 802.3u 标准,MII包括16 个数据和控制信号的引脚。RMII规范将引脚数减少为 7 个(引脚数减少62.5%)。引脚的含义参考MII接口即可。

RMII接口是MAC和PHY之间的实例化对象。这些有助于MAC的MII接口转化为RMII接口。RMII接口具有以下特点

  1. 10-Mbit/s 和100-Mbit/s 的运行速率

  2. 参考时钟必须是50 MHz

  3. 相同的参考时钟必须从外部提供给MAC 和外部以太网PHY

  4. 它提供了独立的2 位宽(双位)的发送和接收数据路径

这里时钟管脚比MII接口少,有一个非常重要的点,那就是RMII接口时钟源必须是50MHZ

RMII接口时钟源

STM32F207xx控制器可以从MCO引脚提供50MHz时钟信号,当然用户需要配置PLL来产生这一时钟。

使用外部50 MHz 时钟驱动PHY 或使用嵌入式PLL 生成50 MHz 频率信号来驱动PHY。

3

两种接口对应的引脚

STM32F207VCT6(100pin)的芯片

Ethernet pins configurationETH_MDIO -------------------------> PA2  pin 25ETH_MDC --------------------------> PC1  pin 16ETH_PPS_OUT ----------------------> PB5  pin 91ETH_MII_CRS ----------------------> PA0  pin 23ETH_MII_COL ----------------------> PA3  pin 26ETH_MII_RX_ER --------------------> PB10 pin 47ETH_MII_RXD2 ---------------------> PB0  pin 35ETH_MII_RXD3 ---------------------> PB1  pin 36ETH_MII_TX_CLK -------------------> PC3  pin 18ETH_MII_TXD2 ---------------------> PC2  pin 17ETH_MII_TXD3 ---------------------> PB8  pin 95ETH_MII_RX_CLK/ETH_RMII_REF_CLK---> PA1  pin 24ETH_MII_RX_DV/ETH_RMII_CRS_DV ----> PA7  pin 32ETH_MII_RXD0/ETH_RMII_RXD0 -------> PC4  pin 33ETH_MII_RXD1/ETH_RMII_RXD1 -------> PC5  pin 34ETH_MII_TX_EN/ETH_RMII_TX_EN -----> PB11 pin 48ETH_MII_TXD0/ETH_RMII_TXD0 -------> PB12 pin 51ETH_MII_TXD1/ETH_RMII_TXD1 -------> PB13 pin 52

其中ETH_PPS_OUT这个管脚ST官方demo屏蔽,不属于MII接口也不属于RMII接口。下面不将其统计进入。

MII 共15个接口加上SMI接口,共17个引脚。(没有包含25MHz时钟的引脚)

RMII共7个接口加上SMI接口,共9个引脚。

除了上述我自行统计的MII接口和RMII接口对应的pin之外,ST官方在参考手册也给出了对应图,如下:

4

MII和RMII的选择

使用SYSCFG_PMC 寄存器(注意:这里和F107不同,F107是AFIO_MAPR寄存器)中的23配置位MII_RMII_SEL选择MII 或RMII 模式。以太网控制器处于复位模式或使能时钟前,应用程序必须设置MII/RMII 模式。

对应的ST库函数为

//函数入参可选以下//SYSCFG_ETH_MediaInterface_MII: MII mode selected//SYSCFG_ETH_MediaInterface_RMII: RMII mode selectedvoid SYSCFG_ETH_MediaInterfaceConfig(uint32_t SYSCFG_ETH_MediaInterface)

MII/RMII 内部时钟方案

支持MII 和RMII 以及10 和100 Mbit/s 运行所需的时钟方案,如下图所示。

注意上图红框中:HCLK必须大于25MHz,这个问题点,在上一篇文章《STM32网络之SMI接口》中已经提到了,这里再次提到,如果不满足这个条件,可能会出现奇奇怪怪的问题,不好查找。

在官方手册中,还有一句

要节省引脚,需在同一个GPIO 引脚上复用RMII_REF_CK 和MII_RX_CLK 这两个输入时钟信号。

(0)

相关推荐

  • 车载以太网——新一代EEA的主干网

    车载以太网——新一代EEA的主干网

  • 探究关于原语的千兆以太网RGMII接口设计

    之前介绍MII接口时,有介绍过RGMII接口的由来,下面在贴一下: 表8‑7 MII接口介绍 RGMII是GMII的简化版本,发送端信号:TXD[3:0]. TX_CLK.TX_EN,接收端信号:RX ...

  • 【学术论文】基于实时工业以太网的脉冲发生器

    摘要: 脉冲发生器广泛应用于电力电子.运动控制.车辆控制等场合,是设备驱动和控制的基础通用部件,但目前脉冲发生器的网络通信能力较弱,无法满足高速控制需求,难以集成到智能制造系统.针对该问题,基于实时工 ...

  • 带你走进网络世界交换篇——交换机接口的故事

    VLAN基本概念 ●一个VLAN中所有设备都是在同一广播域内,不同的VLAN为不同的广播域 ●VLAN之间互相隔离,广播不能跨越VLAN传播,因此不同VLAN之间的设备一般无法互访,不同VLAN间需通 ...

  • STM32网络电路设计

    在之前的推文中<STM32网络之SMI接口><STM32网络之MII和RMII接口>,介绍了STM32以太网和外部PHY的所有接口. 如果有同学对SMI,MII和RMII接口不 ...

  • 网络交换机接口知识总结!都认识的已是高手了

    交换机是使用非常广泛的网络设备,多台网络设备的局域网,交换机是必不可少的设备. 各种交换机接口 交换机的接口非常丰富,这里是一些整理的资料,与大家分享. 1.RJ-45接口 这种接口就是我们现在最常见 ...

  • 网络交换机上各种接口知识大全

    网络交换机上各种接口知识大全

  • 网络交换机接口知识!看看你到底了解几个?

    交换机是使用非常广泛的网络设备,多台网络设备的局域网,交换机是必不可少的设备. 各种交换机接口 交换机的接口非常丰富,这里是一些整理的资料,与大家分享. 1.RJ-45接口 这种接口就是我们现在最常见 ...

  • 网络交换机上各种接口你都认识吗

    不少朋友问到,交换机的接口都是什么意思?这个问题问的好. 交换机是一种用于电(光)信号转发的网络设备.可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机.其他常见的还 ...

  • 弱电工程网络交换机上各种接口知识汇总

    今天我们一起来看下,可能在实际工作中遇到的各种类型的交换机接口的介绍.交换机的接口非常丰富,这里是一些整理的资料,与大家分享. 1.RJ-45接口 这种接口就是我们现在最常见的网络设备接口,俗称'水晶 ...

  • 编码器是什么?STM32编码器接口及应用编程

    编码器是一种比较常见的产品(也可以理解为传感器),最常见的就是配合电机一起工作,那么,你对编码器有多了解呢? 一.关于编码器 编码器的种类有很多:增量式编码器.绝对值编码器,有轴或者无轴编码器,电压输 ...

  • 数字麦克风PDM信号采集与STM32 I2S接口应用(一)

    数字麦克风采用MEMS技术,将声波信号转换为数字采样信号,由单芯片实现采样量化编码,一般而言数字麦克风的输出有PDM麦克风和PCM麦克风,由于PDM麦克风结构.工艺简单而大量应用,在使用中要注意这二者 ...