单片机LWIP配置指南
配置工具:STM32CubeMX 6.2.1 (一些高版本缺少PHY部分配置)
1 LWIP简介
LWIP:是小型的开源TCP/IP协议栈。
LWIP可以做什么:云平台接入、无线网关、网络摄像头、远程模块。
在单片机中,LWIP协议实现了应用层、传输层、网络层的代码,数据链路层由MAC内核实现,物理层由PHY芯片实现。所以LWIP+MAC+PHY实现了TCP/IP模型。
2 MAC简介
STM32自带10/100Mbit/s的以太网MAC内核,他提供地址及媒体访问的控制方式。
MAC内核的特性:
(1)传输速率:支持外部PHY接口实现10/100Mbit/s数据传输速率。
(2)协议标准:符合IEEE802.3/3u的MII和RMII接口与快速以太网PHY特性。
(3)工作模式:全双工、半双工。
(4)站管理接口:支持通过MDIO接口配置和管理PHY设备。
3 ST的ETH框架
在单片机发送数据经过步骤如下:
(1)网络层数据以DMA方式发送到TX FIFO中;
(2)数据经过MAC内核处理;
(3)MAC内核处理后的数据以RMII/MII方式发送到外部PHY芯片;
(4)在PHY中数据转成光/电信号发往网络当中。
接收可以倒推。
TX FIFO和RX FIFO是2KB的原因:因为以太网传输中要求字节不能超过1500字节≈1.4KB,所以设置了2KB。
PHY交互接口
(1)数据通道:RMII/MII;
(2)管理通道:SMI(MDC、MDIO)
SMI站管理接口
允许应用程序通过时钟线和数据线访问任意PHY寄存器,最多支持32个PHY访问。
MDC:周期时钟引脚(最大频率为:2.5MHz)
MDIC:数据输入/输出比特流。
图中RXER/PHYAD0决定了PHY芯片的地址,接上拉其起止就为1,接下拉其地址就为0。
4 介质接口MII、RMII
用于MAC内核与外部PHY互联,支持10/100Mbit/s数据传输模式。
相同特性
(1)支持外部PHY实现10/100Mbit/s数据传输速率。
(2)符合IEEE802.3协议标准。
(3)…..
不同特性:
介质接口 | 引脚数量 | 参考时钟 | 发送的位宽 |
MII | 16 | 25MHz | 4位宽 |
RMII | 9 | 50MHz | 2位宽 |


MII中TX_CLK\RX_CLK的时钟由外部PHY提供。
(1)如果MAC的传输速率是10MBit/s,则这两根线的时钟就是2.5MHz;
(2)如果MAC的传输速率是100MBit/s,则这两根线的时钟就是25MHz。
RMII的时钟线REF_CLK是50MHz。
注意:RX_ER和RX_DV是用来检测以太网帧是否有效,而SRC和COL以及CRS_DV在全双工模式先是无效的。
图中PHY的时钟由HSE提供25MHz或者外部晶振提供25MHz,二者选其一,但是TX_CLK\RX_CLK具体是多少赫兹,要看MAC的传输速率,以此来做降频。
RMII的REF_CLK时钟有两个:MCO提供25MHz,经过PLL倍频为50MHz,或者由外部晶振提供。这个始终必须同时提供给MAC和PHY。
5 PHY芯片介绍
硬件角度解释,一般的PHY芯片为模数混合电路,负责接收电、光信号的模拟信号,经过解调和AD转换后,经过MII/RMII接口将这些信号交给MAC内核处理。
LAN8720A的PHY地址
RXER/PHYAD0(PIN10) | 地址 |
上拉 | 0x01 |
下拉(默认) | 0x00 |
RMII模式设置
(1)REF_CLK In模式:外部提供50MHz时钟连接到PHY芯片5号引脚以及RMII_REF_CLK.
(2)REF_CLK Out模式:外部提供25MHz时钟给PHY芯片,REF_CLK引脚输出50MHz.
RMII模式的选择呢由PHY2号引脚决定,为0:REF_CLK Out模式;为1:REF_CLK In模式。
PHY特殊功能寄存器
BCR的bit13:速度选择,10/100Mbps
bit8:设备全双工、半双工
6 STM32CubeMX配置
MX_LWIP_Process()
MX_LWIP_Process()
的主要作用是在STM32的系统循环中定期调用LwIP的tcpip_input()
函数,以处理网络事件。在LwIP协议栈中,网络数据的接收和发送、连接的建立和断开等操作都是异步的,需要通过定期调用tcpip_input()
来处理这些事件。
要注意的是,MX_LWIP_Process()
的调用频率应该足够高,以保证网络通信的实时性。如果调用频率过低,可能会导致网络延迟增加,甚至出现丢包等问题。在实际应用中,可以根据具体的网络需求和系统资源情况,调整MX_LWIP_Process()
的调用频率。
作者:xbclp