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

【经验分享】PHY芯片和STM32的MAC基础知识

[复制链接]
STMCU小助手 发布时间:2021-12-27 17:00
5.1   初学者重要提示' I1 \7 ?9 S! Z+ g
  学习本章节后,务必学习STM32参考手册中MAC章节的基础知识讲解,非常重要。* q. D2 I/ `% T  \3 ~9 e$ v
  实际项目中,关于MAC的配置问题,需要大家学习我们论坛网友发的这个帖子。
- ~8 r& _8 x! F" L: F* N1 r' ~: e+ v9 b/ c/ f( A* e
5.2   什么是MAC
8 b9 k6 Z4 |5 c1 \. j媒体访问控制(MAC,Media Access Control),又称作介质访问控制,简称MAC,是局域网中数据链路层的下层部分,提供地址及媒体访问的控制方式,使得不同设备或网络上的节点可以在多点的网络上通信,而不会互相冲突,上述的特性在局域网中格外重要。早期网络发展时以MAC判别各个网络接口的位置,但后来互联网发展后,才有IP的制定与使用。若只是两台设备之间全双工的通信,因为两台设备可以同时发送及接收数据,不会冲突,因此不需要用到MAC协议。' g5 w% Q% Z: F; w6 I2 ^7 }

) ~8 \( r! b2 Y5 h; J  G7 n媒体访问控制MAC子层负责解决与媒体接入有关的问题,在物理层的基础上进行无差错的通信。. _7 G: l2 ^* {1 p: [$ I, C' [. F9 y; L) _

$ Q0 n6 v! B3 n/ KMAC子层是网络与设备的接口,它从网络层接收数据帧,然后通过媒体访问规则和物理层将数据帧发送到物理链路上。它也从物理层接收数据帧,再送到网络层。总的来说,MAC有三大功能:7 @+ b5 o2 v1 G8 x! j! Y

9 h& E" L4 P+ x+ \3 L  决定节点何时发送数据包。2 U/ z- S5 M: @4 X) s9 `4 H( k- j) i
  将数据帧发送到物理层,然后发送到物理链路。
0 G8 ]- i9 {, Z  p. I  从物理层接收数据帧,然后送给网络层处理。# i  h+ b+ \5 d2 Q0 d
其中最重要的是第一点:决定节点何时发送数据包。对于每一种媒体访问控制技术,用来控制节点发送时机的规则叫做媒体访问规则。局域网上的节点不能想要发送数据就发送,节点只能在轮到它的时候才发送。
1 v5 q- q, W7 \8 k
9 Q% P; D* e* U5.3   MAC地址
+ \) [0 T; ?2 }' w( yMAC地址,又称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。
! |; s6 M4 s( ?7 ~7 g' ?
1 o6 P" r# {) u* ?/ k* Z: k" T, FMAC地址长度是48bit(6字节),由16进制的数字组成,分为前24位和后24位:
8 ?% J6 K! }0 V: d; y, m' r3 V- @- i' G% |& h) f& @! i
  前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
