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

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

[复制链接]
STMCU小助手 发布时间:2022-4-16 21:00
本文将重点讲解STM32的MAC控制器,也就是下图区域2。, w5 f/ s) ~2 i% R, l$ ]9 N) Z0 {
* a% x8 U6 V7 H# a, Q) j
d0bd2b91ae1a7109ab3422e277df22a5.jpg 5 z% u; q! t% `# Y
3 h3 F! m; m# A
01、STM32的MAC概述) M. e8 S- H% @' v
STM32的MAC控制器全称是:MediaAccess Control。" b: o8 h2 S% c9 B0 Z" @

, ~1 N/ L; C: E7 y+ WSTM32F207的MAC控制器支持的模式" p! C+ c& [, _2 a0 h
' r: F* \  Y! C2 x2 F2 ]5 n
符合IEEE 802.3 MAC  S  j) Q, _: r3 x- Q8 ~+ ?

( _- i' F# h3 c; X& u8 L3 _10/100Mbps网络: D* l5 U3 d  B) w

5 C: L7 G+ W' U$ M全双工和半双工通信
; U: c/ X6 W' B: W; H6 c7 \6 O' ]4 @! ^
和外部PHY的MII接口和RMII接口8 Z4 ?  E4 L7 n, A8 ?

0 ]3 ~3 @! a8 H( ~+ S) Z1 ?支持前导码和帧起始数据(SFD)插入或删除
7 D7 {/ I3 S: `% {7 U/ s; }, v" C+ }7 i
' e1 M: i" X& y& i) A  k支持IPv4的头部checksum校验和检查
1 y. J5 u; Z8 r. A/ _! ^0 ~- n0 ^) I4 b( Y
支持以太网唤醒
; o7 _9 Q( i5 b/ y
: _* v8 k1 {1 W3 ?- |% O有效载荷检查
4 l6 H  F: h1 _7 g3 R  Z* P
0 Z& K6 V( ~# K6 G: b 8ede124a97a8d2ec4a58516a03c1b6e6.png ! i2 h- C, Q1 ~- s! Z: m, t
& m3 n/ P9 A% r$ v$ v
其实ST在设计MAC控制器时,设计了其他功能,PTP(IEEE1588)精确时间协议,MMC网络统计功能,这些功能并不常用,本人也没有接触,就不再讲解。
7 n: l5 D; S) ?8 B6 z1 e2 r. ~7 y. h' y$ a! ?
对于上面说到的:支持前导码和帧起始数据(SFD)插入或删除。
+ j5 O: @8 w1 z& p' s) `! i% a% z1 |7 U3 b7 Q$ S3 T
一个以太网数据结构如下:
; k$ B( H9 H$ T) g& s8 r& B% s- o/ \- B( h6 [6 I( g' n
c1bbc48ad6a86af0c08a7912bbd64457.png
, O! A' {% \& T! D
1 [! ^; u4 {; g/ h5 k# s+ H. h5 f大多数网络设备都是支持前导码和帧起始数据(SFD)插入或删除。所以可以说,这是网络硬件设备在以太网帧前打包的数据。个人认为并不属于TCP/IP协议簇的内容。# X; P" N  x- B6 x3 L/ D
* R* w- i% d: S* t
02、MAC地址过滤
7 Z8 z% q8 c) kSTM32的MAC控制器支持MAC地址过滤的。( v+ g- k. [' L0 u! Q2 V9 G4 n1 V. q

- `! X" ]0 {$ V- `目的地址过滤:7 L% D6 L& V/ x

3 w/ }! o$ A0 u. Z" Q' e单播过滤
! F$ k/ p& T) u" C- b( w
- O* |. p3 t5 e1 W/ w; B6 n组播过滤. d( W6 Z0 }: k) y% J* O4 Y/ \
& P, H6 a- c) ]8 K# J$ O! ~/ b' y
广播过滤
3 [6 K( S3 T3 T, V, m
+ h! W9 \5 H7 f! u+ w注意:广播过滤会导致ARP广播也收不到。2 C( p, A9 ~. `+ ?+ \3 {4 h
$ ~( B* s" t8 C0 J  A: s0 l# a1 k! l
源地址过滤:. g# j5 W5 U, n3 b
1 I; Q9 f& X7 p- u9 C, B
单播过滤) [* c+ r. O  i( V7 m

+ N; W$ T! R# @' n' N( V$ p: iSTM32的MAC控制器还支持:规则翻转,比如,原来只允许单播过滤接收,翻转之后,只有单播不接收。2 E% b, J  E- E( H
: U7 u) b5 ]# h) p2 C1 R- l* M( Z. y0 s
在STM32实际项目开发中,只需要调用ST的库文件即可9 l. K3 x9 H! C) m/ d0 t

: R" r# y# Y, K+ C
  1. ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//允许接收所有广播帧
复制代码
* |3 h9 `- d- [" h& ]$ Q
关于MAC地址相关信息,什么是广播,MAC地址表示方法,请看之前的推文《以太网数据首部》。; j" _2 j( {9 q  q6 q5 C8 S0 s

1 d) @, Q2 @/ v03、有效载荷检查
, H8 k7 O/ q% ^  P有效载荷检查其实是IP协议要求长度必须大于46个字节,不足时填充pad字节,具体细节请看《5000字“肝”了这篇IP协议》。) K# V8 F/ u( a- Z( b* c

4 T5 q$ i' t9 q. _2 |3 K当从应用程序接收的字节数低于60时(DA+SA+LT+Data),零被附加到发送帧以使数据长度正好为46字节,以满足最小数据字段的要求IEEE802.3要求。
/ V4 s8 N# D) O: n4 \9 D6 `6 T; u, X! _& b4 T3 E
08fdd04226632a9fa384e3e76c7cd3d4.png
' E8 f% s  d7 \" q4 k5 @2 L6 k7 f% S$ T* f
04、Checksum校验和

/ ]" d2 B( d* ?% f首先明确,STM32的MAC控制器并不能对TCP/IP协议中所有的Checksum自动校验。STM32实现了IPv4,ICMP,TCP和UDP协议的Checksum校验和。3 V' i# r) J3 a% e
5 e5 E$ g1 \7 t5 h( |" L7 T2 D
发送的时候,STM32会自动计算Checksum校验和并自动插入。+ L  e' h- i; A' }  @+ `8 F
" H- S- X/ d) h
接收的时候,STM32会自动校验Checksum校验和是否正确。
" @6 S. r: l: c0 k1 n- D1 @( ]& t  q1 J9 \5 C& ^
上述功能可以通过以下操作开启:
- d2 {7 ]3 a4 M- D% R6 X/ m- D( |5 O# o4 p2 A) Q
通过在ETH_MACCR寄存器中设置IPCO位来启用接收校验和卸载。2 r# {1 R/ t8 Q, `1 q4 B

) D2 h, s( I2 Q8 v  b- w# `) N) X* [通过在TDES1寄存器中设置CIC位,在传输时启用校验和计算和插入。1 K6 E0 J# Q/ `; N+ U. T
. S' V/ G& z6 ~# c+ X
但实际代码开发中,并不需要操作寄存器,使用ST的库接口如下( u0 {7 W& }  y- m

$ x. q! x2 y4 w* {
  1. ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable;           //开启ipv4和TCP/UDP/ICMP的帧校验和卸载
复制代码

3 j% U) m6 e/ u+ v7 h
" @( e: E1 d# @* C# b' }0 Z2 ]/ g9 d; {8 X& s, }
赞 收藏 评论0 发布时间:2022-4-16 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版