1.MAC简介
stm32自带有10/100Mbit/s的以太网MAC内核,他提供地址以及媒体访问的控制方式。
MAC内核特性:
- 传输速率:支持外部PHY接口实现10/100Mbit/s数据传输速率;
- 协议标准:符合IEEE802.3/3u的MII和RMII接口与快速以太网PHY通信;
- 工作模式:支持全双工和半双工操作;
- 站管理接口:支持通过MDIO接口配置和管理PHY设备;
2.ST的ETH框架
按照从左向右的顺序介绍:
- 以太网DMA数据包以DMA方式发送/接收
- MAC内核以太网帧发送时,给数据加上一些控制信息;以太网接收时,去掉控制信息;
- PHY交互接口:数据通道——介质接口RMII/MII;管理通道——SMI站管理接口。
3.SMI站管理接口
允许应用程序通过时钟线和数据线访问任意PHY寄存器,最多支持32个PHY访问。
- MDC:周期始终引脚(最大频率为2.5MHz);
- MDIO:数据输入/输出比特流。
SMI帧格式
- PADDR:PHY地址(00_1F);
- RADDR:寄存器地址(00_1F);
- 数据位:16位数据位(PHY寄存器都是16位)。
MDIO时序和帧结构——写周期
主要是看要写到哪里去,也就是PHY地址的确定,下面两个是两种stm32自带的PHY芯片,左边的芯片可以通过两个引脚设置;而右边的则只有一个引脚。
MDIO时序和帧结构——读周期
数据就是16位的。
其中,MDC的时钟来自于stm32内部,是通过AHB时钟树分频得到的。
4.介质接口MMI、RMII
用于MAC与外接的PHY互联,支持10/100Mbit/s数据传输模式。
以太网帧转发到PHY设备中
以发送数据为例,IP的数据包保存到缓冲区,经过以太网的DMA,转发到TX FIFO(2kB的大小,而以太网数据不能超过1500字节,够用了);再转发到MAC内核中,变成以太网帧;以太网帧就需要介质接口转发到PHY,一般采用RMII转发到PHY芯片。
接收的话,就换成RX然后路径反过来就行了。
介质接口MII、RMII比较
MII有16个引脚,RMII只有9个引脚;MII参考时钟是25MHz,而RMII是50MHz;MII是4位位宽,而RMII只能收发2位位宽。
介质接口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在全双工模式下无效。
介质接口MII、RMII参考时钟
- MII的参考时钟源有两个:MCO输出25MHz以及外部晶振输出25MHz;
- RMII的参考时钟源有两个:MCO经过倍频PLL输出50MHz以及外部晶振输出50MHz(必须同时提供PHY和MAC)。
时钟源均为2选1。
注意:MII接口的TX_CLK和RX_CLK是根据数据传输速率挂钩,10Mbit/s对应2.5MHz,100Mbit/s对应25MHz。
介质接口MII、RMII收发位宽
MII一个周期收发位宽为4位数据,RMII则是2位数据。
注意:两者的参考时钟不同,但是单位时间传输的数据量是相等的!