MAC内核+外部PHY
以太网接入MCU方案
以太网接入是嵌入式开发必不开的东西,那么目前主要有两种方式,“软件TCP/IP协议栈接入以太网方案”以及“硬件TCP/IP协议栈以太网接入方案”。
目前软件TCP/IP协议栈比较广泛。
软件TCP/IP协议栈接入以太网方案
这种以太网接入方案是LwIP+MAC内核+PHY层芯片共同实现的,用于实现以太网的物理连接。这个最有逼格!

其中要求你的MCU要有MAC内核,太垃圾的不太行。
缺点就是要求主控比较牛一些,最起码有MAC内核,内存大一些;并且软件协议栈网络可能被攻击修改。
硬件TCP/IP协议栈以太网接入方案
这种方案提供了一套完整的硬件化以太网解决方案,如果技术小白或者没要求,可以盲选这个了。

优点不用多说,缺点就是如果TCP/IP添加协议栈比较麻烦,而且接收受接口速率限制。
STM32的MAC内核是一个MAC控制器,用于实现以太网通信,符合IEEE802.3标准,支持10M/100Mbit的数据传输速率,提供了地址和媒体访问控制方式。
STM32是没有PHY部分,因为PHY是纯模拟电路,对芯片的整体功耗等方面有影响,但是现在沁恒微的芯片内置了PHY。
STM32的MAC内核与TCP/IP协议栈的层次联系主要体现在网络层和链路岑。MAC内核作为链路层设备,负责和物理层(PHY)进行通信。同时MAC内核还可以通过配置和管理PHY设备,实现网络设备的地址解析和数据包路由等功能。 所以MAC内核即负责与PHY的数据传输(MII/RMMI接口)也可以管理PHY(SMI接口)。

以太网DMA是网络层和数据链层的中间桥梁,是利用存储器到存储器方式传输。
对外部PHY分为两部分:
- RMII与MII是MAC 内核与PHY芯片的数据交互通道,用来传输以太网数据。
- MDC和MDIO是MAC内核对PHY芯片的管理和配置,是站管理接口(SMI)所需的通信引脚。
MAC内核
SMI
站管理接口(SMI)允许应用程序通过2条线:时钟(MDC)和数据线(MDIO)访问任意PHY寄存器;该接口支持挂32个PHY。但是每一次只能对某一个PHY的某一个寄存器进行操作。在MAC对PHY进行读写操作的时候,应用程序不能修改MII的寄存器。

发送格式主要有,报头、起始位、操作符、PHY地址、寄存器地址、周期字段、数据位、空闲。

介质独立接口MII

MII时钟源
要生成TX_CLK和RX_CLK时钟信号,必须向外部PHY提供25MHz时钟;有两种方式:外部晶振和F4内部的MCO引脚。
TX_CLK和RX_CLK的时钟速率跟传输速率有关,10Mbit/s时为2.5MHz,100bit/s时为25MHz。
精简介质独立接口RMII
相比MII精简的地方在于减少了引脚数量,从16个引脚减少到7个。RMII通常只用两跟线来传输数据。对于10M线速,RMII速率为5M而MII的速率是2.5M。
速率是时钟的速率,核心是通过 “时钟频率 × 每时钟传输位数” 来达到目标线速
RMII 接口是 MAC 和 PHY 之间的实例化对象。这有助于将 MAC 的 MII 转换为 RMII。
RMII要注意的是:
- 参考时钟必须要50Hz
- 相同的参考时钟必须从外部提供内MAC内核和PHY

RMII时钟源
使用外部50MH时钟驱动PHY。
LAN8720A支持25MHz,可以降低成本。
外部PHY
这里只说LAN8720A。其他的国产的版本或者啥的自己找资料吧。
这一标题下的外部PHY统一表示LAN8720A。
外部PHY是一种低功耗的单端口10/100Mbps以太网PHY芯片。

PHY芯片是必须要规范化的,是一定遵守IEEE802.3规范的,所以所有的PHY芯片型号的前0-15个寄存器属性都是规定好的,后面的寄存器才是PHY厂商自定义的。
PHY地址设置
之前提到MAC内核可以通过SMI接口管理32个PHY,那么怎么区分呢?类似IIC的设备地址,PHY也有地址。
对于外部PHY,有RXER/PHYAD0引脚来设置PHY地址。
nINT/REFCLKO
该引脚用于设置nINT/REFCLKO的功能
之前提到其为了降低成本,支持外部25MHz晶振产生REF_CLK时钟。前提是nINT/REFCLKO必须为out模式。


内部寄存器
内部有很多。比较重要的是BCR(0)、BSR(1)和31寄存器。其他的话就自己去看手册了解吧。
BCR

BSR

特殊状态寄存器

相关文章
LwIP的网卡管理
> 注意netif就是指网卡,即网络接口 netif结构体 之前提到过**网卡是硬件接口**,LwIP是软件,那么怎么实现让硬件和软件无缝连接一起呢?并且软件如何兼容不同的硬件呢? **在LwIP中使用一个数据结构——netif来描述一个网卡**;这是因为网卡多种多样,比如:WiFi、以太网;以及还有各种的以太网的驱动,比如LAN8720。所以LwIP将无法统一的部分进行了抽象;但是底层接口...
PHY从物理层到MAC层的核心原理
以太网介绍:从物理层到MAC子层的核心原理 以太网(Ethernet)是当前应用最广泛的局域网技术,因其在组网领域的高占比,常被大众直接等同于“互联网”。实际上,它是遵循**IEEE 802.3标准**构建的局域网技术,核心定义集中在OSI参考模型的**物理层(PHY)** 与**数据链路层的介质访问控制子层(MAC)**,小到学校的PC局域网(用水晶头网线连接),大到企业的局部网络,都以以太网为...
LwIP开发分享(二)—— 三种编程接口
LwIP的三种编程接口 LwIP作为轻量级TCP/IP协议栈,提供了三种不同层级的编程接口,分别是**RAW/Callback API**、**NETCONN API**和**SOCKET API**。这些接口在易用性和执行效率上呈现互补关系:**易用性从左到右依次提高,而执行效率从左到右依次降低**(即最易用的接口牺牲了部分效率)。 一、RAW/Callback API(内核回调接口)...