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

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

[复制链接]
STMCU小助手 发布时间:2021-9-18 13:58
之前的文章主要介绍了STM32的ExternalPHY Intereface部分,《STM32网络电路设计》也就是下图区域1。
' z5 }* k& l# _3 m% D  _9 K& {, A5 B* M6 d: r1 f
& \8 ^. K: ?, q, X
本文将重点讲解STM32的MAC控制器,也就是下图区域2。, y; x! T. Y$ E. h* m' ?
13.png . ]$ ~# N# [! I2 N1 R# `3 _+ c
01 STM32的MAC概述
- G% d' q, s; `6 j
/ i1 r* R2 Z8 u3 q, [4 x3 u& xSTM32的MAC控制器全称是:MediaAccess Control。
6 d) F9 b. |' K% w0 R6 j( D  j# \
( _, C3 K. g' G0 d
STM32F207的MAC控制器支持的模式/ ^' B0 _& t0 C) }. }8 i
+ c6 {6 t' e& }/ r9 M
( d5 h# P) ^# {3 m- f; z
符合IEEE 802.3 MAC+ G' y1 A& l! N

8 f; Q* E' `3 u6 y& S/ y
& ^- Q$ W. t" x" K
10/100Mbps网络( O$ @- |0 d- t
2 ]: b  h" _' z  A( x

, K; ]% I: I: R* ?* v7 d全双工和半双工通信* y/ j! n  n- H% G5 s( Y) i
" H) m; c# t7 X; N% a

% {( s4 V& ~% L4 N0 X) e和外部PHY的MII接口和RMII接口
" _9 B, M4 b: m, U1 p
, r% F. ?& {+ t/ r+ b# S
. q- ]- b! J" M7 f/ |6 y/ M, b
支持前导码和帧起始数据(SFD)插入或删除
* k; M1 U+ E: o1 a/ C8 f
$ e# e* e8 Z: w% T8 r9 S
6 u; [3 ~( u/ r# _
支持IPv4的头部checksum校验和检查
6 l. v2 c" q) j! Q" G
4 A. v! j; F/ C% s* M
2 J3 \. g  v, Q  Q* ^. |2 O( ]
支持以太网唤醒" r# r' f; V. J& }3 ]2 `% o! i

0 u9 t$ j8 ^: t

; g( M, o. @( c+ w# o: `8 n4 u有效载荷检查0 E: [) Q* r6 |! o  d
14.png + z! H3 S2 G. J
其实ST在设计MAC控制器时,设计了其他功能,PTP(IEEE1588)精确时间协议,MMC网络统计功能,这些功能并不常用,本人也没有接触,就不再讲解。
  k- J  w. |5 I3 W# M! F" ?% W; X8 f* r
0 d5 t- X6 a7 l0 T
对于上面说到的:支持前导码和帧起始数据(SFD)插入或删除。# S* h* ^, [$ U3 a. U5 \
/ t4 A  }1 P( V( K/ U( [: L

  M5 x8 O' w; N) L: |3 S7 e之前的推文《以太网数据首部》中并没有说到前导码和帧起始数据(SFD)。一个以太网数据结构如下:
( G. U* y7 e$ Z# n6 D9 |6 d2 n- a! ?3 z) M  m
: F( m- r9 _6 U" N  w- `3 x% i) E
15.png ! ?/ f, K" \' i
大多数网络设备都是支持前导码和帧起始数据(SFD)插入或删除。所以可以说,这是网络硬件设备在以太网帧前打包的数据。个人认为并不属于TCP/IP协议簇的内容。) R' b( K9 Q) y% B) p# j2 n" a# u  ^
+ {3 `' ?4 |) B8 T; E2 a1 D  A; |
02 MAC地址过滤3 B/ d0 w: V7 C' A

0 q2 V) C9 e' @STM32的MAC控制器支持MAC地址过滤的。
  v1 J4 a/ G" @$ p1 P9 J( P7 j  N. z+ L# M. H4 ]2 \0 k0 M
4 N1 O( g' d$ _: {: z
目的地址过滤:
2 N$ }( g8 s  f! ~·单播过滤
. t$ P6 a, }: f  h6 ?  D·组播过滤% S  E: J* {' }; z( m  T; i3 f6 l$ h
·广播过滤) p3 l* c  W) K. R2 n% q
  d$ Q* R5 C. @3 E# Q+ O- E# D$ l
, @2 U3 L0 J. t- A8 u  T0 e
注意:广播过滤会导致ARP广播也收不到,具体请看《TCP/IP协议簇中ARP协议》。  ~/ O0 ^, n( @0 F& Y

; k) {8 h( R8 I4 m$ I源地址过滤:# k6 O9 D, Q3 B2 g
单播过滤9 i5 v# s4 L9 y2 _' k( D2 m

+ z' E* e# c: ]; ]. V( D& z& X+ p

3 G9 R; q. h5 ISTM32的MAC控制器还支持:规则翻转,比如,原来只允许单播过滤接收,翻转之后,只有单播不接收。
! `  i4 M, R: R; n
* t/ o, K& E& `- B9 H% G/ ~7 w  ]- r

# }1 m: \! j: L, b0 u" B# n在STM32实际项目开发中,只需要调用ST的库文件即可
  W0 Y5 X* {; F- i  F' m2 O, N+ E5 \* A8 s; O3 R
+ I; a, V# b( a7 ^
ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//允许接收所有广播帧  y/ w( D- O. ~) L$ L
关于MAC地址相关信息,什么是广播,MAC地址表示方法,请看之前的推文《以太网数据首部》。
+ Q5 q( J! e  a' t( R3 Z
1 `9 \( _" w- G
& }0 i1 B7 B+ V( z0 Y, ]
03 有效载荷检查
/ i! q- [- n0 k, d, ~# n, k3 D
( {- R& l; \! ^1 C" M有效载荷检查其实是IP协议要求长度必须大于46个字节,不足时填充pad字节,具体细节请看《5000字“肝”了这篇IP协议》。3 W; u& t; a+ S) i
4 {4 l/ Z# t; M6 e2 j/ a
4 O- j" N: V* K& O& U" F
当从应用程序接收的字节数低于60时(DA+SA+LT+Data),零被附加到发送帧以使数据长度正好为46字节,以满足最小数据字段的要求IEEE802.3要求。
4 j: b. d+ n& }  ^$ L 16.png
$ F( m, t( I# K- v4 j  K0 z8 T/ D' N  F8 u
, @! Z. T5 l( A) p# }5 X  ~
04 Checksum校验和
$ W. T9 h. ^" F: k- l* `( U5 H9 R2 l1 n, H8 W% F* i" \# {
首先明确,STM32的MAC控制器并不能对TCP/IP协议中所有的Checksum自动校验。STM32实现了IPv4,ICMP,TCP和UDP协议的Checksum校验和。# ~/ u+ {* F! b$ Y

4 G7 }$ x0 L2 q/ N, U* G9 r

- ?6 t% u; z8 j发送的时候,STM32会自动计算Checksum校验和并自动插入。
  m- g0 U1 ~3 z( }+ h* T; f
3 F7 M( U& L4 C' D9 z+ K3 E

$ U; L4 L# c3 l1 E& R+ w接收的时候,STM32会自动校验Checksum校验和是否正确。. z7 R3 x+ d+ }# ?, S: f

) S+ g$ f+ Q! M- h2 J- s/ b8 S

! C9 }5 S2 X2 u1 w" h上述功能可以通过以下操作开启:6 k0 G0 Z0 r3 R! |
通过在ETH_MACCR寄存器中设置IPCO位来启用接收校验和卸载。  i" j* z! j) {: ~! R7 _: o4 Q) L
通过在TDES1寄存器中设置CIC位,在传输时启用校验和计算和插入。
1 l* x+ R( p  g4 z' Q
' L6 c9 ~# @) o

; e2 m4 n6 ]6 N/ n但实际代码开发中,并不需要操作寄存器,使用ST的库接口如下:
1 o6 u" u$ W# m% n  @2 P

  1. $ s' D: T: n& [8 H$ P/ H
  2. ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable;           //开启ipv4和TCP/UDP/ICMP的帧校验和卸载
复制代码
8 U1 `2 e! n( N) X
/ r! _8 D3 Z% Q! a
赞 收藏 评论0 发布时间:2021-9-18 13:58

举报

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