STM32網絡之MAC控制器

以前的文章主要介紹了STM32的ExternalPHY Intereface部分,《STM32網絡電路設計》也就是下圖區域1。網絡

本文將重點講解STM32的MAC控制器,也就是下圖區域2。數據結構

圖片

0一、STM32的MAC概述

STM32的MAC控制器全稱是:MediaAccess Control。app

STM32F207的MAC控制器支持的模式spa

  • 符合IEEE 802.3 MAC設計

  • 10/100Mbps網絡3d

  • 全雙工和半雙工通訊code

  • 和外部PHY的MII接口和RMII接口blog

  • 支持前導碼和幀起始數據(SFD)插入或刪除接口

  • 支持IPv4的頭部checksum校驗和檢查圖片

  • 支持以太網喚醒

  • 有效載荷檢查

圖片

其實ST在設計MAC控制器時,設計了其餘功能,PTP(IEEE1588)精確時間協議,MMC網絡統計功能,這些功能並不經常使用,本人也沒有接觸,就再也不講解。

對於上面說到的:支持前導碼和幀起始數據(SFD)插入或刪除。

以前的推文《以太網數據首部》中並無說到前導碼和幀起始數據(SFD)。一個以太網數據結構以下:

圖片

大多數網絡設備都是支持前導碼和幀起始數據(SFD)插入或刪除。因此能夠說,這是網絡硬件設備在以太網幀前打包的數據。我的認爲並不屬於TCP/IP協議簇的內容。

 

0二、MAC地址過濾

STM32的MAC控制器支持MAC地址過濾的。

目的地址過濾:

  • 單播過濾

  • 組播過濾

  • 廣播過濾

注意:廣播過濾會致使ARP廣播也收不到,具體請看《TCP/IP協議簇中ARP協議》。

 

源地址過濾:

  • 單播過濾

 

STM32的MAC控制器還支持:規則翻轉,好比,原來只容許單播過濾接收,翻轉以後,只有單播不接收。

在STM32實際項目開發中,只須要調用ST的庫文件便可

ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//容許接收全部廣播幀

關於MAC地址相關信息,什麼是廣播,MAC地址表示方法,請看以前的推文《以太網數據首部》。

 

0三、有效載荷檢查

有效載荷檢查實際上是IP協議要求長度必須大於46個字節,不足時填充pad字節,具體細節請看《5000字「肝」了這篇IP協議》。

當從應用程序接收的字節數低於60時(DA+SA+LT+Data),零被附加到發送幀以使數據長度正好爲46字節,以知足最小數據字段的要求IEEE802.3要求。

圖片

0四、Checksum校驗和

首先明確,STM32的MAC控制器並不能對TCP/IP協議中全部的Checksum自動校驗。STM32實現了IPv4,ICMP,TCP和UDP協議的Checksum校驗和。

發送的時候,STM32會自動計算Checksum校驗和並自動插入。

接收的時候,STM32會自動校驗Checksum校驗和是否正確。

上述功能能夠經過如下操做開啓:

經過在ETH_MACCR寄存器中設置IPCO位來啓用接收校驗和卸載。

經過在TDES1寄存器中設置CIC位,在傳輸時啓用校驗和計算和插入。

但實際代碼開發中,並不須要操做寄存器,使用ST的庫接口以下

ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable;           //開啓ipv4和TCP/UDP/ICMP的幀校驗和卸載

 

點擊查看本文所在的專輯,STM32F207網絡開發

相關文章
相關標籤/搜索