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

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

[复制链接]
STMCU小助手 发布时间:2021-9-18 13:58
之前的文章主要介绍了STM32的ExternalPHY Intereface部分,《STM32网络电路设计》也就是下图区域1。
' z; Y( {- T' R
9 s( m3 M! F% H. K

0 ]: k) M9 ^5 _2 {本文将重点讲解STM32的MAC控制器,也就是下图区域2。$ s6 D/ S" c* {3 f1 O) O6 i
13.png
0 x+ W1 _7 c& b* c. H. N8 V6 E01 STM32的MAC概述' Q0 l2 m: `8 u4 u3 y& y

9 z3 S3 F2 z$ BSTM32的MAC控制器全称是:MediaAccess Control。1 c# D' }% t' a4 L
2 M4 A( M+ ~; }* D$ y

1 k% f1 L' R, Q5 J* TSTM32F207的MAC控制器支持的模式7 A2 f* s: ~+ d) I! I! j3 Y

. M7 Y6 ?( s& q1 |
7 z' a7 a7 e4 O9 c6 J! I+ Z8 \
符合IEEE 802.3 MAC# ^8 ]5 s/ c* R# y# A. Q
0 ~- I8 c2 U5 h  z4 T0 T0 ?
. E) w' k9 |5 l- o
10/100Mbps网络
' t/ I8 H- G$ D3 h( K! w
* V9 w  Z; r% i
% x/ t% O# ~8 V1 w5 M
全双工和半双工通信2 u0 t/ p/ j1 d  R9 k9 q: P
7 F. K. U- v( K7 O* e+ p+ J

% J/ L( J* L' N+ x! F( S" K和外部PHY的MII接口和RMII接口
+ L3 B3 n$ L  p7 f; Q: I! w/ S
' P( ?, e# g1 |8 U6 _* r

% u1 e1 X2 @0 `, S支持前导码和帧起始数据(SFD)插入或删除
' A* v4 n2 O8 n$ y( ~  L$ p% q9 y# r: K! j3 N

% X, [$ y2 }/ `支持IPv4的头部checksum校验和检查
; y/ U# G4 }& ~) M8 C# n) u; o/ w* a. m6 R5 _  T3 E

  z7 j/ {% R/ b& S( P9 V/ J支持以太网唤醒( r  Y3 y( n1 E( O0 R4 T$ k

  i; x  _3 P) Y; t0 G
& V( _, d2 B; `% _4 g
有效载荷检查
% I, o1 ~  n% G9 A. X8 r 14.png ; }. r/ a( O- D9 T; S! m
其实ST在设计MAC控制器时,设计了其他功能,PTP(IEEE1588)精确时间协议,MMC网络统计功能,这些功能并不常用,本人也没有接触,就不再讲解。
8 {  T% j1 r# b
& p* T) |% U/ ~  G7 L6 l. W9 p1 B
: k4 A( f0 J: E( m" M, z
对于上面说到的:支持前导码和帧起始数据(SFD)插入或删除。
5 h5 h$ t( q* C
5 j& ~+ g% U, j* y
+ ^" j: N- _1 K, Z: J+ H
之前的推文《以太网数据首部》中并没有说到前导码和帧起始数据(SFD)。一个以太网数据结构如下:8 Q5 ^+ F+ I, ?1 `  @1 c7 y& ]* k4 U

! m5 l+ E+ B7 {/ H$ k9 A; I

2 r% F6 s6 k( {( J5 w; | 15.png 1 [+ X8 u& u' V. A
大多数网络设备都是支持前导码和帧起始数据(SFD)插入或删除。所以可以说,这是网络硬件设备在以太网帧前打包的数据。个人认为并不属于TCP/IP协议簇的内容。  b2 p% {$ J& T! f# H# o7 @4 L
( x4 t# B$ V* t0 |$ A* A
02 MAC地址过滤
( L2 V' s" V1 \8 i7 b1 s* S
. k6 i- i& Y# W! S1 n9 {6 F/ t3 pSTM32的MAC控制器支持MAC地址过滤的。
% U4 I& C1 U: h
0 @6 X4 j/ D9 X
( s; h+ N, J- c0 l0 ~
目的地址过滤:
: Z- N+ H3 Q: L/ z; W·单播过滤3 X' e. j* U* [) V, `6 M
·组播过滤( s4 o, X. W5 W3 d
·广播过滤
+ @0 a7 r& Z" q1 |0 K0 n" L$ g5 L9 Q3 T5 f% H4 V
3 J$ I. b) O" v# U; V$ b7 r+ k& l
注意:广播过滤会导致ARP广播也收不到,具体请看《TCP/IP协议簇中ARP协议》。0 I7 c. Z1 f3 v$ I; V/ v

7 X' f# _2 X& ?, F0 |源地址过滤:
, [7 X: s5 G/ f5 j: O5 e- E, V% A单播过滤. f1 V( A9 F2 B; L  O0 A: S

) \2 i  }  U8 t
$ X# u7 N# u5 _; B6 F
STM32的MAC控制器还支持:规则翻转,比如,原来只允许单播过滤接收,翻转之后,只有单播不接收。
$ p" u5 k1 h$ h/ Y0 r7 v/ `
, e, A4 g$ |  p3 [' o. z

- A6 C3 T; ], Z  v, c# [  _3 ^在STM32实际项目开发中,只需要调用ST的库文件即可) r6 a% d; }- O+ g0 C# E/ D9 A9 e
1 r( Q3 @; V! `* H
* e3 o, K' y9 E. i0 w/ i
ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//允许接收所有广播帧
7 x- s/ x+ B6 w6 q, ]3 l/ I7 Q关于MAC地址相关信息,什么是广播,MAC地址表示方法,请看之前的推文《以太网数据首部》。4 S( n1 D7 S2 H/ b
; L* [9 R  F; W- X

( j5 K: M; C  [% r' m03 有效载荷检查
1 Q2 P8 H" B' A% d- Q0 B$ x7 Q. M  c
有效载荷检查其实是IP协议要求长度必须大于46个字节,不足时填充pad字节,具体细节请看《5000字“肝”了这篇IP协议》。0 \0 Q7 O6 b' p  n6 E, V7 ]4 B' f, W
2 y- l1 t& Y. S- O0 W

7 e- [8 |" |# G9 N& j; x当从应用程序接收的字节数低于60时(DA+SA+LT+Data),零被附加到发送帧以使数据长度正好为46字节,以满足最小数据字段的要求IEEE802.3要求。+ C' W; m1 i! k1 H* a& X
16.png 5 @2 g& _1 H8 u3 |* \; g0 ~" Y

8 V# x& Q* f, l) z! ]; I' R2 k6 S5 v1 C$ g/ p
+ e  h# D5 @' U- `, r/ w/ q, t' n
04 Checksum校验和
2 U& G) s9 t! g) U6 c2 q
. V) c! V! {$ a% K首先明确,STM32的MAC控制器并不能对TCP/IP协议中所有的Checksum自动校验。STM32实现了IPv4,ICMP,TCP和UDP协议的Checksum校验和。
. H+ Z& S" k1 h3 ]7 f7 [
% i2 ^: Y% h! e- _: O/ e  u

" O2 J" ?# I. p8 x发送的时候,STM32会自动计算Checksum校验和并自动插入。
. F5 s; r8 u5 p+ _, X4 b
- l% C6 k) B3 x' _+ d2 {
/ m$ F# [) k/ W% i, i% a& m6 t0 B- O
接收的时候,STM32会自动校验Checksum校验和是否正确。( K0 I: D% \; t  K4 S
; @- |5 c8 a# v+ _; Q; s: L

" a/ `7 A7 R& e4 x8 m/ u) J: w上述功能可以通过以下操作开启:' Q1 ~" l' x7 d, D4 u
通过在ETH_MACCR寄存器中设置IPCO位来启用接收校验和卸载。: a1 |- ~6 Z4 Q& M/ Q7 s, x1 F
通过在TDES1寄存器中设置CIC位,在传输时启用校验和计算和插入。$ c. k# G& v4 `5 j6 n
& W+ c6 p2 a$ @- }; |- o' N

& C/ B* e: w- M8 o! d  w! Z3 V但实际代码开发中,并不需要操作寄存器,使用ST的库接口如下:$ I: T& }. O7 T
  1. 4 w7 w- O6 B( L; q% j' l' m% Q- k
  2. ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable;           //开启ipv4和TCP/UDP/ICMP的帧校验和卸载
复制代码
$ V! R# e! K# T. p, ?

- P# @! U: X( ^& `7 n
收藏 评论0 发布时间:2021-9-18 13:58

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版