這篇文章給大家分享的是有關(guān)STM32網(wǎng)絡(luò)中MAC控制器有什么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為越城企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),越城網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
STM32的MAC控制器,也就是下圖區(qū)域2。
STM32的MAC控制器全稱是:MediaAccess Control。
STM32F207的MAC控制器支持的模式
符合IEEE 802.3 MAC
10/100Mbps網(wǎng)絡(luò)
全雙工和半雙工通信
和外部PHY的MII接口和RMII接口
支持前導(dǎo)碼和幀起始數(shù)據(jù)(SFD)插入或刪除
支持IPv4的頭部checksum校驗(yàn)和檢查
支持以太網(wǎng)喚醒
有效載荷檢查
其實(shí)ST在設(shè)計(jì)MAC控制器時(shí),設(shè)計(jì)了其他功能,PTP(IEEE1588)精確時(shí)間協(xié)議,MMC網(wǎng)絡(luò)統(tǒng)計(jì)功能,這些功能并不常用,本人也沒有接觸,就不再講解。
對于上面說到的:支持前導(dǎo)碼和幀起始數(shù)據(jù)(SFD)插入或刪除。
之前的推文《以太網(wǎng)數(shù)據(jù)首部》中并沒有說到前導(dǎo)碼和幀起始數(shù)據(jù)(SFD)。一個(gè)以太網(wǎng)數(shù)據(jù)結(jié)構(gòu)如下:
大多數(shù)網(wǎng)絡(luò)設(shè)備都是支持前導(dǎo)碼和幀起始數(shù)據(jù)(SFD)插入或刪除。所以可以說,這是網(wǎng)絡(luò)硬件設(shè)備在以太網(wǎng)幀前打包的數(shù)據(jù)。個(gè)人認(rèn)為并不屬于TCP/IP協(xié)議簇的內(nèi)容。
STM32的MAC控制器支持MAC地址過濾的。
目的地址過濾:
單播過濾
組播過濾
廣播過濾
注意:廣播過濾會(huì)導(dǎo)致ARP廣播也收不到,具體請看《TCP/IP協(xié)議簇中ARP協(xié)議》。
源地址過濾:
單播過濾
STM32的MAC控制器還支持:規(guī)則翻轉(zhuǎn),比如,原來只允許單播過濾接收,翻轉(zhuǎn)之后,只有單播不接收。
在STM32實(shí)際項(xiàng)目開發(fā)中,只需要調(diào)用ST的庫文件即可
ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Enable;//允許接收所有廣播幀
關(guān)于MAC地址相關(guān)信息,什么是廣播,MAC地址表示方法,請看之前的推文《以太網(wǎng)數(shù)據(jù)首部》。
有效載荷檢查其實(shí)是IP協(xié)議要求長度必須大于46個(gè)字節(jié),不足時(shí)填充pad字節(jié),具體細(xì)節(jié)請看《5000字“肝”了這篇IP協(xié)議》。
當(dāng)從應(yīng)用程序接收的字節(jié)數(shù)低于60時(shí)(DA+SA+LT+Data),零被附加到發(fā)送幀以使數(shù)據(jù)長度正好為46字節(jié),以滿足最小數(shù)據(jù)字段的要求IEEE802.3要求。
首先明確,STM32的MAC控制器并不能對TCP/IP協(xié)議中所有的Checksum自動(dòng)校驗(yàn)。STM32實(shí)現(xiàn)了IPv4,ICMP,TCP和UDP協(xié)議的Checksum校驗(yàn)和。
發(fā)送的時(shí)候,STM32會(huì)自動(dòng)計(jì)算Checksum校驗(yàn)和并自動(dòng)插入。
接收的時(shí)候,STM32會(huì)自動(dòng)校驗(yàn)Checksum校驗(yàn)和是否正確。
上述功能可以通過以下操作開啟:
通過在ETH_MACCR寄存器中設(shè)置IPCO位來啟用接收校驗(yàn)和卸載。
通過在TDES1寄存器中設(shè)置CIC位,在傳輸時(shí)啟用校驗(yàn)和計(jì)算和插入。
但實(shí)際代碼開發(fā)中,并不需要操作寄存器,使用ST的庫接口如下
ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable; //開啟ipv4和TCP/UDP/ICMP的幀校驗(yàn)和卸載
感謝各位的閱讀!關(guān)于“STM32網(wǎng)絡(luò)中MAC控制器有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!