
SMI接口主要是用于和外部PHY芯片通信,配置PHY寄存器用的。; ~1 |# U& r( c" I e$ V7 M7 P. q 真正网络通信的数据流并不是通过SMI接口传输的,是通过MII接口或者RMII通信的。$ t8 I: F& U7 z+ c8 |% s5 _ " Z3 J. }* g0 i4 @$ C) Z; v/ s8 s 1、MII接口 介质独立接口(MII) 定义了10 Mbit/s 和100 Mbit/s 的数据传输速率下MAC 子层与PHY 之间的互连。: n- ]- K+ K* ~& ^" h, y" ^. A( e ![]() 管脚定义介绍: 1.MII_TX_CLK:连续时钟信号。该信号提供进行 TX 数据传输时的参考时序。标称频率为:速率为 10 Mbit/s 时为 2.5 MHz;速率为 100 Mbit/s 时为 25 MHz。 . y0 R: u7 t5 ^8 K 2.MII_TXD[3:0]:数据发送信号。该信号是 4 个一组的数据信号,由 MAC 子层同步驱动,在MII_TX_EN 信号有效时才为有效信号(有效数据)。MII_TXD[0] 为最低有效位,MII_TXD[3] 为最高有效位。禁止MII_TX_EN 时,发送数据不会对 PHY 产生任何影响。8 V+ E) S$ k! A P. w, j3 g; l: G' ^$ J+ J- Y 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。( F' z" M3 h0 M# y ! `- r% `: F# Z; ?5 ~, i 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 的特定信息。 - d/ N$ Q9 n1 d( k) M% T 6.MII_RX_ER:接收错误信号。该信号必须保持一个或多个周期 (MII_RX_CLK),从而向MAC 子层指示在帧的某处检测到错误。该错误条件必须通过 MII_RX_DV验证。) M' k8 z* c" z. v% T1 T 7.MII_RX_DV:接收数据有效信号。该信号表示 PHY 当前正针对 MII 接收已恢复并解码的半字节。该信号必须与恢复帧的头半字节进行同步 (MII_RX_CLK),并且一直保持同步到恢复帧的最后半字节。该信号必须在最后半字节随后的第一个时钟周期之前禁止。为了正确地接收帧,MII_RX_DV 信号必须在时间范围上涵盖要接收的帧,其开始时间不得迟于 SFD 字段出现的时间。/ U* D1 G- b5 j2 D2 ]1 g' K ' E F% S8 k1 J0 d5 p( M 8.MII_CRS:载波侦听信号。当发送或接收介质处于非空闲状态时,由 PHY 使能该信号。发送和接收介质均处于空闲状态时,由 PHY 禁止该信号。PHY 必须确保 MII_CS 信号在冲突条件下保持有效状态。该信号无需与 TX 和 RX 时钟保持同步。在全双工模式下,该信号没意义。/ l0 C0 h& ^2 v& }1 w1 l8 J ) D8 L4 z- u8 N- M; |! t 9.MII_COL:冲突检测信号。检测到介质上存在冲突后,PHY 必须立即使能冲突检测信号,并且只要存在冲突条件,冲突检测信号必须保持有效状态。该信号无需与 TX 和 RX 时钟保持同步。在全双工模式下,该信号没意义。! _: O! g4 [4 z" Y) g! r1 z3 Q ! ^+ z5 d+ F8 i$ f9 J& P 10.MDC:MDC信号属于SMI接口 11.MDIO:MDIO信号属于SMI接口8 @/ L; O. r6 W: K2 l$ F 下图TX接口信号编码 8 a! ~/ X! z* P3 C; a5 Z, L+ o ![]() 下图RX 接口信号编码 ![]() 0 ?) P6 o4 }/ L9 g MII接口的时钟源# W5 \$ B E9 g4 c4 u6 w( U) W( P / ^4 V3 ^) h) K3 a# |1 d3 g 要生成TX_CLK 和RX_CLK 时钟信号,必须向外部PHY 提供25MHz 时钟,如图所 示。除了使用外部 25 MHz石英晶体提供该时钟,还可以通过STM32F20xx 微控制器的MCO引脚输出该信号。这种情况下,必须对PLL 倍频进行配置,以通过25 MHz 外部石英晶体在MCO 引脚上获得所需频率。: T4 f+ c5 l6 l* {' {8 r1 |! R ! O& I; s; N+ T$ Q8 d1 x/ P" Z- _9 N$ G ![]() 对应的代码$ Q0 d: j5 I1 x5 D" \1 A& k
2、RMII接口 Reduced media-independent interface: RMII(精简介质独立接口)。精简介质独立接口(RMII) 规范降低了10/100 Mbit/s 下微控制器以太网外设与外部PHY 间的引脚数。 根据IEEE 802.3u 标准,MII包括16 个数据和控制信号的引脚。RMII规范将引脚数减少为 7 个(引脚数减少62.5%)。引脚的含义参考MII接口即可。 ![]() 8 `) ?6 ?/ n4 |+ G% i2 a0 \ RMII接口是MAC和PHY之间的实例化对象。这些有助于MAC的MII接口转化为RMII接口。RMII接口具有以下特点 8 z( @, r( ~3 H J E 1.10-Mbit/s 和 100-Mbit/s 的运行速率 2.参考时钟必须是 50 MHz " A" x; K7 ^8 W7 O- Q6 \9 v 3.相同的参考时钟必须从外部提供给 MAC 和外部以太网 PHY0 T6 W8 R( Q, {+ G 4.它提供了独立的 2 位宽(双位)的发送和接收数据路径* Y x7 T0 n8 d) D8 s% h D 这里时钟管脚比MII接口少,有一个非常重要的点,那就是RMII接口时钟源必须是50MHZ* V) Y# g2 _& h/ O H& j RMII接口时钟源 STM32F207xx控制器可以从MCO引脚提供50MHz时钟信号,当然用户需要配置PLL来产生这一时钟。6 h" e8 d4 E( g ![]() 使用外部50 MHz 时钟驱动PHY 或使用嵌入式PLL 生成50 MHz 频率信号来驱动PHY。: h; g) B: ]; A. {$ i6 h, ~& @ 3、两种接口对应的引脚 STM32F207VCT6(100pin)的芯片
其中ETH_PPS_OUT这个管脚ST官方demo屏蔽,不属于MII接口也不属于RMII接口。下面不将其统计进入。4 l, [8 J5 P* `( |, v0 v + B" [& R$ W2 g# u5 S+ {- k MII 共15个接口加上SMI接口,共17个引脚。(没有包含25MHz时钟的引脚)# I6 o' b5 j% a7 C' P+ ?" p 6 s+ V" X+ j* v& ^# Q/ ~- h6 r ![]() ) m; _5 V8 @8 a% d# I% v$ q3 c# U RMII共7个接口加上SMI接口,共9个引脚。 ![]() 除了上述我自行统计的MII接口和RMII接口对应的pin之外,ST官方在参考手册也给出了对应图,如下:9 ^7 k N" Q' A$ F+ g ![]() : V+ L$ ]2 L2 ^5 z% S 4、MII和RMII的选择 使用SYSCFG_PMC 寄存器(注意:这里和F107不同,F107是AFIO_MAPR寄存器)中的23配置位MII_RMII_SEL选择MII 或RMII 模式。以太网控制器处于复位模式或使能时钟前,应用程序必须设置MII/RMII 模式。5 ]. ]' L$ A( B9 b' v8 p & r+ A) O4 Z4 |+ S, ? 对应的ST库函数为 Z; @- d. O* K) w
MII/RMII 内部时钟方案' p0 b" @% S4 x; s4 ?. V7 W$ t" E 支持MII 和RMII 以及10 和100 Mbit/s 运行所需的时钟方案,如下图所示。 6 e8 w& ^9 v+ `9 z ![]() 2 u0 w: k4 c3 d' {* d4 A 注意上图红框中:HCLK必须大于25MHz,这个问题点,在上一篇文章《STM32网络之SMI接口》中已经提到了,这里再次提到,如果不满足这个条件,可能会出现奇奇怪怪的问题,不好查找。& d* [, D4 d4 Q, [( n3 _ 7 Y- m3 [4 `) K: f7 c3 e 在官方手册中,还有一句 3 h* j" V5 Q: e" f8 X8 [. p3 C ![]() 1 D0 e. [; O6 l 要节省引脚,需在同一个GPIO 引脚上复用RMII_REF_CK 和MII_RX_CLK 这两个输入时钟信号。 * z9 t" v2 f0 U; e5 I# U. g; a2 q |
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化