日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【STM32F407】第3章 PHY芯片和STM32的MAC基础知识

發布時間:2023/12/19 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 【STM32F407】第3章 PHY芯片和STM32的MAC基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最新教程下載:http://www.armbbs.cn/forum.php?mod=viewthread&tid=104619

第3章 PHY芯片和STM32的MAC基礎知識

本章節為大家講解STM32自帶的MAC和PHY芯片的基礎知識,為下一章底層驅動的講解做一個鋪墊。

4.1初學者重要提示

4.2什么是MAC

4.3 MAC地址

4.4 STM32自帶MAC基礎知識

4.5以太網PHY基礎知識

4.6總結

3.1 初學者重要提示

學習本章節后,務必學習STM32參考手冊中MAC章節的基礎知識講解,非常重要。
實際項目中,關于MAC的配置問題,需要大家學習我們論壇網友發的這個帖子。

IEEE MAC地址購買價格及購買方案選擇:http://www.armbbs.cn/forum.php?mod=viewthread&tid=28416。

3.2 什么是MAC

媒體訪問控制(MAC,Media Access Control),又稱作介質訪問控制,簡稱MAC,是局域網中數據鏈路層的下層部分,提供地址及媒體訪問的控制方式,使得不同設備或網絡上的節點可以在多點的網絡上通信,而不會互相沖突,上述的特性在局域網中格外重要。早期網絡發展時以MAC判別各個網絡接口的位置,但后來互聯網發展后,才有IP的制定與使用。若只是兩臺設備之間全雙工的通信,因為兩臺設備可以同時發送及接收數據,不會沖突,因此不需要用到MAC協議。

媒體訪問控制MAC子層負責解決與媒體接入有關的問題,在物理層的基礎上進行無差錯的通信。

MAC子層是網絡與設備的接口,它從網絡層接收數據幀,然后通過媒體訪問規則和物理層將數據幀發送到物理鏈路上。它也從物理層接收數據幀,再送到網絡層??偟膩碚f,MAC有三大功能:

決定節點何時發送數據包。
將數據幀發送到物理層,然后發送到物理鏈路。
從物理層接收數據幀,然后送給網絡層處理。

其中最重要的是第一點:決定節點何時發送數據包。對于每一種媒體訪問控制技術,用來控制節點發送時機的規則叫做媒體訪問規則。局域網上的節點不能想要發送數據就發送,節點只能在輪到它的時候才發送。

3.3 MAC地址

MAC地址,又稱為物理地址、硬件地址,用來定義網絡設備的位置。在OSI模型中,第三層網絡層負責 IP地址,第二層數據鏈路層則負責 MAC地址。因此一個主機會有一個MAC地址,而每個網絡位置會有一個專屬于它的IP地址。

MAC地址長度是48bit(6字節),由16進制的數字組成,分為前24位和后24位:

前24位叫做組織唯一標志符(Organizationally Unique Identifier,即OUI),是由IEEE的注冊管理機構給不同廠家分配的代碼,區分了不同的廠家。
后24位是由廠家自己分配的,稱為擴展標識符。同一個廠家生產的網卡中MAC地址后24位是不同的。

MAC地址的完整數據格式如下(來自wiki百科):

第一個字節的后兩位比較重要:

b0 = 0:表示MAC單播地址。

b0 = 1 : 表示MAC組播地址。

b1 = 0:表示OUI分配的全球唯一MAC地址。

b1 = 1:表示用于本地管理的MAC地址。

為了更好地理解,舉幾個例子:

00:xx:xx:xx:xx:xx是MAC單播地址。
01:xx:xx:xx:xx:xx是MAC組播地址。
01:00:5e:xx:xx:xx是IPv4組播地址。
ff:ff:ff:ff:ff:ff則作為廣播地址。
00:50:c2:xx:xx:xx 是意法半導體的MAC地址。

3.4 STM32自帶MAC基礎知識

關于STM32自帶的MAC部分,STM32參考手冊中寫的晦澀難懂,特別是中文翻譯版本,邏輯混亂,如果可以的話,建議大家看英文版。

STM32參考手冊中對MAC的講解主要分為三部分:

MAC的接口MII和RMII。

參考手冊中對這一部分講解的比較詳細,也比較容易理解,建議初學者務必讀一讀。我們這里就不將其復制粘貼過來了。

MAC802.3幀格式,幀發送,幀接收等方面的講解。

這一個部分知識點理解起來比較困難,配合下一章節的底層驅動就好理解了。

MAC的DMA收發方式控制。

手冊中給出了DMA方式的發送和接收的初始化順序,在下一章節講解底層驅動的時候結合驅動代碼會理解的更好,建議初學者也讀一遍。

