STM32網路之MAC控制器

2022-09-03 19:00:15 字數 1400 閱讀 9894

之前的文章主要介紹了stm32的externalphy intereface部分,《stm32網路電路設計》也就是下圖區域1。

本文將重點講解stm32的mac控制器,也就是下圖區域2。

stm32的mac控制器全稱是:mediaaccess control。

stm32f207的mac控制器支援的模式

其實st在設計mac控制器時,設計了其他功能,ptp(ieee1588)精確時間協議,mmc網路統計功能,這些功能並不常用,本人也沒有接觸,就不再講解。

對於上面說到的:支援前導碼和幀起始資料(sfd)插入或刪除。

之前的推文《乙太網資料首部》中並沒有說到前導碼和幀起始資料(sfd)。乙個乙太網資料結構如下:

大多數網路裝置都是支援前導碼和幀起始資料(sfd)插入或刪除。所以可以說,這是網路硬體裝置在乙太網幀前打包的資料。個人認為並不屬於tcp/ip協議簇的內容。

stm32的mac控制器支援mac位址過濾的。

注意:廣播過濾會導致arp廣播也收不到,具體請看《tcp/ip協議簇中arp協議》。

stm32的mac控制器還支援:規則翻轉,比如,原來只允許單播過濾接收,翻轉之後,只有單播不接收。

在stm32實際專案開發中,只需要呼叫st的庫檔案即可

eth_initstructure.eth_broadcastframesreception =eth_broadcastframesreception_enable;//

允許接收所有廣播幀

關於mac位址相關資訊,什麼是廣播,mac位址表示方法,請看之前的推文《乙太網資料首部》。

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

當從應用程式接收的位元組數低於60時(da+sa+lt+data),零被附加到傳送幀以使資料長度正好為46位元組,以滿足最小資料字段的要求ieee802.3要求。

首先明確,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的幀校驗和解除安裝

STM32之CAN控制器

1 can只具有can high和can low兩條訊號線,can是以差分訊號的形式進行通訊的 2 can通訊有兩種網路 一種是遵循iso11898標準的高速短距離閉環網路,它的匯流排最大長度為40m,通訊速度最高位1mbit s 另外一種是遵循iso11519 2標準的低速遠距離開環網路,最大傳輸...

STM32學習之CAN控制器簡介

1 stm32自帶了基本擴充套件can外設,又稱bxcan,bxcan的特點如下 支援can協議2.0a和2.0b主動模式 波特率最高達1mbps 支援時間觸發通訊 具有3個傳送郵箱 具有3級深度的2個接收fifo 可變的篩選器組 也稱過濾器組,最多28個 2 stm32 can控制器簡介 模式 初...

STM32使用DMA控制器試驗總結

在使用串列埠dma試驗過程中,遇到了一些問題,通過試驗找到了問題所在,也對dma的應用有了新的認識,僅以此分享給大家,不足之處請多多指教。dma初始化 串列埠對應的dma請求通道 define usart tx dma channel dma1 channel4 define usart tx dm...