LWIP学习记录2——MAC内核

一、MAC简介

stm32自带有10/100Mbit/s的以太网MAC内核,他提供地址以及媒体访问的控制方式。

MAC内核特性:

传输速率:支持外部PHY接口实现10/100Mbit/s数据传输速率;

协议标准:符合IEEE802.3/3u的MII和RMII接口与快速以太网PHY通信;

工作模式:支持全双工和半双工操作;

站管理接口:支持通过MDIO接口配置和管理PHY设备;

MAC内核是单片机自带,比如STM32F4/STM32H7,这些单片机自带了MAC内核;

当然有些单片机是不带MAC内核,所以不带MAC内核的单片机要做怎么进行通讯,据我之前所了解需要购买带MAC内核的PHY芯片

二、STM32的ETH框架

按照从左向右的顺序介绍:

  • 以太网DMA数据包以DMA方式发送/接收
  • MAC内核以太网帧发送时,给数据加上一些控制信息;以太网接收时,去掉控制信息;
  • PHY交互接口:数据通道------介质接口RMII/MII;管理通道------SMI站管理接口。

三、SMI站管理接口

允许应用程序通过时钟线和数据线访问任意PHY寄存器,最多支持32个PHY访问

  • MDC:周期始终引脚(最大频率为2.5MHz);
  • MDIO:数据输入/输出比特流。

也就是STM32这个MAC内核最多能够控制32个PHY芯片,这个总线其实跟IIC类似,那么肯定有地址控制。

1、SMI帧格式

  • PADDR:PHY地址(00_1F);
  • RADDR:寄存器地址(00_1F);
  • 数据位:16位数据位(PHY寄存器都是16位)。
  • 下图可看出PADDR是5位,最多控制32个,所以只要我们将PHY芯片地址设置好,就可控制多个PHY芯片。

MDIO时序和帧结构------写周期

2、MDC时钟来自哪里?

MDC的时钟来自于stm32内部,是通过AHB时钟树分频得到的。

四、介质接口MII与RMII

MII有16个引脚,RMII只有9个引脚

MII参考时钟是25MHz,而RMII是50MHz

MII是4位位宽,而RMII只能收发2位位宽

综上所诉,所以大家基本布板选用RMII连接走线比较多

介质接口MII、RMII引脚数量

MII所需引脚位16个,而RMII所需只有9个;
MII的TX_CLK和RX_CLK由PHY芯片提供,使得MAC内核以这个时钟采集收发数据;
RMII的REF_CLK,MAC内核以这个时钟采集收发数据。
注意:RX_ER和RX_DV用来检测以太网帧是否有效;而CRS和COL以及CRS_DV在全双工模式下无效。