
本文将重点讲解STM32的MAC控制器,也就是下图区域2。![]() 5 d3 b1 f7 @! p+ M5 N 01、STM32的MAC概述 STM32的MAC控制器全称是:MediaAccess Control。 1 \" }* ?5 O' V8 h% S STM32F207的MAC控制器支持的模式 符合IEEE 802.3 MAC 10/100Mbps网络 全双工和半双工通信 ; u; X8 |& [; P! u$ \6 B' L 和外部PHY的MII接口和RMII接口 支持前导码和帧起始数据(SFD)插入或删除 , r6 t$ Q( u8 z 支持IPv4的头部checksum校验和检查 支持以太网唤醒 : a* x7 P' B/ Z9 g1 p 有效载荷检查4 g/ ]: }/ E' ^ _# _$ L ![]() * Z# Y0 t, @ n$ G 其实ST在设计MAC控制器时,设计了其他功能,PTP(IEEE1588)精确时间协议,MMC网络统计功能,这些功能并不常用,本人也没有接触,就不再讲解。8 J5 V+ V. n# _7 w0 z0 a2 ^' a $ P8 V' Z2 I. C 对于上面说到的:支持前导码和帧起始数据(SFD)插入或删除。+ X+ L& D9 R# j 一个以太网数据结构如下:3 I# I9 m2 c3 H h$ _4 D5 w ![]() 大多数网络设备都是支持前导码和帧起始数据(SFD)插入或删除。所以可以说,这是网络硬件设备在以太网帧前打包的数据。个人认为并不属于TCP/IP协议簇的内容。 02、MAC地址过滤 K7 e6 J5 p8 b STM32的MAC控制器支持MAC地址过滤的。, n5 d; H: f) K$ q$ x! @( q } 目的地址过滤:- k% z- g$ v* Q 单播过滤* i$ s7 g8 Y4 T) P$ _5 ~ 组播过滤 广播过滤4 m1 Q$ G7 |, K- T# d 注意:广播过滤会导致ARP广播也收不到。3 D" v/ Y, o. d, N% |- d 源地址过滤:. O" ?" E& y0 [9 ]' W ! S5 f& {: s; y6 S( [3 ~+ ~! u 单播过滤2 Z, |: k( F- M; ] STM32的MAC控制器还支持:规则翻转,比如,原来只允许单播过滤接收,翻转之后,只有单播不接收。 . U5 h6 V0 o. X% ?; o 在STM32实际项目开发中,只需要调用ST的库文件即可 5 O/ j6 L4 w) ~
关于MAC地址相关信息,什么是广播,MAC地址表示方法,请看之前的推文《以太网数据首部》。$ \+ p# L. T! T2 ~) A" m 3 N0 c. `) N/ d( g2 T4 {' c: n 03、有效载荷检查/ M1 g* v$ F2 Q7 m6 _ 有效载荷检查其实是IP协议要求长度必须大于46个字节,不足时填充pad字节,具体细节请看《5000字“肝”了这篇IP协议》。, V% q7 V# T; ~% k' S/ A+ C 当从应用程序接收的字节数低于60时(DA+SA+LT+Data),零被附加到发送帧以使数据长度正好为46字节,以满足最小数据字段的要求IEEE802.3要求。& M3 N: K9 d, B! c0 ]9 o3 w ![]() % b- Z' r% a$ a2 D: ^" p6 x9 O. B 04、Checksum校验和+ Q3 y% t; B& ~" |0 U+ s7 l" S9 G 首先明确,STM32的MAC控制器并不能对TCP/IP协议中所有的Checksum自动校验。STM32实现了IPv4,ICMP,TCP和UDP协议的Checksum校验和。8 I ^2 A! e8 z2 c$ b( z 7 A: r) e0 H4 N( c 发送的时候,STM32会自动计算Checksum校验和并自动插入。: e/ [5 j5 C' {' z$ X+ U 接收的时候,STM32会自动校验Checksum校验和是否正确。 上述功能可以通过以下操作开启: 通过在ETH_MACCR寄存器中设置IPCO位来启用接收校验和卸载。 通过在TDES1寄存器中设置CIC位,在传输时启用校验和计算和插入。- @; Q: z* o8 u3 C8 Q $ w0 W. a0 O0 Y2 a# X 但实际代码开发中,并不需要操作寄存器,使用ST的库接口如下: G4 c5 F0 O8 x1 R) T. j! ~% v 9 Y3 S6 q. A4 _, d) X @& ~
/ c2 ]# { P' v# O, s& \5 n |
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化
【Hot!】STM32全系列开发板都支持Arduino开发,你知道吗?
【经验分享】STM32 HAL库移植FreeModbus详细步骤