3.5 以太網PHY基礎知識

僅有STM32自帶的MAC還不能做網絡通信,還需要外接以太網PHY芯片才可以,如同RS485通信一樣,僅有一個串口是不行的,還需要外接RS485的PHY芯片。

PHY(Port Physical Layer),可稱之為端口物理層,是一個對OSI模型物理層的簡稱?,F在常用于STM32的有DP83848,LAN8270,DM9161/9162等。這些PHY芯片都大同小異,基本寄存器都是一樣的,只有擴展寄存和廠商專門設置的寄存器不同。如果用戶將其中一個PHY驅動成功了,驅動另一個也是非常方便的,下面是DP83848和DM9161/9162的基本寄存器和擴展寄存器:

/* DP83848C and DM9161 PHY Registers is the same */
#define PHY_REG_BMCR        0x00        /* Basic Mode Control Register       */
#define PHY_REG_BMSR        0x01        /* Basic Mode Status Register        */
#define PHY_REG_IDR1        0x02        /* PHY Identifier 1                  */
#define PHY_REG_IDR2        0x03        /* PHY Identifier 2                  */
#define PHY_REG_ANAR        0x04        /* Auto-Negotiation Advertisement    */
#define PHY_REG_ANLPAR      0x05        /* Auto-Neg. Link Partner Abitily    */
#define PHY_REG_ANER        0x06        /* Auto-Neg. Expansion Register      */
#define PHY_REG_ANNPTR      0x07        /* Auto-Neg. Next Page TX .DM9161 NO */

/* Register BMCR bit defination */
#define PHY_FULLD_100M      0x2100      /* Full Duplex 100Mbit               */
#define PHY_HALFD_100M      0x2000      /* Half Duplex 100Mbit               */
#define PHY_FULLD_10M       0x0100      /* Full Duplex 10Mbit                */
#define PHY_HALFD_10M       0x0000      /* Half Duplex 10MBit                */
#define PHY_AUTO_NEG        0x1000      /* Select Auto Negotiation           */

/* PHY Extended Registers  only for DP83848C */
#define PHY_REG_STS         0x10        /* Status Register                   */
#define PHY_REG_MICR        0x11        /* MII Interrupt Control Register    */
#define PHY_REG_MISR        0x12        /* MII Interrupt Status Register     */
#define PHY_REG_FCSCR       0x14        /* False Carrier Sense Counter       */
#define PHY_REG_RECR        0x15        /* Receive Error Counter             */
#define PHY_REG_PCSR        0x16        /* PCS Sublayer Config. and Status   */
#define PHY_REG_RBR         0x17        /* RMII and Bypass Register          */
#define PHY_REG_LEDCR       0x18        /* LED Direct Control Register       */
#define PHY_REG_PHYCR       0x19        /* PHY Control Register              */
#define PHY_REG_10BTSCR     0x1A        /* 10Base-T Status/Control Register  */
#define PHY_REG_CDCTRL1     0x1B        /* CD Test Control and BIST Extens.  */
#define PHY_REG_EDCR        0x1D        /* Energy Detect Control Register    */

/* PHY Extended Registers  only for DM9161 */
#define PHY_REG_DSCR        0x10     /* Specified Congfiguration Register            */
#define PHY_REG_DSCSR       0x11     /* Specified Congfiguration and Status Register */
#define PHY_REG_10BTCSR     0x12     /* 10Base-T Status/Control Register              */
#define PHY_REG_PWDOR       0x13     /* Power Down Control Register                    */
#define PHY_REG_CONGFIG       0x14     /* Specified Congfig Register                   */
#define PHY_REG_INTERRUPT   0x15     /* Specified interrupt Register                  */
#define PHY_REG_SRECR       0x16     /* Specified Receive Error Counter               */
#define PHY_REG_DISCR       0x17     /* Specified Disconnect Counter Register        */
#define PHY_REG_RLSR           0x18     /* Hardware reset latch state Register          */
#define PHY_REG_PSCR           0x1D     /* Power Saving control register                */

對于初學者來說,了解這些知識點就夠了,具體如何配置這些寄存器會在下個章節講解。

3.6 總結

本章節就為大家講解這么多,主要是為后面移植章節的講解做個鋪墊。學習完畢本章節后,務必將STM32參考手冊中MAC章節讀一遍。

微信公眾號:armfly_com

安富萊論壇:www.armbbs.cn

安富萊淘寶:https://armfly.taobao.com

總結

以上是生活随笔為你收集整理的【STM32F407】第3章 PHY芯片和STM32的MAC基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。