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

【经验分享】STM32网络之MAC控制器

[复制链接]
STMCU小助手 发布时间:2022-4-16 21:00
本文将重点讲解STM32的MAC控制器,也就是下图区域2。
) u7 B# o: L5 R$ c2 A* u
; l& e" j/ y$ x; [7 w d0bd2b91ae1a7109ab3422e277df22a5.jpg
4 y- P9 ]$ t1 h, x3 r" k: d5 d3 b1 f7 @! p+ M5 N
01、STM32的MAC概述
0 O: j' t: ~6 U, @1 SSTM32的MAC控制器全称是:MediaAccess Control。
6 f$ `# E& K# _+ A# W: p: s% l1 \" }* ?5 O' V8 h% S
STM32F207的MAC控制器支持的模式
- p% j0 @  [2 r. K
) v5 r) m0 Z) h) o% n9 \9 @) ?符合IEEE 802.3 MAC
$ S/ J3 s* G) B( K
, c3 Z  u2 K4 k% l10/100Mbps网络
; G4 m2 x4 T9 R: T
' y) g& A& {4 C" _2 u: c全双工和半双工通信
- @! `/ X' |: Y* L4 J% z/ j; u; X8 |& [; P! u$ \6 B' L
和外部PHY的MII接口和RMII接口
" {1 t5 ?" ^, g2 }8 K: Z: l+ {. v
, P9 _) v$ o, X7 A0 Y& k支持前导码和帧起始数据(SFD)插入或删除
; H/ R( m  D6 Y6 n, r6 t$ Q( u8 z
支持IPv4的头部checksum校验和检查
0 Z2 v  n/ M) b
5 k& P, R6 P3 u. h# I6 E) i9 Q支持以太网唤醒
3 Z+ W6 c0 f& s0 l: a* x7 P' B/ Z9 g1 p
有效载荷检查4 g/ ]: }/ E' ^  _# _$ L

. V4 M  M( f) c. g5 V' N0 _! e8 I 8ede124a97a8d2ec4a58516a03c1b6e6.png
& E0 U0 B/ y  k) }5 p/ @7 u& t% `* 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

- ~  V8 Y* p% s$ B0 `) m一个以太网数据结构如下:3 I# I9 m2 c3 H  h$ _4 D5 w

9 f7 Y7 j0 u! H& P% ]2 I0 o c1bbc48ad6a86af0c08a7912bbd64457.png
/ z( {4 v$ D9 `; \0 ^( ?
& h/ m4 S: r- Q" k" x$ M/ j9 P  P大多数网络设备都是支持前导码和帧起始数据(SFD)插入或删除。所以可以说,这是网络硬件设备在以太网帧前打包的数据。个人认为并不属于TCP/IP协议簇的内容。
4 l. B" c  [4 V1 D# @) N
) P2 N- \$ P7 ]+ E  s02、MAC地址过滤  K7 e6 J5 p8 b
STM32的MAC控制器支持MAC地址过滤的。, n5 d; H: f) K$ q$ x! @( q  }

9 C# q" z. Y5 c3 b目的地址过滤:- k% z- g$ v* Q

  S: c' s% W" B$ J& l6 z单播过滤* i$ s7 g8 Y4 T) P$ _5 ~

+ |) J& K9 E5 b# z7 G' ?! u6 B组播过滤
" }# t8 ^3 d9 B8 u) o
4 t+ i! d) @; r( j% l9 q广播过滤4 m1 Q$ G7 |, K- T# d

. z/ T0 ^9 g* ]' q4 G注意:广播过滤会导致ARP广播也收不到。3 D" v/ Y, o. d, N% |- d

& f8 k9 W; |; ]源地址过滤:. O" ?" E& y0 [9 ]' W
! S5 f& {: s; y6 S( [3 ~+ ~! u
单播过滤2 Z, |: k( F- M; ]

+ \  B5 W. t5 \4 U9 rSTM32的MAC控制器还支持:规则翻转,比如,原来只允许单播过滤接收,翻转之后,只有单播不接收。
( |) v; ~$ K% S- v) D+ L. U5 h6 V0 o. X% ?; o
在STM32实际项目开发中,只需要调用ST的库文件即可
2 i9 s/ r1 u" ]( t7 v+ g5 O/ j6 L4 w) ~
  1. ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//允许接收所有广播帧
复制代码
3 o% k0 X3 J+ b$ I& h6 w& M9 q
关于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

6 [& a5 R* N1 d7 V; T/ ^: m. K当从应用程序接收的字节数低于60时(DA+SA+LT+Data),零被附加到发送帧以使数据长度正好为46字节,以满足最小数据字段的要求IEEE802.3要求。& M3 N: K9 d, B! c0 ]9 o3 w

, t1 L. J1 S$ r/ Q 08fdd04226632a9fa384e3e76c7cd3d4.png
* n" q  N9 b% S% ~) q) f( Q% 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

( p  Q1 o- h3 N接收的时候,STM32会自动校验Checksum校验和是否正确。
  N' B* h, l7 \
6 R- t. e3 s8 F6 i上述功能可以通过以下操作开启:
( E/ ^- H# v1 D+ F( R
2 R  b4 o4 d) a通过在ETH_MACCR寄存器中设置IPCO位来启用接收校验和卸载。
( u/ m" W' }& K/ |
7 r5 T9 O- w2 K& F  X通过在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  @& ~
  1. ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable;           //开启ipv4和TCP/UDP/ICMP的帧校验和卸载
复制代码

/ ~# Y6 i& Y  F3 X/ v, T8 p
* j, a8 B/ o5 _; M0 J$ \6 u5 F/ c2 ]# {  P' v# O, s& \5 n
收藏 评论0 发布时间:2022-4-16 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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