版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
...wd......wd......wd...本科畢業(yè)設(shè)計〔20屆〕題目基于stm32無線數(shù)據(jù)基站的設(shè)計和實現(xiàn)學院電子信息學院專業(yè)電子信息工程姓名陳潔班級09091813學號09918307指導教師周磊完成日期20年3月誠信承諾我謹在此承諾:本人所寫的畢業(yè)論文《基于stm32無線數(shù)據(jù)基站的設(shè)計和實現(xiàn)》均系本人獨立完成,沒有抄襲行為,凡涉及其他作者的觀點和材料,均作了注釋,假設(shè)有不實,后果由本人承當。承諾人〔簽名〕:年月日摘要隨著人們的生活及其生產(chǎn)水平的不斷提高,對生活中各種數(shù)據(jù)接收的速度和準確度的要求就顯得尤為重要,無線數(shù)據(jù)收發(fā)控制就是一個典型的例子,因此無線數(shù)據(jù)基站就是現(xiàn)代生產(chǎn)生活中應運而生的一種智能、快捷、方便可靠的檢測系統(tǒng)。本設(shè)計通過STM32F107控制無線收發(fā)模塊從無線網(wǎng)絡(luò)節(jié)點接收數(shù)據(jù),進展相關(guān)處理后通過以太網(wǎng)把數(shù)據(jù)發(fā)送至應用服務(wù)器。系統(tǒng)的用戶統(tǒng)用戶通過Internet網(wǎng)絡(luò)訪問應用服務(wù)器,其中本設(shè)計起到網(wǎng)橋和防火墻的作用。其中本設(shè)計中采用的以太網(wǎng)控制器為DM9161芯片。本設(shè)計軟件局部的主要工作是在硬件平臺的根基上實現(xiàn)TCP/IP協(xié)議棧,由于TCP/IP協(xié)議棧較復雜,功能實現(xiàn)比擬困難,一般選擇成熟的TCP/IP協(xié)議棧進展移植,此次選擇開源并且較成熟的LwIP以太網(wǎng)協(xié)議棧。關(guān)鍵詞:STM32F107以太網(wǎng)DM9161TCP/IP協(xié)議棧ABSTRACTWiththecontinuousimprovementofpeople'slivesandtheirproductionlevels,thethelifedatareceptionspeedandaccuracyrequirementsisparticularlyimportant,wirelessdatatransceivercontrolisatypicalexample,thewirelessdatabasestationismodernproductionlifecameintobeingasmart,fast,convenientandreliabledetectionsystem.ThisdesignSTM32F107controlwirelesstransceivermodulereceivesdatafromthewirelessnetworknodesrelatedviaEthernettransmitsdatatotheapplicationserver.ThesystemusersystemuseraccesstotheapplicationserverthroughtheInternet,includingthedesignplayaroleofbridgeandfirewall.DM9161Ethernetcontrollerchipusedinthedesign.ThesoftwarepartofthedesignworkisimplementedinhardwareplatformbasedontheTCP/IPprotocolstack,theTCP/IPprotocolstackismorecomplex,andmoredifficulttoachieve,usuallyselectedmatureTCP/IPprotocolstackfortransplantation,thechoiceopensourceandthemorematureLwIPEthernetprotocolstack.Keywords:STM32F107EthernetDM9161TCP/IPProtocolstack目錄TOC\o"1-2"\h\z\u220391引言1127722概述2159362.1課題研究的背景 2242142.2國內(nèi)外stm32控制以太網(wǎng)技術(shù)開展現(xiàn)狀及趨勢3325772.3研發(fā)方向和技術(shù)關(guān)鍵4251952.4主要技術(shù)指標4191693總體設(shè)計5305493.1系統(tǒng)方案選擇與論證5116213.2系統(tǒng)軟件總體構(gòu)造6210223.3本章小結(jié)7255094硬件設(shè)計9293564.1主控芯片STM32F1079293604.2STM32串口通訊12172924.3DM9161用法介紹1655534.4本章小結(jié)20273315以太網(wǎng)協(xié)議21317405.1TCP/IP協(xié)議21323055.2嵌入式TCP/IP協(xié)議棧22246746軟件設(shè)計2682076.1主程序設(shè)計2631326.2系統(tǒng)初始化子程序27277206.3RS232通訊子程序28112226.4網(wǎng)口通訊子程序2896706.5本章小結(jié)29182037結(jié)論302223致謝3112950參考文獻323808附錄331引言隨著人們的生活及其生產(chǎn)水平的不斷提高,對生活中各種數(shù)據(jù)接收的速度和準確度的要求就顯得尤為重要,無線數(shù)據(jù)收發(fā)控制就是一個典型的例子,因此無線數(shù)據(jù)基站就是現(xiàn)代生產(chǎn)生活中應運而生的一種智能、快捷、方便可靠的檢測系統(tǒng)。目前,無線網(wǎng)絡(luò)標準按照通訊距離的不同分為WAN、WLAN、PAN。比擬主流的無線技術(shù)有藍牙、3G、HomeRF、WI-FI、WIMAX、GPRS、CDMA、UWB等。其中WI-FI運用最為廣泛,其運用主要在WLAN/MESH領(lǐng)域。無線網(wǎng)絡(luò)推動了數(shù)據(jù)通信進入了新的里程碑,讓辦公、工作、學習不再受“線〞制。方便實現(xiàn)了移動辦公,組建臨時工作組,召開緊急會議等不在需要復雜的布線拆線,無線覆蓋區(qū)域直接可以通過無線進展通信。校園環(huán)境等,可以讓師生在任何環(huán)境,可以在廣場、在草坪、在體育場地等任意位置連接上Internet。隨著無線網(wǎng)絡(luò)在各個領(lǐng)域的成功案例及人們對它的關(guān)注程度,無線網(wǎng)絡(luò)定是未來通信的開展方向,也定能在各領(lǐng)域中得到很好的應用。本設(shè)計通過stm32控制無線收發(fā)模塊從無線網(wǎng)絡(luò)節(jié)點接收數(shù)據(jù),進展相關(guān)處理后通過以太網(wǎng)把數(shù)據(jù)發(fā)送至應用服務(wù)器。系統(tǒng)的用戶統(tǒng)用戶通過Internet網(wǎng)絡(luò)訪問應用服務(wù)器,其中本設(shè)計起到網(wǎng)橋和防火墻的作用。其中本設(shè)計中采用的以太網(wǎng)控制器為DM9161芯片。2概述2.1課題研究的背景近幾年來,隨著科學技術(shù)日新月異的開展,計算機科技的快速開展,特別是互聯(lián)網(wǎng)的快速普及,互聯(lián)網(wǎng)在人類活動中也越來越嚴密聯(lián)系,尤其是對于工業(yè)控制和信息電器領(lǐng)域中同樣有著越來越重要的應用。同時計算機,通訊,消費電子三合一的快速開展,數(shù)字化時代已經(jīng)到來。而嵌入式接入設(shè)備是數(shù)字化時代的一大主流標志,形態(tài)各異的計算機,通訊,消費電子三合一產(chǎn)品也將是網(wǎng)絡(luò)接入設(shè)備的一大主流。因為PC機以及現(xiàn)有的Internet技術(shù)可以實現(xiàn)對非網(wǎng)絡(luò)設(shè)備進展遠程控制的局部的要求,而且本錢費用較高,可靠性和期望值也有一定的距離,所以這種方案并沒有被廣泛的承受和使用。由于嵌入式設(shè)備具有低本錢高性能的特點,而現(xiàn)今對嵌入式系統(tǒng)的開發(fā)研究和嵌入式技術(shù)也都進入到了一個成熟的階段,將嵌入式系統(tǒng)和網(wǎng)絡(luò)相結(jié)合來實現(xiàn)非網(wǎng)絡(luò)系統(tǒng)的網(wǎng)絡(luò)控制,那么世界可能就是另一番景象。因特網(wǎng)技術(shù)的成熟,使得網(wǎng)上提供的信息更加豐富,應用工程也更加多樣,人們對網(wǎng)絡(luò)的需求也越來越廣泛,利用PC機上網(wǎng)來查閱和發(fā)布各類信息等對于網(wǎng)絡(luò)的日常應用已經(jīng)不能滿足人們的需求。像傳統(tǒng)的電器,電冰箱,微波爐,電視,空調(diào)等,這類電子設(shè)備的功能也不在單一,電器構(gòu)造也更為復雜,也逐步開場應用嵌入式網(wǎng)絡(luò)接入,使用戶可以通過網(wǎng)絡(luò)就能實現(xiàn)遠程控制,信息通訊。同樣,互聯(lián)網(wǎng)在全球范圍內(nèi)的連通性,那些能夠連接因特網(wǎng)的設(shè)備也成為人們選擇產(chǎn)品中考慮的一大問題,通過Internet對家用電器等非網(wǎng)絡(luò)設(shè)備進展遠程控制已經(jīng)成為現(xiàn)今主流。而一些小型輕便的設(shè)備,比方一些醫(yī)學儀器上的身體上使用的傳感器,體積小而且廉價,內(nèi)存小,運算能力有限,因此必須在資源受限的情況下實現(xiàn)TCP/IP協(xié)議甚至處理承受到的信息。TCP/IP協(xié)議可以分為四個層次,從底層到最高層分別是物理層和數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,和最高層的應用層。物理層和數(shù)據(jù)鏈路層是TCP/IP協(xié)議的最低層,要求提供應上層一個訪問接口,以便傳遞IP分組信息。網(wǎng)絡(luò)層是第二層,也是整個TCP/IP協(xié)議棧的核心,其功能是把分組發(fā)往目標網(wǎng)絡(luò)或主機,源主機與目的主機可以在同一個網(wǎng)上,也可以在不同的網(wǎng)上。其中定義了分組格式和協(xié)議,即IP協(xié)議,來對分組進展排序。IP協(xié)議是一種不可靠、無連接的數(shù)據(jù)報發(fā)傳送服務(wù)的協(xié)議,提供的只是一種盡力而為的服務(wù)。傳輸層是第三層,負責在應用進程中的端到端之間的通信。傳輸層定義了兩種服務(wù)質(zhì)量不同的協(xié)議,TCP和UDP。TCP是一種可靠的面向連接的協(xié)議,允許將源主機的字節(jié)數(shù)據(jù)流無差異的傳送到目的主機。同時能夠完成流量的控制功能,協(xié)調(diào)收發(fā)主機之間的發(fā)送和承受速度,從而控制正確的傳輸。應用層是最高層,其中也包括了很多協(xié)議:文件傳送協(xié)議,簡單郵件傳送協(xié)議,簡單網(wǎng)絡(luò)管理協(xié)議,超文本傳送協(xié)議等。LwIP是瑞士計算機科學院一個開源的TCP/IP協(xié)議棧實現(xiàn)。LwIP是LightWeightIP協(xié)議,有無操作系統(tǒng)都可以運行,其實現(xiàn)的重點是在保持TCP/IP協(xié)議的主要功能的根基上減少對內(nèi)存的占用,一般只需要幾百字節(jié)的RAM和40K左右的ROM就可以運行,這使得LwIP成為在資源受限的情況下實現(xiàn)及處理TCP/IP協(xié)議的解決方法。LwIP可以支持多網(wǎng)絡(luò)接口下的IP轉(zhuǎn)發(fā),提供專門的內(nèi)部回調(diào)接口RawAPI,這樣可以提高應用程序性能。像LwIP的目標系統(tǒng)是最小限度系統(tǒng),所使用的操作系統(tǒng)通常不能在內(nèi)核與應用層進程之間維持一個嚴格的保護屏障。這里允許使用一種比擬寬松的通許機制,通過共享內(nèi)存的方式實現(xiàn)應用層與底層協(xié)議族之間的通訊。應用層可以知道底層協(xié)議使用的緩沖處理機制,這使得應用層可以有效的重復使用緩沖區(qū)。同樣,應用層與網(wǎng)絡(luò)代碼使用的是一樣的內(nèi)存區(qū),那么應用層就可以直接讀寫內(nèi)部緩沖區(qū)。2.2國內(nèi)外stm32控制以太網(wǎng)技術(shù)開展現(xiàn)狀及趨勢中國的嵌入式系統(tǒng)開發(fā)走過了二十多年的歷程,有超過數(shù)十萬名從事開發(fā)應用的工程師,但大多數(shù)以上是幾個人的小組以孤軍奮戰(zhàn)的封閉方式開發(fā)幾乎不可重用的軟件。今天面對的是嵌入式系統(tǒng)工業(yè)化的潮流,如果不能認識到嵌入式軟件必須以工業(yè)化的方式生產(chǎn)開發(fā),不理解在短時間內(nèi)裝配集成“數(shù)百人/年〞的嵌入式產(chǎn)品,那么將失去更多的上游產(chǎn)品的市場機遇。嵌入式軟件方面逐漸形成了系統(tǒng)軟件、應用軟件的架構(gòu)。國際上用于信息電器的嵌入式操作系統(tǒng)有40種左右。其中,國外涌現(xiàn)了一些著名的嵌入式操作系統(tǒng),如:Vxworks、pSOS、WinCE、RTEK、palmOS、EpOC、QNX、LynxOS、DSPhnux等。其中Vx/Orks是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場占有率最高的系統(tǒng):WinCE是一種32位的多任務(wù)操作系統(tǒng),可以移植,能夠開發(fā)多種企業(yè)和客戶類設(shè)備,是微軟公司的“維納斯方案〞的核心:3COM公司的Palm0S在PDA市場上占有很大的市場份額,它有開放的操作系統(tǒng)應用程序接口(API),開發(fā)商可以根據(jù)需要自行開發(fā)所需要的應用程序。國內(nèi)外有大量嵌入式應用軟件已廣泛用于各類嵌入式系統(tǒng)中。大有國內(nèi)緊跟國外趨勢的形勢。但是對于嵌入式Web服務(wù)器方面的研究國內(nèi)現(xiàn)狀不容樂觀,目前國外的相關(guān)研究相對多些。如林C/IP研究工程,它是一個為微控制器和嵌入式系統(tǒng)而設(shè)計的小型TCP/IP協(xié)議棧:又如CMX公司的MieroNetTCP/IP,它是為8位或16位微處理器而設(shè)計的,支持大局部的標準協(xié)議,連接方式有以太網(wǎng)連接、撥號連接和直接連接方式。而國內(nèi)也相應提出了Webito協(xié)議標準,但是相對滯后,缺少具體的工程實現(xiàn)方面的研究和具體產(chǎn)品的開發(fā)。美國DEC公司開發(fā)的VMSeluster系統(tǒng)開發(fā)最早,技術(shù)也較成熟,應用也很廣泛,但由于VMS操作系統(tǒng)只能在DEC公司的VAX系列和AIPha系列服務(wù)器上運行,VMScluster的應用受到很大限制。Platform公司開發(fā)的高可用性集群系統(tǒng)LSF提供了分布式集群系統(tǒng)的解決方案,通過將物理上別離的多個集群連接在一起使多個同構(gòu)或異構(gòu)的計算機能夠通過局域網(wǎng)或廣域網(wǎng)共享計算資源,并能夠為用戶提供對資源的透明訪問。國內(nèi)也有不少公司進展了集群系統(tǒng)的研究和開發(fā)工作。聯(lián)想公司在1999年9月推出了用于分布式高性能計算的NS10000高性能集群服務(wù),該系統(tǒng)是一個四節(jié)點的系統(tǒng),主要基于聯(lián)想萬全45008服務(wù)器,以總體本錢相對較低的設(shè)備組合,足以替代傳統(tǒng)班SC小型機和中型機的工作,而價格僅為市場上同等性能小型機的1/2--1/40。朗訊公司也推出了類似于Urboduster的高可用性集群系統(tǒng)LongshineClusterServer。從國內(nèi)外的研究現(xiàn)狀看,目前集群系統(tǒng)的應用大都致力于高可用性問題的解決,真正基于負載均衡的集群系統(tǒng)還比擬少,而且在大局部負載均衡集群中采用的都是輪轉(zhuǎn)調(diào)度、加權(quán)輪轉(zhuǎn)調(diào)度等靜態(tài)調(diào)度算法。2.3研發(fā)方向和技術(shù)關(guān)鍵〔1〕合理設(shè)計硬件電路,使各模塊功能協(xié)調(diào);〔2〕STM32對DM9161的控制;〔3〕STM32對串口模塊的控制;〔4〕STM32對TCP/IP協(xié)議棧的開發(fā);2.4主要技術(shù)指標〔1〕合理設(shè)計硬件電路,使各模塊功能協(xié)調(diào)〔2〕STM32可以實現(xiàn)對數(shù)據(jù)的處理和傳輸?!?〕對DM9161的控制的數(shù)據(jù)的傳輸3總體設(shè)計3.1系統(tǒng)方案選擇與論證總體設(shè)計思路,分為三局部,無線數(shù)據(jù)采集局部,網(wǎng)絡(luò)控制局部,控制局部。并利用stm32對各局部進展控制。應用DM9161通過網(wǎng)線與上位機相連接,可以處理和傳遞下系統(tǒng)相關(guān)參數(shù)。設(shè)計模塊圖如圖3.1所示。服務(wù)器無線網(wǎng)絡(luò)數(shù)據(jù)信號DM9161網(wǎng)絡(luò)控制服務(wù)器無線網(wǎng)絡(luò)數(shù)據(jù)信號DM9161網(wǎng)絡(luò)控制STM32F107處理圖3.1整體模塊圖3.1.1控制局部方案在本次設(shè)計中,單片機是系統(tǒng)的控制核心,所以單片機的性能關(guān)系到整個系統(tǒng)的好壞。因此單片機的選擇,對所設(shè)計系統(tǒng)的實現(xiàn)以及功能的擴展有著很大的影響。單片機種類很多,STM32系列基于專為要求高性能、低本錢、低功耗的嵌入式應用專門設(shè)計的ARMCortex-M3內(nèi)核。按性能分成兩個不同的系列:STM32F103“增強型〞系列和STM32F101“根本型〞系列。增強型系列時鐘頻率到達72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;根本型時鐘頻率為36MHz,以16位產(chǎn)品的價格得到比16位產(chǎn)品大幅提升的性能,是16位產(chǎn)品用戶的最正確選擇。兩個系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場上功耗最低的產(chǎn)品,相當于0.5mA/MHz。因此,在本次設(shè)計中選用了stm32F107單片機作為主控芯片。2.1.2無線數(shù)據(jù)采集局部方案本設(shè)計有單片機控制無線模塊,接收從無線網(wǎng)絡(luò)的數(shù)據(jù),并經(jīng)過單片機進展處理,通過網(wǎng)絡(luò)控制局部傳送給PC接收。通過UTC4832無線網(wǎng)絡(luò)把數(shù)據(jù)上傳至主通信節(jié)點,主通信節(jié)點對數(shù)據(jù)進展進一步處理,通過以太網(wǎng)把數(shù)據(jù)發(fā)送至應用服務(wù)器。2.1.3網(wǎng)絡(luò)控制局部方案方案一:采用基于RTL8019AS實現(xiàn)以太網(wǎng)通訊。RTL8019AS是由臺灣Realtek公司生產(chǎn)的100pinPQFP封裝10Mbps以太網(wǎng)控制器,符和EthernetII與IEEE802.3標準,其應用成熟廣泛,但是由于RTL8019AS沒有集成內(nèi)部硬件協(xié)議,此方案需要在主控制器內(nèi)部編寫以太網(wǎng)通訊協(xié)議、程序繁瑣、消耗時間,不利于系統(tǒng)的快速開發(fā)和穩(wěn)定運行。且由于其封裝引腳太多,也不方便系統(tǒng)的硬件設(shè)計。方案二:采用基于DM9161的網(wǎng)絡(luò)控制器的以太網(wǎng)通訊系統(tǒng)設(shè)計。DM9161DM9161AEP是一款完全集成的和符合本錢效益單芯片快速以太PHY,是采用較小工藝0.25um的10/100M自適應的以太網(wǎng)收發(fā)器。DM9161AEP通過可變電壓的MII或RMII標準數(shù)字接口連接到MAC層,支持HPAuto-MDIX?。是目前常見的一款物理層收發(fā)器,由于全球的MCU集成度不斷提高,由MAC+PHY+MII的衍生到現(xiàn)在的PHY,在以太網(wǎng)局部的本錢,逐漸降低。方案三:采用基于ENC28J60的網(wǎng)絡(luò)控制器的設(shè)計。ENC28J60是帶有行業(yè)標準串行外設(shè)SPI接口的獨立以太網(wǎng)控制器,具有28pinDIP封裝,符合IEEE802.3的全部標準,采用了一系列包過濾機制以對傳入數(shù)據(jù)包進展限制。他還提供了一個內(nèi)部DMA模塊,以實現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的IP較驗和計算。與主控制器的通信通過兩個中斷引腳和SPI實現(xiàn),傳輸數(shù)據(jù)速率高達10Mb/s。兩個專用的引腳用于連接LED,進展網(wǎng)絡(luò)活動狀態(tài)指示。雖然ENC28J60同樣也沒有像DM9161那樣集成了了內(nèi)部硬件協(xié)議棧,但是由于其具有28pinDIP封裝,大大便于硬件設(shè)計和制版,符合我們這次系統(tǒng)設(shè)計的根本要求。綜上所述所述,方案二和方案三都適合作為本次設(shè)計的網(wǎng)絡(luò)控制局部,由于條件所限我們選擇方案二。3.2系統(tǒng)軟件總體構(gòu)造系統(tǒng)軟件總體構(gòu)造如圖3-2所示,整個程序是圍繞STM32F107VCT6單片機設(shè)計的,軟件程序采用模塊化設(shè)計,更容易理解和調(diào)試。整個程序除主程序之外還有5個局部:系統(tǒng)初始化子程序、RS232通訊子程序、網(wǎng)口通訊子程序、I/O數(shù)據(jù)采集子程序和RS485通訊子程序。圖3-2軟件構(gòu)造圖主程序流程圖如圖3-3所示。系統(tǒng)運行后進入主程序,首先對系統(tǒng)硬件進展初始化,而后再對網(wǎng)絡(luò)進展初始化,然后檢查網(wǎng)絡(luò)連接是否正常,連接正常則進展周期運行顯示,不正常則重新進展連接。圖3-3主程序流程圖3.3本章小結(jié)本章主要講述了本設(shè)計的工作原理和本設(shè)計系統(tǒng)的工作流程。在說明工作原理的過程中,突出了電路的組成單元以及這些單元如何實現(xiàn)數(shù)據(jù)采集和數(shù)據(jù)處理控制功能。在說明系統(tǒng)流程時,結(jié)合本設(shè)計的內(nèi)容指出了參數(shù)設(shè)置的方法和意義。4硬件設(shè)計4.1主控芯片STM32F10732位ARMCortex-M3構(gòu)造,72MHz運行頻率,1.25DMIPS/MHz,硬件除法和單周期乘法,并可快速可嵌套中斷,6~12個時鐘周期,有64K~256KB的FLASH,以及高達64KB的SRAM。另外在網(wǎng)絡(luò)通信功能上,具有一個RJ45網(wǎng)絡(luò)接口,支持10M/100M自適應網(wǎng)絡(luò),還有一個Zigbee無線網(wǎng)絡(luò)通訊接口,一個Wi-FiWLAN無線寬帶網(wǎng)絡(luò)通訊接口。在本開發(fā)板上,添加了一些人機交互接口,一個大屏幕320*240,262144色TFT-LCD,支持SPI接口式/總線接口,四個LED發(fā)光管,一個電源LED指示燈,另外一個標準3.5mm耳機接口,一個五方向的輸入搖桿,3個GPIO按鍵,1個RESTE按鍵,以及音頻級處理芯片,USBOTG功能能,支持外接鼠標和鍵盤。串行通信功能上,有兩個RS232連接插座,其中一個RS232帶硬件流控制引腳,一個mini型USB插座,兩個CAN連接口。其中與以太網(wǎng)最重要的硬件是MAC〔介質(zhì)訪問控制〕及其專用的DMA。專用的DMA控制器允許專用SRAM和描述符之間高速傳輸,其中一些地址過濾模式,對物理和組發(fā)送地址,以及32位狀態(tài)編碼,用于每個傳送和承受幀。內(nèi)部的FIFO用于緩存?zhèn)鬏敽统惺軒?,傳輸FIFO和承受FIFO都是2Kbyte,總共4Kbytes。實物圖如圖4.1所示:圖4.1stm32實物圖圖STM32F107xx包括以下特性:支持10和100Mbit/s兩種速率專用DMA控制器允許專用SRAM和描述符之間高速傳輸。標記的MAC幀支持,支持VLAN(虛擬局域網(wǎng))半雙工和全雙工兩種操作模式,半雙工下采用CSMA/CD〔帶有檢測沖突的載波偵聽多路存取〕支持MAC控制子層,用于控制幀。32位CRC產(chǎn)生和去除。一些地址過濾模式,對物理和組播地址。32位狀態(tài)編碼,用于每個傳送和承受幀。內(nèi)部FIFO用于緩存?zhèn)鬏敽徒邮諑?。傳輸FIFO和接收FIFO都是2Kbyte,總計4Kbytes。支持硬件PTP(準確時間協(xié)議),時間戳比擬器連接到TIM2觸發(fā)輸入端。當系統(tǒng)時間比預定目標時間大時,觸發(fā)中斷。4.1.1STM32F107的以太網(wǎng)功能描述STM32F107支持兩種工業(yè)標準的物理層接口,默認的介質(zhì)無關(guān)接口MII和精簡的介質(zhì)無關(guān)接口RMII。以太網(wǎng)的外設(shè)由MAC和一個專用的DMA控制器,支持默認的MII和RMII通過一個選擇位來設(shè)置默認的MII接口或者精簡MII接口。TDMA控制器接口通過AHB主從接口連接核和內(nèi)存,AHB主接口控制數(shù)據(jù)傳輸當AHN從接口訪問控制盒狀態(tài)存放器空間。在MAC核傳輸前,傳輸FIFO緩存通過DMA從系統(tǒng)內(nèi)存中讀取數(shù)據(jù),類似的,承受的FIFO隊列從線上儲存以太網(wǎng)幀從而知道它們被DMA傳送到了系統(tǒng)內(nèi)存中。以太網(wǎng)的外設(shè)還包括一個SMI用于和外部的PHY通信。配置存放器允許用戶為MAC和DMA控制器選擇想要的模式和特性。圖4.2STM32F107以太網(wǎng)原理框圖4.1.2SMI站管理接口SMI〔stationmanagementinterface站管理接口〕允許應用程序通過一根時鐘數(shù)據(jù)線來讀取配置中任意一個物理存放器,接口最多支持訪問是32個PHY。應用程序可以在SMI的允許下選擇32個PHY中的其中一個,再在PHY中32個存放器中的任意一個來發(fā)送控制數(shù)據(jù)或者承受狀態(tài)信息。但是在給定的時間里,只能訪問一個PHY中的存放器。如圖4.2所示,圖中微控制器執(zhí)行使MDC時鐘線和MDIO數(shù)據(jù)線來為交替的功能I/O扣。MDC是一個用于給數(shù)據(jù)傳輸提供時間參考的周期性時鐘,最大的頻率為2.5MHz,最小的MDC的上下時間是每次160ns,最小的周期是400ns。值得注意的是,在不工作的情況下,SMI管理接口驅(qū)動MDC時鐘信號為低,即為0。而MDIO是數(shù)據(jù)輸入和輸出數(shù)據(jù)是要用MDC時鐘信號來同步傳輸狀態(tài)信號給物理設(shè)備,或者從物理設(shè)備那得到狀態(tài)信號。STM32STM32MACExternalPHYMDIOMDC圖4.3SMI管理接口框圖4.1.3SMI寫操作當應用程序設(shè)置介質(zhì)無關(guān)接口MII寫和忙位時,SMI通過傳輸PHY的地址,PHY中的存放器地址以及寫數(shù)據(jù)來啟動一個寫操作到PHY存放器上。當然,在傳輸過程中應用程序不能改變MII的地址存放器中的內(nèi)存或者是MII數(shù)據(jù)存放器。在這個寫操作的時間里,任何對MII地址存放器和MII數(shù)據(jù)存放器的寫操作都會被忽略〔忙時位為高,即為1〕,保證傳輸過程無過失完成。這個寫操作完成之后,SMI又通過復位忙位,使得可以重新承受新的寫操作。圖4.4SMI寫操作4.1.4SMI的讀操作用戶設(shè)置以太網(wǎng)MAC中MII的地址存放器中的MIIBusybit時,MIIWritebit為零,SMI就通過傳輸PHY地址和PHY中的存放器的地址,然后在PHY存放器中就啟動一個讀操作。同樣的,在傳輸過程中應用程序不能改變MII地址存放器中的內(nèi)容或者MII數(shù)據(jù)存放器中的內(nèi)容。同時在讀操作過程中,對MII地址存放器和MII數(shù)據(jù)存放器的寫操作也會被忽略〔Busybit為高,即為1〕,保證傳輸過程不過失,能夠正確完成。讀操作完成后,SMI復位Busybit,然后用從PHY中讀到的數(shù)據(jù)來更新MII數(shù)據(jù)存放器。圖4.5SMI讀操作4.2STM32串口通訊STM32的串口是相當豐富的,功能也很強勁。最多可提供5路串口〔MiniSTM32使用的是STM32F103RBT6,具有3個串口〕,有分數(shù)波特率發(fā)生器、支持單線光通信和半雙工單線通訊、支持LIN、智能卡協(xié)議和IrDASIRENDEC標準〔僅串口3支持〕、具有DMA等。圖4.5485電路串口最根本的設(shè)置,就是波特率的設(shè)置。STM32的串口使用起來還是蠻簡單的,只要你開啟了串口時鐘,并設(shè)置相應IO口的模式,然后配置一下波特率,數(shù)據(jù)位長度,奇偶校驗位等信息,就可以使用了。下面,我們就簡單介紹下這幾個與串口根本配置直接相關(guān)的存放器。1,串口時鐘使能。串口作為STM32的一個外設(shè),其時鐘由外設(shè)時鐘使能存放器控制,這里我們使用的串口1是在APB2ENR存放器的第14位。APB2ENR存放器在之前已經(jīng)介紹過了,這里不再介紹。只是說明一點,就是除了串口1的時鐘使能在APB2ENR存放器,其他串口的時鐘使能位都在APB1ENR。2,串口復位。當外設(shè)出現(xiàn)異常的時候可以通過復位存放器里面的對應位設(shè)置,實現(xiàn)該外設(shè)的復位,然后重新配置這個外設(shè)到達讓其重新工作的目的。一般在系統(tǒng)剛開場配置外設(shè)的時候,都會先執(zhí)行復位該外設(shè)的操作。串口1的復位是通過配置APB2RSTR存放器的第14位來實現(xiàn)的。APB2RSTR存放器的各位描述如下:圖4.6存放器APB2RSTR各位描述從上圖可知串口1的復位設(shè)置位在APB2RSTR的第14位。通過向該位寫1復位串口1,寫0完畢復位。其他串口的復位位在APB1RSTR里面。
3,串口波特率設(shè)置。每個串口都有一個自己獨立的波特率存放器USART_BRR,通過設(shè)置該存放器到達配置不同波特率的目的。該存放器的各位描述如下:、圖4.7存放器USART_BRR各位描述前面提到STM32的分數(shù)波特率概念,其實就是在這個存放器里面表達的。最低4位用來存放小數(shù)局部DIV_Fraction,[15:4]這12位用來存放整數(shù)局部DIV_Mantissa。高16位未使用。這里波特率的計算通過如下公式計算。這里的pclkx〔x=1、2〕是給外設(shè)的時鐘〔PCLK1用于串口2、3、4、5,PCLK2用于串口1〕,USARTDIV是一個無符號的定點數(shù),它的值可以有串口的BRR存放器值得到。而我們更關(guān)心的是如何從USARTDIV的值得到USART_BRR的值,因為一般我們知道的是波特率,和PCLKx的時鐘,要求的就是USART_BRR的值。
下面我們來介紹如何通過USARTDIV得到串口USART_BRR存放器的值,假設(shè)我們的串口1要設(shè)置為9600的波特率,而PCLK2的時鐘為72M。這樣,我們根據(jù)上面的公式有:USARTDIV=72000000/9600*16=468.75
那么得到:DIV_Fraction=16*0.75=12=0X0C;
DIV_Mantissa=468=0X1D4;這樣,我們就得到了USART1->BRR的值為0X1D4C。只要設(shè)置串口1的BRR存放器值為0X1D4C就可以得到9600的波特率。
4,串口控制。STM32的每個串口都有3個控制存放器USART_CR1~3,串口的很多配置都是通過這3個存放器來設(shè)置的。這里我們只要用到USART_CR1就可以實現(xiàn)我們的功能了。圖4.8存放器USART_BRR各位描述BIT13:串口功能;
BIT12:MODE,字長。0:
1個開場位,8個數(shù)據(jù)位,1位停頓位〔默認〕;1:
1個開場位,9位數(shù)據(jù)位,1位停頓位〔默認〕;
*注意:停頓位的長度可在USART_CR2存放器中設(shè)置。
BIT11:WAKE喚醒功能
BIT10:校檢使能位,當激活奇偶校驗功能時,置位該位將自動往要傳輸數(shù)據(jù)的高位字節(jié)處插入就校驗位。
BIT09:ParitySelection,0:偶校驗;1:奇校驗。
BIT08:PEInterruptEnable
BIT07:發(fā)送緩沖區(qū)空中斷使能位BIT06:發(fā)送完成中斷使能位BIT05:接收緩沖區(qū)非空中斷使能位BIT04:IdleInterruptEnable
BIT03:TransferEnable
BIT02:ReceiveEnable
BIT01:ReceiverWakeup
BIT00:SendBreak5,數(shù)據(jù)發(fā)送與接收。STM32的發(fā)送與接收是通過數(shù)據(jù)存放器USART_DR來實現(xiàn)的,這是一個雙存放器,包含了TDR和RDR。當向該存放器寫數(shù)據(jù)的時候,串口就會自動發(fā)送,當收到收據(jù)的時候,也是存在該存放器內(nèi)。該存放器的各位描述如下:圖4.9存放器USART_DR各位描述可以看出,雖然是一個32位存放器,但是只用了低9位〔DR[8:0]〕,其他都是保存。DR[8:0]為串口數(shù)據(jù),包含了發(fā)送或接收的數(shù)據(jù)。由于它是由兩個存放器組成的,一個給發(fā)送用(TDR),一個給接收用(RDR),該存放器兼具讀和寫的功能。TDR存放器提供了內(nèi)部總線和輸出移位存放器之間的并行接口。RDR存放器提供了輸入移位存放器和內(nèi)部總線之間的并行接口。當使能校驗位(USART_CR1種PCE位被置位)進展發(fā)送時,寫到MSB的值(根據(jù)數(shù)據(jù)的長度不同,MSB是第7位或者第8位)會被后來的校驗位該取代。當使能校驗位進展接收時,讀到的MSB位是接收到的校驗位。6,串口狀態(tài)。串口的狀態(tài)可以通過狀態(tài)存放器USART_SR讀取。USART_SR的各位描述如下:圖4.10存放器USART_SR各位描述這里我們關(guān)注一下兩個位,第5、6位RXNE和TC。RXNE〔讀數(shù)據(jù)存放器非空〕,當該位被置1的時候,就是提示已經(jīng)有數(shù)據(jù)被接收到了,并且可以讀出來了。這時候我們要做的就是盡快去讀取USART_DR,通過讀USART_DR可以將該位清零,也可以向該位寫0,直接去除。TC〔發(fā)送完成〕,當該位被職位的時候,表示USART_DR內(nèi)的數(shù)據(jù)已經(jīng)被發(fā)送完成了。如果設(shè)置了這個位的中斷,則會產(chǎn)生中斷。該位也有兩種清零方式:1〕讀USART_SR,寫USART_DR。2〕直接向該位寫0。DM9161用法介紹DM9161AEP是一款完全集成的和符合本錢效益單芯片快速以太網(wǎng)PHY,是采用較小工藝0.25um的10/100M自適應的以太網(wǎng)收發(fā)器。DM9161AEP通過可變電壓的MII或RMII標準數(shù)字接口連接到MAC層,支持HPAuto-MDIX?。是目前常見的一款物理層收發(fā)器,由于全球的MCU集成度不斷提高,由早先的MAC+PHY+MII的衍生到現(xiàn)在的PHY,在以太網(wǎng)局部的本錢,逐漸降低。有如下特點1.48pinLQFP封裝2.制作工藝:0.25um,IO供電電壓3.3V,模擬局部2.5V3.支持MII和RMII連接方式〔推薦使用MII〕4.支持雙絞線自適應〔AUTO-mix〕5.支持TCP/IP硬加速6.與全球95%的廠家的MCU完全兼容,是ATMEL推薦使用的單口PHY。注:目前DM9161AEP支持的溫度范圍是0-75°,而工業(yè)級的DM9161BIEP是支持-40°到85°。在應用過程中,DM9161AEP常出現(xiàn)的錯誤是,晶振的連接,以及網(wǎng)絡(luò)變壓器的匹配,所以應該慎重選擇。DM9161引腳圖如下所示:圖4.11DM9161引腳圖4.3.1DM9161引腳說明16腳TXER/TXD[4]:輸入腳,傳輸錯誤或者是第五個TXD數(shù)據(jù)位,在100兆模式下,此腳為高,同時TXEN為高,暫停信號代替實際的數(shù)據(jù)。在10兆模式下這個輸入腳被忽略,在旁路模式下〔旁路4B5B〕此腳變成TXD[4]腳,第五個TXD的數(shù)據(jù)of5B信號。20,19,18,17腳TXD[0:3]發(fā)送數(shù)據(jù),4位數(shù)據(jù)輸入〔與TXCLK同步〕在10兆或者100兆的半字節(jié)模式,在10兆的GPSI模式〔7線〕下,TXD[0]被用作串行數(shù)據(jù)輸入腳,TXD[1:3]被忽略。輸入腳即芯片發(fā)送數(shù)據(jù)給它,它接收后再發(fā)送。21腳TXEN:傳輸使能,高電平表示TXD[0:3]上數(shù)據(jù)是合法的在10兆或者100兆模式下。在10兆的GPSI模式〔7線〕下,高電平顯示TXD[0]上數(shù)據(jù)合法。22腳TXCLK/ISOLATE:輸出腳,當剛上電時是輸入腳,拉低,發(fā)送時鐘腳,為TXEN,TXD,andTXER.TXCLK的傳輸提供時鐘參考,有PHY提供。25MHZ是100兆半字節(jié)模式,2.5兆是10兆半字節(jié)模式,10兆是10兆GPSI(7-Wired)mode〔說是7線好似只用單線傳輸〕。ISOLATE的設(shè)置是:當上電復位時是輸入,0:存放器0.10將被初始化成0,1:存放器0.10將被初始化成1.24腳MDC:輸入腳,管理數(shù)據(jù)的時鐘腳,MDIO管理數(shù)據(jù)的同步時鐘,這個時鐘由管理芯片提供,最大12.5MHZ.25腳MDIO:輸入/輸出腳,雙向的管理數(shù)據(jù)可能被管理芯片或者PHY提供。29,28,27,26RXD[0:3]/PHYAD[0:3]:三態(tài)輸出,上電輸入,拉低,在10/100兆MII模式四位輸出〔與RXCLK同步)。在10兆的GPSI模式〔7線〕下,RXD[0]腳是串行數(shù)據(jù)輸出腳,RXD[1:3]areignored,PHYaddress[0:3],上電復位成輸入腳,PHY地址檢測輸入腳。32腳MDINTR:輸入/輸出,上電輸入,拉低,狀態(tài)中斷輸出腳,當有一個狀態(tài)改變〔包括link,speed,duplexdependoninterruptregister[21]〕即由狀態(tài)改變同時中斷也設(shè)置了,才會輸出。如果原來是低,則中斷時輸出高,如果是高則中斷時輸出低。34腳RXCLK/10BTSER:三態(tài)輸出腳,上電輸入,拉高,接收時鐘由PHY提供時間參考為RXDV,RXD,andRXER.。PHY可能從接收的數(shù)據(jù)中恢復RXCLK參考,或者從25MHZ在100MMII模式下,2.5MHZ在10MMII模式下,10MHZ在10MbpsGPSI(7-Wired)mode。10BTSER僅支持10M模式〔上電輸入〕,0=GPSI(7-Wired)modein10Mmode,1=MIImodein10Mmode35腳CRS/PHYAD[4]:三態(tài)輸出,上電輸入,拉低,載波感應檢測或者PHYAD[4],在10BASE-T或者100BASE-TX的半雙工模式下,高電平表示載波的存在是因為接收或者傳輸有效〔正在進展中〕在repeater或者全雙工模式下,這個信號置高顯示載波的存在僅僅因為接收有效此腳作為PHYAD[4]〔上電輸入〕PHY地址感應輸入腳。36腳COL/RMII:三態(tài)輸出,上電輸入,拉低,沖突檢測,在10M或者100M的半雙工模式,高電平顯示沖突狀態(tài),在全雙工模式,此腳一直為低。簡化的MII使能腳,此腳也用來選擇正常的MII或者簡化的MII,(上電是輸入),0是正常的MII(默認),1是簡化的MII,此腳經(jīng)常被拉低,除非用于簡化的MII。37腳RXDV/TESTMODE:三態(tài)輸出,上電輸入,拉低,接收數(shù)據(jù)合法,高電平顯示合法的數(shù)據(jù)在RXD[0:3]中,測試模式控制腳〔上電輸入〕0是正常的操作〔默認〕1為測試模式使能。38腳RXER/RXD[4]/RPTR:三態(tài)輸出,上電輸入,拉低,接收數(shù)據(jù)錯誤或者5B情況下第五個接收數(shù)據(jù)位,高電平顯示一個不合法的符號被檢測到,在解碼旁路模式〔旁路4B5B〕RXER變成RXD[4],5B符號的第五個接收數(shù)據(jù)位。這個腳也可以用來選擇RepeaterorNodemode.〔上電輸入〕0NodeMode(default),1RepeaterMode.31LEDMODE:LED模式選擇,0,支持雙燈,1正常的燈40RESET#:低電平用來初始化DM9161A3,4腳RX+RX-:輸入腳,差分數(shù)據(jù)從媒體被接收7,8腳TX+TX-:輸出腳,差分傳輸對,差分數(shù)據(jù)被傳輸?shù)矫襟w,在TP模式下。11腳LED0/OP0:輸出腳,上電輸入,上拉。LED驅(qū)動輸出0,op0:上電復位輸入,此腳用來控制強制的或者是公布的操作模式,在上電后此值被寫入存放器。12腳LED1/OP1:輸出腳,上電輸入,上拉。LED驅(qū)動輸出1,op1:上電復位輸入,此腳用來控制強制的或者是公布的操作模式,在上電后此值被寫入存放器。13腳LED2/OP2:輸出腳,上電輸入,上拉。LED驅(qū)動輸出2,op2:上電復位輸入,此腳用來控制強制的或者是公布的操作模式,在上電后此值被寫入存放器。10腳PWRDWN:輸入腳,掉電控制,高電平強制芯片到掉電模式,在掉電模式下大局部芯片的模塊被關(guān)電,僅MII管理接口〔MDC,MDIO)可利用〔PHY對管理傳輸有用,在MII上不會產(chǎn)生假信號〕,要想離開掉電模式必須用軟件或者硬件復位讓PWRDWN腳為低。14腳CABLESTS/LINKSTS:輸出腳,上電輸入,下拉,CableStatusorLinkStatus,此腳用來顯示上電復位為輸入的時候Cable是否是連接狀態(tài),0沒有Cable連接,1有Cable連接。此腳也被用來顯示上電復位輸入為高的時候LINK的連接狀態(tài),0有LINK,1沒LINK39DISMDIX:HP自動翻轉(zhuǎn),1自動模式失效,0使能HP自動翻轉(zhuǎn)4.3.2DM9161標準協(xié)議說明DM9161A,快速以太單芯片傳輸,按IEEE802.3u,標準,完整的100Base-TX模式和10Base-T模式,芯片提供一個MII借口按標準IEEE802.3u,包含功能:圖4.12DM9161標準協(xié)議TXD是4位半字節(jié)數(shù)據(jù),被TXCLK驅(qū)動,在TXEN使能情況下,每一個TXCLK始終TXD(3:0)通過PHY被接收TXCLK〔傳輸時鐘〕不連續(xù)時鐘提供時間參考為TXEN,TXD,andTXER信號。TXEN傳輸使能,從物理層輸入,顯示物理層MII接口傳輸是存在的。TXER〔傳輸碼錯誤〕與TXCLK同步,如果TXER在一個或多個時鐘中置位,同時TXEN置位,PHY將發(fā)出一個或更多的信號在正在傳輸?shù)臄?shù)據(jù)幀中。RXD,4位數(shù)據(jù)被采樣與RXCLK同步,每一個RXCLK,RXDV被置位,RXD(3:0)被傳輸從PHY到物理層。RXCLK〔接收時鐘〕輸出到物理層的不連續(xù)時鐘為RXDV,RXD,andRXERsignals.提供參考。RXDV〔接收數(shù)據(jù)合法〕從PHY輸入,顯示PHY存在恢復的和解碼的半字節(jié)數(shù)據(jù)在物理層上,為了正確的被層解釋接收幀,RXDV必須圍繞著幀,開場不能晚于開場幀分隔符,不包括任何完畢幀分隔符RXER〔接收錯誤〕轉(zhuǎn)變與RXCLK同步,RXER將被置位在一個或更多的時鐘周期當檢測到任何一個錯誤在從PHY到物理層的被傳輸過程中。CRS〔載波感應〕當傳輸或者接收中繼沒有空閑時有效〔置高〕,當傳輸或者接收空閑時無效〔置底〕,100Base-TX發(fā)射機接收4位數(shù)據(jù)在25M,輸出一個5位編碼MLT-3信號到媒介在100M,芯片把25M在內(nèi)部變成125M供內(nèi)部使用。圖4.13DM9161標準協(xié)議框圖100Base-TX發(fā)射器如上圖:把MII提供的數(shù)據(jù)4位同步數(shù)據(jù)轉(zhuǎn)換后到SCRAMBLER,MLT-3.一百萬個符號每秒。4.4本章小結(jié)本章詳細介紹了本設(shè)計所要用到的硬件模塊STM32107作為主控制器,DM9161作為網(wǎng)絡(luò)控制模塊,用串口傳輸數(shù)據(jù)。5以太網(wǎng)協(xié)議5.1TCP/IP協(xié)議TCP/IP協(xié)議是由一系列網(wǎng)絡(luò)協(xié)議組成的協(xié)議族,從名字可以看出TCP/IP協(xié)議族中最重要的且根本的兩個協(xié)議為TeP(腸ansmissionControlprotoeol,傳輸控制協(xié)議)和IP(InternetProtoeol,網(wǎng)絡(luò)互聯(lián)協(xié)議)"TCP/IP協(xié)議是當今互聯(lián)網(wǎng)的基石"最早的TCP/IP由文頓#瑟夫(VintonCerf)和羅伯特#卡恩(RobertKahn)開發(fā)出來,由于其優(yōu)越的性能,應用范圍逐漸擴大,20世紀90年代中期,由于HTML(Hyper介xtMarkupLanguage,超文本描述語言)技術(shù)以及瀏覽器的出現(xiàn),使得互聯(lián)網(wǎng)飛速開展起來"TCP/IP對于低層(物理層與數(shù)據(jù)鏈路層)協(xié)議的支持非常好,常用的低層協(xié)議幾乎都支持TeP/IP,如以太網(wǎng)!端對端協(xié)議(point一to一pointprotoeol,ppp)#光纖分布式數(shù)據(jù)接口!令牌環(huán)網(wǎng)等"TCP/IP協(xié)議并不完全遵循傳統(tǒng)051參考模型的七層構(gòu)造"它包括應用層!傳輸層!網(wǎng)絡(luò)層!鏈路層,每一層都調(diào)用它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求"TCP/IP協(xié)議通常被看作是一個四層構(gòu)造的網(wǎng)絡(luò),如圖5.1所示。圖5.1TCP/IP四層構(gòu)造應用層:該層包含與應用程序協(xié)同工作的各種協(xié)議,這些協(xié)議利用底層網(wǎng)絡(luò)來傳輸應用程序發(fā)送與接收的數(shù)據(jù)"應用層的處理過程如下:數(shù)據(jù)從應用程序開場傳送,開場時數(shù)據(jù)格式為這個應用程序的內(nèi)部格式,然后數(shù)據(jù)被編碼為協(xié)議的標準格式,編碼完成后,數(shù)據(jù)便被傳輸?shù)絋CP/IP協(xié)議棧中應用層的下一層"。傳輸層:傳輸層的協(xié)議,能夠解決端到端可靠性(即數(shù)據(jù)是否已經(jīng)到達目的地)!保證數(shù)據(jù)按照正確的順序到達此類的問題"在通用的TCP/IP協(xié)議族中,傳輸層協(xié)議也包括所給數(shù)據(jù)應該送給哪個應用程序"常用的傳輸層協(xié)議有TCP和UDP"其中TCP是一個可靠的!面向連接的傳輸機制,它能保證數(shù)據(jù)完整!無損并且按順序到達"而UDP是一個無連接的不可靠的數(shù)據(jù)報協(xié)議"它既不檢查數(shù)據(jù)包到達目的地與否,也不保證它們到達的順序"。網(wǎng)絡(luò)層:網(wǎng)絡(luò)層也稱作IP層或互聯(lián)網(wǎng)層,它負責處理數(shù)據(jù)分組的選路等數(shù)據(jù)分組在網(wǎng)絡(luò)中的活動"在TCP/IP協(xié)議棧中,網(wǎng)絡(luò)層的協(xié)議有IP!ICMP(InterneteontrolMessageProtoeol,互聯(lián)網(wǎng)控制報文協(xié)議)和IGMp(IntemetGroupManagementprotocol,互聯(lián)網(wǎng)組管理協(xié)議)"Ip是TeP/lP協(xié)議族中最為核心的協(xié)議"所有的TCP!UDP!ICMP及IGMP數(shù)據(jù)都是以IP數(shù)據(jù)報的格式傳輸?shù)?。鏈路層:鏈路層有時也稱作數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層"它是數(shù)據(jù)包在幾個設(shè)備的網(wǎng)絡(luò)層間傳輸所用的方法"這個方法由網(wǎng)絡(luò)設(shè)備驅(qū)動程序及網(wǎng)絡(luò)接口卡實現(xiàn)。5.2嵌入式TCP/IP協(xié)議棧要在嵌入式系統(tǒng)中實現(xiàn)上述TCP八P協(xié)議,主要有兩種方案:一種是硬件實現(xiàn),將TCP/IP協(xié)議棧固化在芯片中,對外提供協(xié)議棧的編程接口,如博控自動化公司的TCP/IP協(xié)議棧芯片WS100"使用時將芯片連接到微處理器CPU上,在應用程序中直接調(diào)用協(xié)議棧的API(卻licationInterface,應用程序接口)函數(shù),這種方案的優(yōu)點是應用簡單,缺點是價格昂貴;另一種是軟件實現(xiàn),即在嵌入式系統(tǒng)中參加TCP江P協(xié)議棧代碼"這種方式的優(yōu)點是可定制性強!本錢低,缺點是開發(fā)階段工作量較大"本文選用軟件實現(xiàn)方案"大多數(shù)PC操作系統(tǒng)如WindowS及Linux操作系統(tǒng)都內(nèi)置完整的TCP/IP協(xié)議棧"而對于小型嵌入式系統(tǒng),由于資源有限,通常不能直接使用通用TCP/IP協(xié)議棧"利用嵌入式系統(tǒng)實現(xiàn)嵌入式以太網(wǎng)通信的技術(shù)難點是:如何利用嵌入式系統(tǒng)有限的資源對信息進展處理,使之變成可以在互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)包"為了實現(xiàn)這個目的,很多人做了大量的工作"具有代表性意義的嵌入式TCP/IP協(xié)議棧是Bso4.4(BerkeleysoftwareoistributionVersion4.4,伯克利軟件套件)的TCP/IP源代碼進展裁剪或與移植得到的TCP/IP協(xié)議棧"以下是對幾種常用的嵌入式協(xié)議棧的分析。LinuxTCP/IP協(xié)議棧:它的特點是與Linux系統(tǒng)的關(guān)系密切,只能在Linux系統(tǒng)或與Linux系統(tǒng)兼容的系統(tǒng)如協(xié)cLinux中使用"它體積比擬大,功能完善,支持BsD的套接字,應用廣泛,有大量資料可供參考[25,261"但它的兼容性與體積都使得它在本工程中的應用成為不可能。pc/IP協(xié)議棧:pe/IP是Mierium公司為協(xié)C/05系統(tǒng)專門設(shè)計的TCP/IP協(xié)議棧,體積也同pC/OS一樣比擬小,是可裁減的協(xié)議棧"它的缺陷是它只能局部實現(xiàn)TCP/IP協(xié)議,對網(wǎng)絡(luò)應用的支持缺乏,功能不夠完善"而且這是一個付費的TCP/IP協(xié)議棧"對本文來說也同樣不適宜。ulP協(xié)議棧:ulP不同于LinuxTCP/IP協(xié)議棧及pc/lP協(xié)議棧的一點是它的操作系統(tǒng)無關(guān)性,可以在沒有操作系統(tǒng)的情況下運行,也可以移植到各種操作系統(tǒng)中"缺點是移植過程復雜,應用程序接口也較復雜,而功能卻比擬簡單,甚至不支持BSD套接字"在專變采集終端中,對網(wǎng)絡(luò)性能的要求較高,所以也不適合采用ulP協(xié)議棧"LwIP(LightweightTeP/xP,輕量級TCP/xp)協(xié)議棧:與uIP協(xié)議棧一樣,LwIP也具有操作系統(tǒng)無關(guān)性跟可移植性"但與uIP協(xié)議棧相比,LwIP移植過程簡單,應用層接口方式多種多樣,且支持BSD套接字"同時,它還有體積小,內(nèi)存小的特點"雖然它也只能局部地實現(xiàn)TCP/IP議棧,但能滿足本文中專變采集終端以太網(wǎng)通信的全部要求"由以上比擬可知,針對微處理器STM32F107,采用LwIP協(xié)議棧是比擬適宜的。5.3LwIP設(shè)計LwIP是瑞士計算機科學院的AdamDunkelS等人開發(fā)的一套TCP八P協(xié)議棧,它主要關(guān)注的是怎么樣減少內(nèi)存的使用和代碼的大小,這樣就可以讓lwIP適用于資源有限的嵌入式系統(tǒng)"LwIP是一種可以在前后臺系統(tǒng)(無操作系統(tǒng))中運行的協(xié)議棧"同時,依賴它提供的操作系統(tǒng)模擬層,也可以容易地將其移植到各種操作系統(tǒng)中"另外,這個協(xié)議棧是開放源碼的,對于TCP/IP協(xié)議棧的研究很有幫助。LwIP能實現(xiàn)大多數(shù)TCP/IP協(xié)議棧的常用功能,它還支持IP片,TCP中提供阻塞控制!快速恢復等功能,支持IPv6(IntemetProtoeolversion6,網(wǎng)際網(wǎng)絡(luò)通信協(xié)議第6版)"它還提供了豐富的應用程序接口。5.3.1LwIP與應用程序接收到的數(shù)據(jù)暫存在分開的較小的內(nèi)存塊中,但是許多應用程序都需要在一塊連續(xù)的內(nèi)存區(qū)域內(nèi)處理數(shù)據(jù),因此就需要一個專門的函數(shù)來負責從這些不連續(xù)的緩沖區(qū)內(nèi)復制數(shù)據(jù)到一個連續(xù)的內(nèi)存區(qū)。LwIP的進程模型:所有的TCP/IP協(xié)議獨立于操作系統(tǒng)內(nèi)核之外,駐留在同一個進程的方式,TCP/IP協(xié)議棧和操作系統(tǒng)內(nèi)核分開了,應用層程序既可以是單獨的進程也可以是駐留在LwIP的進程中。應用程序與LwIP協(xié)議棧一般使用兩種方式通信,而如上述所說的,應用程序駐留在LwIP的進程中時,一般是采用函數(shù)調(diào)用的方式,而另一種是使用API。5.3.2LwIP與底層網(wǎng)絡(luò)設(shè)備驅(qū)動是底層硬件和整個軟件局部的接口,需要對外部的PHY進展控制,尤其是存放器的配置,來實現(xiàn)數(shù)據(jù)的發(fā)送和接收,并為上層協(xié)議提供訪問的方法。主要的工作包括初始化,設(shè)備的翻開和關(guān)閉,數(shù)據(jù)包的發(fā)送和接收,中斷處理等。而其中LwIP提供了一些網(wǎng)絡(luò)驅(qū)動的模型。使用LwIP提供的API做一些網(wǎng)絡(luò)驅(qū)動時,需要對LwIP協(xié)議棧進展初始化,用一個網(wǎng)絡(luò)接口的初始化函數(shù)來完成底層網(wǎng)絡(luò)的初始化功能做,添加并配置底層網(wǎng)絡(luò)接口,建設(shè)底層的接收或發(fā)送線程,創(chuàng)立TCP/IP線程等。LwIP的底層接口初始化其實就是對數(shù)據(jù)鏈路層和物理層功能的實現(xiàn)。需要做幾個方面的動作:LwIP的初始化、網(wǎng)絡(luò)層設(shè)備的初始化、以太網(wǎng)控制器的初始化等。如圖5.2所示,網(wǎng)絡(luò)模塊的初始化函數(shù)的流程是首先是LwIP協(xié)議棧的初始化,再進展數(shù)據(jù)鏈路層發(fā)送接收線程的創(chuàng)立,之后進展網(wǎng)絡(luò)層設(shè)備的初始化。圖5.2LwIP底層接口初始化而進展LwIP協(xié)議棧初始化時,先初始化LwIP統(tǒng)計信息,初始化操作系統(tǒng)的仿真層,再進展初始化存儲管理構(gòu)造,最后創(chuàng)立TCP/IP線程。LwIP協(xié)議棧的初始化中可以調(diào)用LwIP協(xié)議棧所提供的API來實現(xiàn)。以太網(wǎng)控制器的初始化中,對于STM32F107,需要在初始化中進展設(shè)定網(wǎng)卡的MAC地址,初始化網(wǎng)卡,建設(shè)穩(wěn)定的物理層和數(shù)據(jù)鏈路層。然后開場向LwIP注冊鏈路層發(fā)送函數(shù),創(chuàng)立承受線程。而網(wǎng)卡初始化過程中需要進展幾個步驟:關(guān)閉FEC模塊關(guān)閉中斷注冊中斷向量和中斷處理函數(shù)開啟中斷設(shè)置MAC地址和Flash存放器設(shè)置發(fā)送控制存放器和接收控制存放器初始化發(fā)送函數(shù)和接收函數(shù)開啟FEC模塊在硬件模塊完成了物理層和數(shù)據(jù)鏈路層的構(gòu)建,這時,需要一方面從MAC中提取數(shù)據(jù)局部,然后傳送給LwIP協(xié)議棧線程進展處理,一方面要把上層中的IP數(shù)據(jù)包傳送給硬件模塊,通過硬件模塊把數(shù)據(jù)封裝成MAC幀發(fā)送到物理網(wǎng)絡(luò)上。這個過程中為了減少中斷處理程序的反復使用,可以將底層數(shù)據(jù)到LwIP協(xié)議棧的數(shù)據(jù)傳送工作獨立出來,獨立出一個接收線程和一個發(fā)送線程來完成。接收線程和發(fā)送線程與底層驅(qū)動中數(shù)據(jù)收發(fā)的同步可以利用信號量的機制來實現(xiàn)。5.4本章小結(jié)本章介紹了本設(shè)計中所涉及的相關(guān)網(wǎng)絡(luò)協(xié)議,通過對這些網(wǎng)絡(luò)協(xié)議的學習和理解將為后續(xù)的程序編寫打下根基。6軟件設(shè)計系統(tǒng)軟件總體構(gòu)造如圖所示,整個程序是圍繞stm32f107單片機設(shè)計的,軟件程5化子程序、RS232數(shù)據(jù)采集子程序和RS485通訊子程序。主程序主程序RS232通訊子程序網(wǎng)口通訊子程序I/O口數(shù)據(jù)處理子程序系統(tǒng)初始化子程序RS232通訊子程序網(wǎng)口通訊子程序I/O口數(shù)據(jù)處理子程序系統(tǒng)初始化子程序圖6.1LwIP系統(tǒng)軟件總體構(gòu)造6.1主程序設(shè)計主程序流程圖如圖6.2所示。系統(tǒng)運行后進入主程序,首先對系統(tǒng)硬件進展初始化,而后再對網(wǎng)絡(luò)進展初始化,然后檢查網(wǎng)絡(luò)連接是否正常,在連接正常的情況下進展周期運行顯示。局部代碼如下所示:圖6.2主程序流程圖intmain(void){ System_Setup();//系統(tǒng)的時鐘、以太網(wǎng)、I/O口、中斷和外設(shè)設(shè)置 Show_Msg(); TIMConfiguration(); LwIP_Init();//網(wǎng)絡(luò)初始化IP地址分配 Check_ETH_PHY();//檢查以太網(wǎng)連接 ETH_To_UART_init(); d_init(); USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); while(1) { System_Periodic_Handle();//系統(tǒng)周期運行顯示 delay_ms(200); USART3_Put_Char(0x21); }}6.2系統(tǒng)初始化子程序系統(tǒng)初始化子程序主要完成系統(tǒng)上電后,硬件初始化,時鐘頻率的設(shè)置,中斷初始化和中斷優(yōu)先級的設(shè)置,串行通訊口的初始化配置。同時,在這個子程序中對本設(shè)計所涉及的I/O口進展了總體配置。系統(tǒng)初始化子程序的代碼如下所示:voidSystem_Setup(void){RCC_ClocksTypeDefRCC_Clocks;SystemInit();USART_COM1_Init();USART_COM3_Init();RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC|RCC_AHBPeriph_ETH_MAC_Tx|RCC_AHBPeriph_ETH_MAC_Rx,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);NVIC_Configuration();GPIO_Configuration();Ethernet_Security();}6.3RS232通訊子程序RS232子程序完成了串口最根本的設(shè)置,就是波特率的設(shè)置。其中包括對端口的使能復位和控制,具體代碼如下所示:USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶電訊職業(yè)學院《班主任著作研讀》2023-2024學年第一學期期末試卷
- 浙江中醫(yī)藥大學《數(shù)字攝影測量》2023-2024學年第一學期期末試卷
- 浙江建設(shè)職業(yè)技術(shù)學院《TIA技術(shù)及應用》2023-2024學年第一學期期末試卷
- 鄭州工業(yè)應用技術(shù)學院《鋼結(jié)構(gòu)設(shè)計概述》2023-2024學年第一學期期末試卷
- 小學通風和消毒制度
- 情境劇本創(chuàng)作技巧及其作用
- DB2201T 66.3-2024 肉牛牛舍建設(shè)規(guī)范 第3部分:種母牛
- 生物學基礎(chǔ)與方法模板
- 人資行政戰(zhàn)略展望模板
- 七夕傳媒策略研討
- 2024年日語培訓機構(gòu)市場供需現(xiàn)狀及投資戰(zhàn)略研究報告
- 2024年公安機關(guān)理論考試題庫附參考答案(基礎(chǔ)題)
- 歷史-廣東省大灣區(qū)2025屆高三第一次模擬試卷和答案
- 2024年安全生產(chǎn)法律、法規(guī)、標準及其他要求清單
- 2023年高考文言文閱讀設(shè)題特點及備考策略
- 抗心律失常藥物臨床應用中國專家共識
- 考級代理合同范文大全
- 2024解析:第三章物態(tài)變化-講核心(原卷版)
- DB32T 1590-2010 鋼管塑料大棚(單體)通 用技術(shù)要求
- 安全行車知識培訓
- 2024年安徽省高校分類對口招生考試數(shù)學試卷真題
評論
0/150
提交評論