stm32以太网接口:MII和RMII

前言

使用stm32和lwip进行网络通信开发时,实现结构如下:

而MII和RMII就是stm32与PHY芯片之间的通信接口,类似于I2C、UART等。

stm32以太网模块有专用的DMA控制器,通过AHB接口将以太网内核和存储器相连。

数据发送时,先将数据从存储器以DMA传输到TX FIFO中进行缓冲,然后由MAC内核通过MII或RMII接口发送;

数据接收时,RX FIFO先通过MII或RMII接收以太网数据帧,再由DMA传输至存储器。

ETH功能系统框图如下:

MII和RMII用于连接stm32 MAC控制器和PHY芯片,提供数据传输路径。RMII接口是MII接口的简化版本,MII需要16跟通信线,RMII需要7根。

MII接口

MII接口连接示意图如下:

TX_CLK :为数据发送提供时钟信号,传输速率为10Mbit/s时,该时钟为2.5MHz,传输速率为100Mbit/s时,该时钟为25MHz(因为每次传4bit,所以时钟信号与传输速率之间是4倍关系)。
RX_CLK :为数据接收提供时钟信号,传输速率为10Mbit/s时,该时钟为2.5MHz,传输速率为100Mbit/s时,该时钟为25MHz。
TX_EN :数据发送使能信号,在整个数据发送过程中保持有效电平。
TXD[3:0] :数据发送数据线,每次发4bit数据,TXD[0]是数据最低位,TXD[3]是最高位。
RXD[3:0] :数据接收数据线,每次接收4bit数据,RXD[0]是数据最低位,RXD[3]是最高位。在RX_DV禁止、RX_ER使能时,PHY芯片会通过RXD[3:0]传输一组特殊数据,来告诉一些特殊信息。
RX_DV :接收数据有效信号,功能类似于TX_EN,由PHY芯片负责驱动。
RX_ER:接收错误信号线,由 PHY 驱动,向 MAC 控制器报告在帧某处检测到错误。

RMII接口

RMII接口示意图如下:

与MII接口相比区别如下:

1.接受数据线和发送数据线由4根变成了2根。

2.MII的CRS 和 RX_DV整合成RMII的CRS_DV 信号线。

3.没有了COL冲突检测信号。

4.没有了数据接收、发送时钟信号,取而代之的是REP_CLK时钟源。

SMI接口

在MII和RMII接口连接示意图中都有MDC和MDIO两个信号线,这两个信号线是SMI接口,类似与IIC,用于访问PHY芯片的寄存器。

SMI接口示意图如下:

MDC是周期性时钟信号,MDIO是数据输入输出线。

向PHY芯片寄存器写数据时序图如下:

从PHY芯片寄存器读数据时序图如下:

相关推荐
一个平凡而乐于分享的小比特2 小时前
UCOSIII笔记(十三)CPU利用率及栈检测统计与同时等待多个内核对象
笔记·ucosiii
oioihoii2 小时前
C++语言演进之路:从“C with Classes”到现代编程基石
java·c语言·c++
btzhy2 小时前
STM32单片机:基本定时器应用:单脉冲模式(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:单脉冲模式
YFLICKERH2 小时前
【加密协议】SSL/TLS 协议工作流程
网络协议·ssl/tls
摇滚侠3 小时前
2025最新 SpringCloud 教程,编写微服务 API,笔记08
笔记·spring cloud·微服务
文sir.3 小时前
温湿度采集系统(stm32+mqtt+Onenet云平台+esp8266)
stm32·单片机·嵌入式硬件·mqtt·onenet·云平台·esp8266
DIY机器人工房4 小时前
嵌入式面试题:你有没有用过直接基于TCP协议,不借助HTTP、MQTT这类上层协议的项目经历?
stm32·单片机·嵌入式硬件·面试题·diy机器人工房
我的老子姓彭5 小时前
N32WB蓝牙芯片开发
笔记
历程里程碑5 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
树在风中摇曳5 小时前
带哨兵位的双向循环链表详解(含 C 代码)+ LeetCode138 深度解析 + 顺序表 vs 链表缓存机制对比(图解 CPU 层级)
c语言·链表·缓存