之前的文章主要介紹了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...