你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32网络之MAC控制器

[复制链接]
STMCU小助手 发布时间:2021-7-23 14:55
之前的文章主要介绍了STM32的ExternalPHY Intereface部分,《STM32网络电路设计》也就是下图区域1。
本文将重点讲解STM32的MAC控制器,也就是下图区域2。
1.jpg


01
STM32的MAC概述


STM32的MAC控制器全称是:MediaAccess Control。
STM32F207的MAC控制器支持的模式
符合IEEE        802.3 MAC
10/100Mbps网络
全双工和半双工通信
和外部PHY的MII接口和RMII接口
支持前导码和帧起始数据(SFD)插入或删除
支持IPv4的头部checksum校验和检查
支持以太网唤醒
有效载荷检查
2.jpg
其实ST在设计MAC控制器时,设计了其他功能,PTP(IEEE1588)精确时间协议,MMC网络统计功能,这些功能并不常用,本人也没有接触,就不再讲解。
对于上面说到的:支持前导码和帧起始数据(SFD)插入或删除。
之前的推文《以太网数据首部》中并没有说到前导码和帧起始数据(SFD)。一个以太网数据结构如下:
3.jpg
大多数网络设备都是支持前导码和帧起始数据(SFD)插入或删除。所以可以说,这是网络硬件设备在以太网帧前打包的数据。个人认为并不属于TCP/IP协议簇的内容。


02
MAC地址过滤


STM32的MAC控制器支持MAC地址过滤的。
目的地址过滤:
单播过滤
组播过滤
广播过滤
注意:广播过滤会导致ARP广播也收不到,具体请看《TCP/IP协议簇中ARP协议》


源地址过滤:单播过滤


STM32的MAC控制器还支持:规则翻转,比如,原来只允许单播过滤接收,翻转之后,只有单播不接收。
在STM32实际项目开发中,只需要调用ST的库文件即可
  1. <font face="Arial" size="3">ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//允许接收所有广播帧</font>
复制代码
关于MAC地址相关信息,什么是广播,MAC地址表示方法,请看之前的推文《以太网数据首部》


03
有效载荷检查


有效载荷检查其实是IP协议要求长度必须大于46个字节,不足时填充pad字节,具体细节请看《5000字“肝”了这篇IP协议》
当从应用程序接收的字节数低于60时(DA+SA+LT+Data),零被附加到发送帧以使数据长度正好为46字节,以满足最小数据字段的要求IEEE802.3要求。
4.jpg


04
Checksum校验和


首先明确,STM32的MAC控制器并不能对TCP/IP协议中所有的Checksum自动校验。STM32实现了IPv4,ICMP,TCP和UDP协议的Checksum校验和。
发送的时候,STM32会自动计算Checksum校验和并自动插入。
接收的时候,STM32会自动校验Checksum校验和是否正确。
上述功能可以通过以下操作开启:
通过在ETH_MACCR寄存器中设置IPCO位来启用接收校验和卸载。
通过在TDES1寄存器中设置CIC位,在传输时启用校验和计算和插入。
但实际代码开发中,并不需要操作寄存器,使用ST的库接口如下:
  1. <font face="Arial" size="3">ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable;    </font>
复制代码


收藏 评论0 发布时间:2021-7-23 14:55

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版