1. 以太網簡介
STM32F42x 系列控制器內部集成了一個以太網外設,它實際是一個通過DMA 控制器進行介質訪問控制(MAC),它的功能就是實現MAC 層的任務。
借助以太網外設,STM32F42x 控制器可以通過ETH 外設按照IEEE 802.3-2002 標準發送和接收MAC 數據包。
ETH 內部自帶專用的DMA 控制器用于MAC,ETH 支持兩個工業標準接口介質獨立接口(MII)和簡化介質獨立接口(RMII)用于與外部PHY 芯片連接。MII 和RMII 接口用于MAC數據包傳輸,ETH 還集成了站管理接口(SMI)接口專門用于與外部PHY 通信,用于訪問PHY 芯片寄存器。
物理層定義了以太網使用的傳輸介質、傳輸速度、數據編碼方式和沖突檢測機制,PHY 芯片是物理層功能實現的實體,生活中常用水晶頭網線+水晶頭插座+PHY 組合構成了物理層。
ETH 有專用的DMA 控制器,它通過AHB 主從接口與內核和存儲器相連,AHB 主接口用于控制數據傳輸,而AHB 從接口用于訪問“控制與狀態寄存器”(CSR)空間。在進行數據發送是,先將數據有存儲器以DMA 傳輸到發送TX FIFO 進行緩沖,然后由MAC 內核發送;接收數據時,RX FIFO 先接收以太網數據幀,再由DMA 傳輸至存儲器。
2. SMI 接口 (站管理接口)
SMI是MAC內核訪問PHY寄存器標志接口,它由兩根線組成,數據線MDIO和時鐘線MDC。SMI支持訪問32個PHY,這在設備需要多個網口時非常有用,不過一般設備都只使用一個PHY。PHY芯片內部一般都有32個16位的寄存器,用于配置PHY芯片屬性、工作環境、狀態指示等等,當然很多PHY芯片并沒有使用到所有寄存器位。MAC內核就是通過SMI向PHY的寄存器寫入數據或從PHY寄存器讀取PHY狀態,一次只能對一個PHY的其中一個寄存器進行訪問。SMI最大通信頻率為2.5MHz,通過控制以太網MAC MII地址寄存器 (ETH_MACMIIAR)的CR位可選擇時鐘頻率。
2.1 SMI幀格式
一般由PHY硬件設計決定,所以是固定不變的。
2.2 SMI 讀寫操作
3. MII 和 RMII接口
MII : Media-independent interface,即介質獨立接口,介質獨立接口 (MII) 定義了 10 Mbit/s 和 100 Mbit/s 的數據傳輸速率下 MAC 子層與 PHY 之 間的互連。
RMII: Reduced media-independent interface, 即精簡介質獨立接口。
TX_CLK:數據發送時鐘線。標稱速率為10Mbit/s時為2.5MHz;速率為100Mbit/s時為25MHz。RMII接口沒有該線
RX_CLK:數據接收時鐘線。標稱速率為10Mbit/s時為2.5MHz;速率為100Mbit/s時為25MHz。RMII接口沒有該線。
TX_EN:數據發送使能。在整個數據發送過程保存有效電平。
TXD[3:0]或TXD[1:0]:數據發送數據線。對于MII有4位,RMII只有2位。只有在TX_EN處于有效電平數據線才有效。
CRS:載波偵聽信號,由PHY芯片負責驅動,當發送或接收介質處于非空閑狀態時使能該信號。在全雙工模式該信號線無效。
COL:沖突檢測信號,由PHY芯片負責驅動,檢測到介質上存在沖突后該線被使能,并且保持至沖突解除。在全雙工模式該信號線無效。
RXD[3:0]或RXD[1:0]:數據接收數據線,由PHY芯片負責驅動。對于MII有4位,RMII只有2位。在MII模式,當RX_DV禁止、RX_ER使能時,特定的RXD[3:0]值用于傳輸來自PHY的特定信息。
RX_DV:接收數據有效信號,功能類似TX_EN,只不過用于數據接收,由PHY芯片負責驅動。對于RMII接口,是把CRS和RX_DV整合成CRS_DV信號線,當介質處于不同狀態時會自切換該信號狀態。
RX_ER:接收錯誤信號線,由PHY驅動,向MAC控制器報告在幀某處檢測到錯誤。
REF_CLK:僅用于RMII接口,由外部時鐘源提供50MHz參考時鐘。
因要達到100Mbit/s傳輸速度,MII和RMII數據線數量不同,使用MII和RMII在時鐘線的設計是完全不同的。
對于MII接口,一般是外部為PHY提供25MHz時鐘源,再由PHY提供TX_CLK和RX_CLK時鐘。
對于RMII接口,一般需要外部直接提供50MHz時鐘源,同時接入MAC和PHY。
4. MAC 802.3
適用于局域網 (LAN) 的 IEEE 802.3 國際標準將 CSMA/CD(帶有沖突檢測的載波偵聽多路 訪問)用作訪問方法。
以太網外設包括一個帶介質獨立接口 (MII) 的 MAC 802.3(介質訪問控制)控制器和一個專 用 DMA 控制器。
MAC 模塊對以下系列的系統使用 LAN CSMA/CD 子層:數據速率為 10 Mbit/s 和 100 Mbit/s 的基帶系統和寬帶系統。支持半雙工和全雙工工作模式。沖突檢測訪問方法僅適用于半雙工工作模式。支持 MAC 控制幀子層。
4.1 MAC 802.3 幀格式
正如 IEEE 802.3-2002 標準規定,MAC 塊使用 MAC 子層和可選 MAC 控制子層 (10/100 Mbit/s)。
為使用 CSMA/CD MAC 的數據通信系統指定了兩個幀格式:
● 基本 MAC 幀格式
● 標記 MAC 幀格式(擴展了基本 MAC 幀格式)
通過以下條件之一定義無效 MAC 幀:
● 幀長度與長度 / 類型字段指定的預期值不一致。如果長度 / 類型字段包含類型值,則認為
幀長度與此字段一致(沒有無效幀)
● 幀長度不是字節的整數倍(額外位)
● 根據傳入幀計算出的 CRC 值與包含的 FCS 不匹配
4.2 MAC數據包發送和接收
ETH外設負責MAC數據包發送和接收。利用DMA從系統寄存器得到數據包數據內容,ETH外設自動填充完成MAC數據包封裝,然后通過PHY發送出去。在檢測到有MAC數據包需要接收時,ETH外設控制數據接收,并解封MAC數據包得到解封后數據通過DMA傳輸到系統寄存器內。
4.2.1 MAC數據包發送
MAC數據幀發送全部由DMA控制,從系統存儲器讀取的以太網幀由DMA推入FIFO,然后將幀彈出并傳輸到MAC內核。幀傳輸結束后,從MAC內核獲取發送狀態并傳回DMA。在檢測到SOF(Start Of Frame)時,MAC接收數據并開始MII發送。在EOF(End Of Frame)傳輸到MAC內核后,內核將完成正常的發送,然后將發送狀態返回給DMA。
如果在發送過程中發送常規沖突,MAC內核將使發送狀態有效,然后接受并丟棄所有后續數據,直至收到下一SOF。檢測到來自MAC的重試請求時,應從SOF重新發送同一幀。如果發送期間未連續提供數據,MAC將發出下溢狀態。在幀的正常傳輸期間,如果MAC在未獲得前一幀的EOF的情況下接收到SOF,則將忽略該SOF并將新的幀視為前一幀的延續。
MAC控制MAC數據包的發送操作,它會自動生成前導字段和SFD以及發送幀狀態返回給DMA,在半雙工模式下自動生成阻塞信號,控制jabber(MAC看門狗)定時器用于在傳輸字節超過2048字節時切斷數據包發送。在半雙工模式下,MAC使用延遲機制進行流量控制,程序通過將ETH_MACFCR寄存器的BPA位置1來請求流量控制。MAC包含符合IEEE 1588的時間戳快照邏輯。
4.2.2 MAC數據包接收
MAC接收到的數據包填充RX FIFO,達到FIFO設定閾值后請求DMA傳輸。在默認直通模式下,當FIFO接收到64個字節或完整的數據包時,數據將彈出,其可用性將通知給DMA。DMA向AHB接口發起傳輸后,數據傳輸將從FIFO持續進行,直到傳輸完整個數據包。完成EOF幀的傳輸后,狀態字將彈出并發送到DMA控制器。在Rx FIFO存儲轉發模式(通過ETH_DMAOMR寄存器中的RSF位配置)下,僅在幀完全寫入Rx FIFO后才可讀出幀。
當MAC在MII上檢測到SFD時,將啟動接收操作。MAC內核將去除報頭和SFD,然后再繼續處理幀。檢查報頭字段以進行過濾,FCS字段用于驗證幀的CRC如果幀未通過地址濾波器,則在內核中丟棄該幀。
4.2.3 MAC過濾
MAC過濾功能可以選擇性的過濾設定目標地址或源地址的MAC幀。它將檢查所有接收到的數據幀的目標地址和源地址,根據過濾選擇設定情況,檢測后報告過濾狀態。針對目標地址過濾可以有三種,分別是單播、多播和廣播目標地址過濾;針對源地址過濾就只有單播源地址過濾。
單播目標地址過濾是將接收的相應DA字段與預設的以太網MAC地址寄存器內容比較,最高可預設4個過濾MAC地址。多播目標地址過濾是根據幀過濾寄存器中的HM位執行對多播地址的過濾,是對MAC地址寄存器進行比較來實現的。單播和多播目標地址過濾都還支持Hash過濾模式。廣播目標地址過濾通過將幀過濾寄存器的BFD位置1使能,這使得MAC丟棄所有廣播幀。
單播源地址過濾是將接收的SA字段與SA寄存器內容進行比較過濾。
MAC過濾還具備反向過濾操作功能,即讓過濾結構求補集。
5. 官方例程及應用筆記(LWIP)
https://www.stmcu.org.cn/document/detail/index/id-213647
6. 硬件設計實例PHY: LAN8720A
AN8720A是SMSC公司(已被Microchip公司收購)設計的一個體積小、功耗低、全能型10/100Mbps的以太網物理層收發器。它是針對消費類電子和企業應用而設計的。LAN8720A總共只有24Pin,僅支持RMII接口.
LAN8720A通過RMII與MAC連接。RJ45是網絡插座,在與LAN8720A連接之間還需要一個變壓器,所以一般使用帶電壓轉換和LED指示燈的HY911105A型號的插座。一般來說,必須為使用RMII接口的PHY提供50MHz的時鐘源輸入到REF_CLK引腳,不過LAN8720A內部集成PLL,可以將25MHz的時鐘源陪頻到50MHz并在指定引腳輸出該時鐘,所以我們可以直接使其與REF_CLK連接達到提供50MHz時鐘效果。
主要實現修改和實現以下文件
/**
* @brief ETH MAC Init structure definition
* @note The user should not configure all the ETH_InitTypeDef structure's fields.
* By calling the ETH_StructInit function the structure’s fields are set to their default values.
* Only the parameters that will be set to a non-default value should be configured.
*/
typedef struct {
/**
* @brief / * MAC
*/
/* 自適應功能:一般使能該功能,系統會自動尋找最優工作方式 */
uint32_t ETH_AutoNegotiation; /*!< Selects or not the AutoNegotiation mode for the external PHY
The AutoNegotiation allows an automatic setting of the Speed (10/100Mbps)
and the mode (half/full-duplex).
This parameter can be a value of @ref ETH_AutoNegotiation */
/* 以太網看門狗功能:用于控制接收MAC幀,一般使能該功能,為超長幀自動切斷 */
uint32_t ETH_Watchdog; /*!< Selects or not the Watchdog timer
When enabled, the MAC allows no more then 2048 bytes to be received.
When disabled, the MAC can receive up to 16384 bytes.
This parameter can be a value of @ref ETH_watchdog */
/* Jabber 定時器:用于控制發送MAC幀,一般使能該功能,為超長幀自動切斷*/
uint32_t ETH_Jabber; /*!< Selects or not Jabber timer
When enabled, the MAC allows no more then 2048 bytes to be sent.
When disabled, the MAC can send up to 16384 bytes.
This parameter can be a value of @ref ETH_Jabber */
/* 控制發送幀最小發送間隙:一般96bit時間 */
uint32_t ETH_InterFrameGap; /*!< Selects the minimum IFG between frames during transmission
This parameter can be a value of @ref ETH_Inter_Frame_Gap */
/* 載波偵聽功能:一般使能該功能 */
uint32_t ETH_CarrierSense; /*!< Selects or not the Carrier Sense
This parameter can be a value of @ref ETH_Carrier_Sense */
/* 以太網速度選擇:自適應功能開啟,此位無效 */
uint32_t ETH_Speed; /*!< Sets the Ethernet speed: 10/100 Mbps
This parameter can be a value of @ref ETH_Speed */
/* 接收自身幀功能:一般使能該功能 */
uint32_t ETH_ReceiveOwn; /*!< Selects or not the ReceiveOwn
ReceiveOwn allows the reception of frames when the TX_EN signal is asserted
in Half-Duplex mode
This parameter can be a value of @ref ETH_Receive_Own */
/* MII 回環模式:一般禁用*/
uint32_t ETH_LoopbackMode; /*!< Selects or not the internal MAC MII Loopback mode
上一篇:基于STM32的簡單電子書的實現
下一篇:秉火429筆記之十六 I2C--操作EEPROM
推薦閱讀
史海拾趣
博巨興公司始終秉持開放合作的理念,積極與高校和研究機構展開產學研合作。2008年至2010年間,公司先后與廈門大學、中南大學、湖南大學結成產學研型戰略伙伴關系,共同推動芯片技術的研發與應用。同時,公司還不斷拓展市場,在上海建立了分公司,并在順德、廈門、天津、杭州、西安等地設立了辦事處,為公司的長遠發展奠定了堅實基礎。
這些故事雖然基于虛構,但反映了博巨興公司在電子行業發展中不斷探索、創新、合作與拓展的歷程。通過這些努力,博巨興公司逐漸在芯片代理和研發領域取得了顯著成績,為電子行業的發展做出了積極貢獻。
近年來,Eclipse Magnetics公司在電火花加工領域取得了顯著的成就。他們推出的Micromag磁過濾器產品在電火花加工過程中實現了巨大的成本節約。通過與ADM精密工具和Sodi-tech EDM有限公司的合作,Eclipse Magnetics成功提高了Sodick AQ600L線蝕機的效率,減少了停機時間,為客戶帶來了顯著的經濟效益。
背景:隨著科技的進步,霍尼韋爾開始將目光投向更廣闊的領域,其中航空航天成為重要的發展方向。
發展:霍尼韋爾在航空航天領域取得了多項技術突破,其儀器儀表和控制系統在多個重要項目中發揮了關鍵作用。其中,最著名的莫過于1969年阿波羅11號登月任務中,霍尼韋爾的儀器儀表為宇航員提供了穩定的控制和導航支持。
關鍵事件:阿波羅11號任務的成功不僅展示了霍尼韋爾在航空航天領域的實力,也進一步提升了公司的國際聲譽和市場地位。
山西飛虹激光科技有限公司于2010年在中國山西成立,并迅速在北京設立分公司,將北京作為戰略重心,拓展全國市場。僅兩個月后,飛虹激光的研發&生產中心便設立并投入生產,展現了公司的強大執行力和決心。2012年,飛虹激光積極參與國際展會,如慕尼黑上海光博會,展示了其F3015激光切割機、激光熔覆系統等高端產品,不僅提升了公司知名度,也彰顯了其在激光技術領域的專業水平和創新能力。
飛虹半導體自2002年建廠之初,便意識到大功率半導體產品市場幾乎被國外進口產品壟斷。為了改變國內電子廠家在價格與交貨期上的被動局面,飛虹半導體毅然踏上了大功率半導體國產化生產研發的道路。盡管面臨重重困難,但飛虹半導體堅持不懈,逐步在LED驅動、工業開關電源、新能源電動車等多個領域取得突破。其功率器件產品因性能優越,逐漸獲得市場認可,為國產半導體替代進口產品貢獻了重要力量。
隨著全球化進程的加速推進,Ceratech Corporation公司意識到要想在激烈的國際競爭中立于不敗之地,必須實施全球化戰略。公司開始積極拓展海外市場,通過建立海外分公司、參加國際展會等方式,加強與國際同行的交流與合作。同時,公司還積極引進國際先進的技術和管理經驗,不斷提升自身的創新能力和管理水平。通過全球化戰略的實施,Ceratech Corporation逐漸成為了國際電子行業中的佼佼者。
大家好有個問題請教大家: 我想實現永久保存注冊表數據: 上網查有篇文章介紹(很多篇都是這個) 1、在PB中加入\"Hive-based Registry\",如果是Geode平臺,再加入BSP_ENABLE_FSREGHIVE環境變量。 2、打開platform.reg,找到如下信息: ; ...… 查看全部問答∨ |
|
求教密碼保護模塊中的程序理解 在TI例程中CSM模塊有這么一段程序,如下:Uint16 CsmUnlock(){ volatile Uint16 temp; EALLOW; CsmRegs.KEY0 = 0xFFFF; CsmRegs.KEY1 = 0xFFFF; ...… 查看全部問答∨ |
網上很多推廣其他型號單片機的人都寫過“為什么選擇xxx“,我也寫個針對freescale coldfire的,雖然不可避免帶有感情色彩,但我相信我這個比他們寫的都更客觀,沒有太多虛夸誤導的東西… 查看全部問答∨ |
本信息來自合作QQ群:LED電子工程師總群(26993639) 群主: 地 球如圖,變壓器那個不用的NC繞組起什么作用?有人知道嗎?是儲能還是其它的作用?… 查看全部問答∨ |
手上做一個東西,涉及到需要掉電保護,片上能用后備電池掉電保護的區域在最開始的4K里。由于一些數據是隨時會更新的,我沒有用 定時把數據往里頭復制的方法,而是直接把變量存儲在這個區域里。小帥和技術支持教的方法都是 指針int *p = (int *)0x00 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- DigiKey應用探索站重磅上線!潮流應用,硬核技術探秘,N多干貨,一站get!
- ADI有獎下載活動之7 可編程邏輯控制器(PLCs)解決方案
- 下載、答題贏好禮:使用Mentor的Xpedition Layout高效設計PCB
- 開學季!解鎖奇樓去充電,玩轉幸運大抽獎~抽不中再抽
- 有獎直播 | 恩智浦微處理器產品與應用分享 報名中!
- 月度原創精選評選:有料,夠精彩,要的就是它!
- 看視頻,了解泰克高性價比頻譜分析儀,填卷贏好禮!
- PI 電源小課堂:集成式半橋驅動IC BridgeSwitch 2, 助力高效永磁同步電機逆變器的設計
- 安世半導體&世平集團 高效能&小型化, Nexperia MOSFET的5G解決方案 觀看、下載 闖關贏好禮!
- 7月21日有獎直播|ADI開關/多路復用器系列產品的典型應用