" P/ f  ~% q) B  后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。
2 L0 @+ _9 J0 {" sMAC地址的完整数据格式如下(来自wiki百科):1 S2 a4 F9 z+ q& W
. p  T$ @) x: D! k9 M; F$ {
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDgvMTM3OTEwNy0yMDIw.png
0 Q( `, }" n8 J' v; {% ^

8 c( \0 F6 q% y7 J$ D第一个字节的后两位比较重要:- y) ]& c" r6 z) P  S4 n

, L! F: E+ @% i, q( w9 Ab0 = 0:表示MAC单播地址。
! p: ^- q, L3 d7 D1 a/ O# z( C0 X0 k! |2 }
b0 = 1 : 表示MAC组播地址。& Z( U6 d5 L7 I; n

1 G; U8 v2 |( B& z/ N: fb1 = 0:表示OUI分配的全球唯一MAC地址。% L% ?" B2 k3 {3 w* g

4 j5 \" ]/ I  L8 g7 [b1 = 1:表示用于本地管理的MAC地址。; j: I2 a( w2 P! e" D

6 U8 ~- y) Q+ W7 b. d7 Q5 z为了更好地理解,举几个例子:
8 z( f, C+ q4 _6 r( Z; i5 Q: E: f8 @$ l8 R
  00:xx:xx:xx:xx:xx是MAC单播地址。
: M( N0 [/ r: y5 o/ D  01:xx:xx:xx:xx:xx是MAC组播地址。: }0 S- `/ `- a# F9 e
  01:00:5e:xx:xx:xx是IPv4组播地址。
8 Z6 i; s+ |6 `9 h3 a$ _; x! ?  ff:ff:ff:ff:ff:ff则作为广播地址。+ `, Y& g; i4 D; H7 z
  00:50:c2:xx:xx:xx 是意法半导体的MAC地址。" }. J* [% S5 Y
5.4   STM32自带MAC基础知识# G- l, }! d& l5 n
关于STM32自带的MAC部分,STM32参考手册中写的晦涩难懂,特别是中文翻译版本,逻辑混乱,如果可以的话,建议大家看英文版。& r' e* X4 t# @! g& _
; y. i0 K6 O! l( u  P, z
STM32参考手册中对MAC的讲解主要分为三部分:- A! L+ h; X: b( s, X7 v( L
6 ?2 E% J$ o! N% ~/ F
  MAC的接口MII和RMII。- d5 a2 ~3 e; B& l
参考手册中对这一部分讲解的比较详细,也比较容易理解,建议初学者务必读一读。我们这里就不将其复制粘贴过来了。
& S. X3 i# n  E, K! O' s  M5 Q7 x
& G9 v# O3 C0 e! c  MAC802.3帧格式,帧发送,帧接收等方面的讲解。
0 v5 A& q4 `# b7 D, _: F2 m" \, I这一个部分知识点理解起来比较困难,配合下一章节的底层驱动就好理解了。
' f- K/ t! k/ y# a
% m* E! ^5 k1 A# d/ `. M  MAC的DMA收发方式控制。
2 K- n; A4 M1 N2 m: z7 }* q& K4 P6 d手册中给出了DMA方式的发送和接收的初始化顺序,在下一章节讲解底层驱动的时候结合驱动代码会理解的更好,建议初学者也读一遍。; S$ M  q5 _7 q$ A* q

% \) z1 x! T% S2 Z. d6 m' P6 f( b5.5   以太网PHY基础知识: J+ i* b5 N- k/ Z- G9 K7 k
仅有STM32自带的MAC还不能做网络通信,还需要外接以太网PHY芯片才可以,如同RS485通信一样,仅有一个串口是不行的,还需要外接RS485的PHY芯片。
1 g) D! c+ k- C) `: m, B4 \) k% \
2 Q2 c2 }1 ^+ i1 |! l2 NPHY(Port Physical Layer),可称之为端口物理层,是一个对OSI模型物理层的简称。现在常用于STM32的有DP83848,LAN8270,DM9161/9162等。这些PHY芯片都大同小异,基本寄存器都是一样的,只有扩展寄存和厂商专门设置的寄存器不同。如果用户将其中一个PHY驱动成功了,驱动另一个也是非常方便的,下面是DP83848和DM9161/9162的基本寄存器和扩展寄存器:5 b9 b; }  k6 p* d3 d( x! g+ T

+ S- I; p! `8 @2 i* i4 q, L- S
  1. /* DP83848C and DM9161 PHY Registers is the same */
    / M$ V9 |0 v+ J7 n3 f* C
  2. #define PHY_REG_BMCR        0x00        /* Basic Mode Control Register       */
    ) r* B, S2 x) ]" x: k& Q
  3. #define PHY_REG_BMSR        0x01        /* Basic Mode Status Register        */
    1 p( D& Y7 t- g& G
  4. #define PHY_REG_IDR1        0x02        /* PHY Identifier 1                  */! v/ g* Z9 J0 q* f
  5. #define PHY_REG_IDR2        0x03        /* PHY Identifier 2                  */
    5 U( a$ g: O' I7 J; X
  6. #define PHY_REG_ANAR        0x04        /* Auto-Negotiation Advertisement    */. ?* @0 ~  F/ R" Q
  7. #define PHY_REG_ANLPAR      0x05        /* Auto-Neg. Link Partner Abitily    */' b9 s* {2 s5 ^
  8. #define PHY_REG_ANER        0x06        /* Auto-Neg. Expansion Register      */( T/ s: V# _8 V
  9. #define PHY_REG_ANNPTR      0x07        /* Auto-Neg. Next Page TX .DM9161 NO */
    4 [$ ]8 I4 Y" }# K
  10. ! [8 r- S4 N6 P8 i
  11. /* Register BMCR bit defination */0 G  w9 i0 R* I. l- e! I
  12. #define PHY_FULLD_100M      0x2100      /* Full Duplex 100Mbit               */# c! O( O& D1 \  k. J3 m
  13. #define PHY_HALFD_100M      0x2000      /* Half Duplex 100Mbit               */$ H% a$ N' T# v9 ~' b* [
  14. #define PHY_FULLD_10M       0x0100      /* Full Duplex 10Mbit                */
    " X% ]% a6 I- z# D/ G1 R
  15. #define PHY_HALFD_10M       0x0000      /* Half Duplex 10MBit                */) }! @3 O$ O1 [/ r, ~5 R9 b
  16. #define PHY_AUTO_NEG        0x1000      /* Select Auto Negotiation           */
    3 |) y: D. `3 H
  17. 9 U7 A" C. P. ]% g
  18. /* PHY Extended Registers  only for DP83848C */
    ! `% t0 k  `& u. u) g# g3 h3 X8 j
  19. #define PHY_REG_STS         0x10        /* Status Register                   */& I( x1 d5 i/ ^+ ^2 G
  20. #define PHY_REG_MICR        0x11        /* MII Interrupt Control Register    */
    6 o- K# t$ `# s8 `) W
  21. #define PHY_REG_MISR        0x12        /* MII Interrupt Status Register     */
    % A3 E% H) n4 [& D/ b! F
  22. #define PHY_REG_FCSCR       0x14        /* False Carrier Sense Counter       */% j" q6 O" {5 j
  23. #define PHY_REG_RECR        0x15        /* Receive Error Counter             */) Z& ?. n9 i5 s0 T  I
  24. #define PHY_REG_PCSR        0x16        /* PCS Sublayer Config. and Status   */
    ! x& j" P; \' x7 w3 r, m
  25. #define PHY_REG_RBR         0x17        /* RMII and Bypass Register          */
    6 C/ G1 H$ K+ L0 S. ]5 B4 ~$ c
  26. #define PHY_REG_LEDCR       0x18        /* LED Direct Control Register       */
    ; W8 \* Y% [1 o* Q$ W
  27. #define PHY_REG_PHYCR       0x19        /* PHY Control Register              */
    8 U6 w+ b  A( \7 g
  28. #define PHY_REG_10BTSCR     0x1A        /* 10Base-T Status/Control Register  */
    / V' X0 ~$ I+ F" O
  29. #define PHY_REG_CDCTRL1     0x1B        /* CD Test Control and BIST Extens.  */
      n% z& K: B- R
  30. #define PHY_REG_EDCR        0x1D        /* Energy Detect Control Register    */
    7 i- i- |; p% u& s; w6 R6 v- a  B
  31. 3 `  y' m9 K7 v& f( a( c- b" M
  32. /* PHY Extended Registers  only for DM9161 */
    5 G, H3 {, ^/ |6 \
  33. #define PHY_REG_DSCR        0x10     /* Specified Congfiguration Register            */
    2 |% x" y8 M! ^' b
  34. #define PHY_REG_DSCSR       0x11     /* Specified Congfiguration and Status Register */
    / i. e8 n+ E, {5 e5 ~% H
  35. #define PHY_REG_10BTCSR     0x12     /* 10Base-T Status/Control Register              */
    4 Z4 _" z# E* \8 A
  36. #define PHY_REG_PWDOR       0x13     /* Power Down Control Register                    */
    3 X! a$ n; Y5 G" q. x, y: E
  37. #define PHY_REG_CONGFIG       0x14     /* Specified Congfig Register                   */
    . f3 i3 e: u  Q2 {) H' v( A* X0 [7 L
  38. #define PHY_REG_INTERRUPT   0x15     /* Specified interrupt Register                  */, \- k1 Z% B' x  A' X6 w1 C
  39. #define PHY_REG_SRECR       0x16     /* Specified Receive Error Counter               */& V/ U8 w4 C! y5 h3 o
  40. #define PHY_REG_DISCR       0x17     /* Specified Disconnect Counter Register        */
    - R' X4 L7 B, W; |5 G
  41. #define PHY_REG_RLSR           0x18     /* Hardware reset latch state Register          */8 x0 Z8 |* B1 V' C
  42. #define PHY_REG_PSCR           0x1D     /* Power Saving control register                */
复制代码

# k. m" `6 H' f9 `) a# a对于初学者来说,了解这些知识点就够了,具体如何配置这些寄存器会在下个章节讲解。
8 S  C; q3 M% u* ]' A+ U% F  Y7 @
% h, j( H, K9 l6 ?& A5.6   总结
, ]9 H4 V' k' q
本章节就为大家讲解这么多,主要是为下章节的讲解做个铺垫。学习完毕本章节后,务必将STM32参考手册中MAC章节读一遍。
! s, Y; P3 J8 g; p- Q6 e' ?8 L$ i
$ Y; ^% v3 z; w: y; M6 M& X) J! _1 ]' z% K$ w* Q, e
* a) }! U' X. ]$ X
收藏 评论0 发布时间:2021-12-27 17:00

举报

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