STM32网络之MII和RMII接口

目录

1、MII接口

2、RMII接口

3、两种接口对应的引脚

4、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 configuration
ETH_MDIO -------------------------> PA2  pin 25
ETH_MDC --------------------------> PC1  pin 16
ETH_PPS_OUT ----------------------> PB5  pin 91
ETH_MII_CRS ----------------------> PA0  pin 23
ETH_MII_COL ----------------------> PA3  pin 26
ETH_MII_RX_ER --------------------> PB10 pin 47
ETH_MII_RXD2 ---------------------> PB0  pin 35
ETH_MII_RXD3 ---------------------> PB1  pin 36
ETH_MII_TX_CLK -------------------> PC3  pin 18
ETH_MII_TXD2 ---------------------> PC2  pin 17
ETH_MII_TXD3 ---------------------> PB8  pin 95
ETH_MII_RX_CLK/ETH_RMII_REF_CLK---> PA1  pin 24
ETH_MII_RX_DV/ETH_RMII_CRS_DV ----> PA7  pin 32
ETH_MII_RXD0/ETH_RMII_RXD0 -------> PC4  pin 33
ETH_MII_RXD1/ETH_RMII_RXD1 -------> PC5  pin 34
ETH_MII_TX_EN/ETH_RMII_TX_EN -----> PB11 pin 48
ETH_MII_TXD0/ETH_RMII_TXD0 -------> PB12 pin 51
ETH_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 selected
void 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 这两个输入时钟信号。

点击查看本文所在的专辑,STM32F207网络开发

关注公众号,第一时间收到文章更新

  • 11
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: STM32Cube F407是一款集成了网络功能的微控制器开发板。它基于ARM Cortex-M4内核,具有丰富的外设和接口,可以广泛应用于各种网络应用。 首先,STM32Cube F407支持以太网连接,可以通过RJ45接口实现与网络的通信。它支持MIIRMII两种以太网物理层接口方式,可以根据需求选择适合的接口方式进行网络连接。同时,它还支持多种以太网通信协议,如TCP/IP、UDP、HTTP等,方便用户实现网络数据传输和应用开发。 除了以太网接口STM32Cube F407还具有其他网络连接方式。它支持串行外设接口(SPI)和串行外设接口(USART),可通过这些接口连接无线模块,实现WiFi或蓝牙等无线网络连接。通过这些无线模块,开发者可以实现与远程设备的无线通信和数据传输。 此外,STM32Cube F407还具有丰富的GPIO引脚和定时器等外设,可以方便地与各种网络设备进行连接和控制。开发者可以根据需求选择合适的引脚和外设,通过编程实现网络设备的控制和数据交互。 总结来说,STM32Cube F407是一款强大的网络开发板,集成了丰富的网络功能和接口,方便开发者实现各种网络应用。无论是有线网络还是无线网络,都可以通过该开发板快速实现网络连接和数据传输。 ### 回答2: STM32Cube F407是ST公司推出的一款基于ARM Cortex-M4内核的单片机系列,具有强大的处理能力和丰富的外设资源。在网络方面,STM32Cube F407可以通过以下几种方式实现网络功能: 1. 以太网(Ethernet):STM32Cube F407支持以太网接口,可以通过外部网络芯片或模块与网络进行通信。使用以太网接口,可以实现TCP/IP协议栈,支持TCP、UDP等网络协议,实现网络通信功能。 2. Wi-Fi:通过外部Wi-Fi模块,STM32Cube F407可以连接到无线网络。利用Wi-Fi功能,可以实现无线局域网(WLAN)功能,实现无线数据传输和远程控制等应用。 3. LoRaWAN:STM32Cube F407可以与外部LoRaWAN模块配合使用,实现低功耗广域网(LPWAN)通信。通过LoRaWAN功能,可以实现长距离、低功耗的物联网通信,适用于物联网应用中的节点通信和数据传输等场景。 4. 4G/5G通信模块:通过外部4G/5G通信模块,STM32Cube F407可以实现移动网络通信功能。利用4G/5G通信模块,可以实现高速数据传输和移动互联网接入,适用于移动智能终端等应用。 总的来说,STM32Cube F407具有丰富的网络通信功能,可以通过以太网、Wi-Fi、LoRaWAN、4G/5G等方式实现与网络的连接和通信。这使得STM32Cube F407可以广泛应用于物联网、智能家居、工业控制等领域,满足各种网络通信需求。 ### 回答3: STM32Cube F4系列是意法半导体(STMicroelectronics)推出的一款基于ARM Cortex-M4内核的微控制器系列,具有强大的计算能力和丰富的外设功能。这些微控制器适用于各种应用,包括工业自动化、可穿戴设备、医疗设备等。 对于网络方面,STM32Cube F407系列提供了多种网络接口和协议,使其成为物联网(IoT)应用的理想选择。首先,它具有以太网接口,支持传统的有线网络连接。此外,STM32Cube F407还配备了WIFI和蓝牙接口,支持无线网络连接。这使得它可以轻松地与其他设备进行通信和数据交换。 在网络协议方面,STM32Cube F407支持多种常用的协议,例如TCP/IP、HTTP、FTP等,使开发人员能够快速构建网络应用。此外,它还提供了丰富的安全功能,包括TLS/SSL协议支持和数据加密功能,以确保通信的安全性。 除了网络接口和协议外,STM32Cube F407还提供了丰富的软件支持。ST官方提供了STM32Cube软件包,其中包含了针对STM32Cube F407的各种驱动程序和软件库。这些软件资源简化了开发过程,加速了应用开发的进程。 总之,STM32Cube F407是一款功能强大且灵活的微控制器,适用于各种网络应用。它提供了多种网络接口和协议,并且具备安全性和软件支持等方面的优势,使得开发人员可以轻松构建复杂的网络应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongercjd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值