淺談嵌入式Internet接口系統(tǒng)設(shè)計
出處:彭宣戈,夏潔武,廖金明 發(fā)布于:2011-09-02 10:36:37
0 引言
計算機和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,引發(fā)了控制領(lǐng)域深刻的技術(shù)革命。控制系統(tǒng)結(jié)構(gòu)向網(wǎng)絡(luò)化、開放性方向發(fā)展將是控制系統(tǒng)技術(shù)發(fā)展的主要潮流。過去大量的浩如煙海的8/16位單片機的嵌入式設(shè)備,如儀器儀表、數(shù)據(jù)采集和顯示、過程控制、工業(yè)自動化、家庭自動化等的實時應(yīng)用,已經(jīng)到了享受網(wǎng)絡(luò)方便的時候了。它們將成為Internet網(wǎng)的發(fā)展沃土,順應(yīng)"網(wǎng)絡(luò)服務(wù)"向"網(wǎng)絡(luò)應(yīng)用"擴展的大潮。
目前大多數(shù)嵌入式系統(tǒng)還處于單獨應(yīng)用的階段,以單片機為,與一些控制設(shè)備配合實現(xiàn)一定的功能。如果嵌入式系統(tǒng)能夠連接到Internet這個信息流通渠道,則可以方便、低廉地將信息送到世界上任何一個地方,這將形成集管理與控制與一體的分布式網(wǎng)絡(luò)系統(tǒng)。嵌入式系統(tǒng)以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)了各種應(yīng)用系統(tǒng)中對功能、可靠性、成本、體積、功耗等的嚴格要求,因此它贏得了巨大的市場,在應(yīng)用數(shù)量上遠遠超過了各種通用計算機。嵌入式接入Internet是近幾年隨著計算機網(wǎng)絡(luò)技術(shù)的普及和發(fā)展而發(fā)展起來的一項新興概念和技術(shù),它通過為現(xiàn)有嵌入式系統(tǒng)增加因特網(wǎng)接入能力來擴展其功能,一般指設(shè)備通過嵌入式模塊而非PC系統(tǒng)直接接入Internet,以Internet為介質(zhì)實現(xiàn)信息交互的過程,通常又稱為非PC接入。嵌入式系統(tǒng)利用網(wǎng)絡(luò)接口控制芯片實現(xiàn)與網(wǎng)絡(luò)的通信功能,成本低,控制方便可靠,滿足系統(tǒng)對通信的要求。考慮到本身的特點,在大量工業(yè)領(lǐng)域中應(yīng)用嵌入式設(shè)備功能比較單一,在上述網(wǎng)絡(luò)接口控制芯片接口程序的基礎(chǔ)上只需要開發(fā)簡化的嵌入式協(xié)議棧,就可滿足許多情況下的應(yīng)用需求。目前,許多公司和組織致力于將以太網(wǎng)與現(xiàn)場總線實現(xiàn)無縫連接,使以太網(wǎng)越來越向底層延伸。以太網(wǎng)在現(xiàn)場設(shè)備中的應(yīng)用研究和基于以太網(wǎng)的智能芯片的開發(fā)等也日益成為研究的熱點。這里介紹一種嵌入式Internet系統(tǒng)的接口技術(shù),它的特點是使用8位單片機與網(wǎng)絡(luò)通信控制器RTL8019AS等組成的系統(tǒng),采用以太網(wǎng)協(xié)議傳輸數(shù)據(jù),因而成本低,容易實現(xiàn)。
1 硬件系統(tǒng)設(shè)計
1.1 系統(tǒng)總體結(jié)構(gòu)
本系統(tǒng)由串行接口、單片機、網(wǎng)絡(luò)控制器等部分組成,如所示。
500)this.style.width=500;" border=0>
1.2 系統(tǒng)電路原理
本系統(tǒng)電路主要由CPU、 串口的電平轉(zhuǎn)換電路、具有IIC總線的EEPROM、8位鎖存、32K的RAM、以太網(wǎng)通信控制器和隔離濾波器組成。IIC是作為英特爾IC的互補,這種總線類型是由菲利浦半導體公司在八十年代初設(shè)計出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結(jié)構(gòu)下,同時每個芯片都可以作為實施數(shù)據(jù)傳輸?shù)目刂圃础_@種方式簡化了信號傳輸總線。其電路原理見所示。
500)this.style.width=500;" border=0>
電路用到的主要芯片有89C52、24c512(IIC總線的eeprom)、373 八位鎖存器、以太網(wǎng)通信控制器RTL8019AS和隔離濾波器T1組成。
本系統(tǒng)CPU采用ATMEL公司的89C52單片機,串口的電平轉(zhuǎn)換電路采用MAX232,網(wǎng)絡(luò)通信控制器采用RTL8019AS.
RTL8019AS 是臺灣Realtek公司制造的一種高集成度的全雙工10Mbps以太網(wǎng)控制芯片,實現(xiàn)基于Ethernet協(xié)議的MAC層的全部功能,內(nèi)置16Kb的 SRAM、雙DMA通道和FIFO完成數(shù)據(jù)包的接收和發(fā)送功能。在本接口設(shè)計中,使用跳線模式(JP置為高),硬配置RTL8019AS為8位模式。使用 RTL8019AS的低5位地址線A0~A4以及低8位數(shù)據(jù)線D0~D7.
單片機89C52P0口的P0~P4腳通過373八位鎖存器作為地址線連接RTL8019AS的低5位地址線,RD、WR分別連接讀寫時序控制腳IORB、 IOWB;P0口作為數(shù)據(jù)線連接RTL8019AS的低8位數(shù)據(jù)線。中AT24C512為64KBE2PROM,主要用來保存嵌入式透明SX-52網(wǎng)關(guān)的配置信息,如網(wǎng)關(guān)IP地址、MAC地址等。這樣,可以靈活方便地修改網(wǎng)關(guān)參數(shù),適應(yīng)不同環(huán)境,同時也考慮到以后的擴展。
RTL8019AS除與89C52連接外,還將其網(wǎng)絡(luò)收發(fā)器的4根引腳TPOUT+、TPOUT-、TPIN+、TPIN-通過外接的隔離濾波器T1`與以太網(wǎng)相連。采用隔離濾波器T1是為了提高網(wǎng)絡(luò)通信的抗干擾能力。
以太網(wǎng)通信控制器RTL8019AS可以接收三種地址的數(shù)據(jù): 一個是廣播地址,一個是多播地址(我們用不上);一個是它自已的地址。
2 軟件設(shè)計
Internet網(wǎng)上的協(xié)議格式有多種,對單片機來說不可能支持太多的協(xié)議格式。根據(jù)以太網(wǎng)的封裝格式的物理傳輸幀整個系統(tǒng)的軟件設(shè)計可以分為三部分:CAN總線設(shè)備接口通信程序、透明網(wǎng)關(guān)協(xié)議轉(zhuǎn)換程序和以太網(wǎng)層應(yīng)用程序設(shè)計。
2.1 CAN控制器協(xié)議模塊
CAN控制器協(xié)議轉(zhuǎn)換模塊程序主要由寄存器讀程序CANRead()、寫程序CANWrite()、初始化程序CANInit()、發(fā)送程序txdsub()、接收程序rxdsub()程序組成。因為89C52芯片只有I/O端口,因此要編寫單獨的寄存器讀、寫子程序。
選用CAN2.0A協(xié)議構(gòu)建CAN總線控制網(wǎng)絡(luò),初始化主要完成控制寄存器CR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、總線定時寄存器BTR0,1 和輸出控制寄存器OCR的設(shè)置。初始化完成后,由總調(diào)度模塊監(jiān)控控制器。當CAN總線上有數(shù)據(jù)到達時,它調(diào)用接收子程序rxdsub(),把這一幀數(shù)據(jù)包存入數(shù)據(jù)緩沖區(qū)B中,然后釋放接收緩沖器。同樣,當有按CAN2.0A協(xié)議格式組合成的一幀數(shù)據(jù)報文在數(shù)據(jù)緩沖區(qū)A中要發(fā)送到CAN總線上去時,總調(diào)度模塊將調(diào)CAN發(fā)送子程序txdsub()發(fā)送。
2.2 以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊
以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊主要負責從UDP數(shù)據(jù)包中解析出完整CAN協(xié)議報文,存入數(shù)據(jù)緩沖區(qū)A.同時,可能將數(shù)據(jù)緩沖區(qū)B中的完整CAN協(xié)議報文封裝成UDP數(shù)據(jù)報,然后將其發(fā)送到以太網(wǎng)上。
在通信傳輸層采用UDP協(xié)議是考慮到CAN協(xié)議數(shù)據(jù)報為短幀形式(每個數(shù)據(jù)幀多為8字節(jié))。如果采用TCP傳輸協(xié)議,要傳輸8字節(jié)CAN協(xié)議數(shù)據(jù),要先通過3次握手建立連接,再傳輸數(shù)據(jù),之后還要通過握手釋放連接。這樣傳輸效率對有限的網(wǎng)絡(luò)資源來說無疑是一種浪費。而UDP是無連接的傳輸,可以提高網(wǎng)絡(luò)傳輸效率,同時,也減輕網(wǎng)關(guān)的處理任務(wù)。當然,UDP傳輸協(xié)議是不可靠的,對于控制網(wǎng)絡(luò)來說,是不允許的。為了提高通信的可靠性,采用了回傳校驗機制。通過實驗測試表明這種方式是行之有效的。
以太網(wǎng)是Xerox公司發(fā)明的基帶LAN標準。它采用帶沖突檢測的載波監(jiān)聽多路訪問協(xié)議(CSMA/CD),速率為10Mbps,傳輸介質(zhì)為同軸電纜。以太網(wǎng)是在20世紀70年代為解決網(wǎng)絡(luò)中零散的和偶然的堵塞而開發(fā)的,而IEEE802.3標準是在初的以太網(wǎng)技術(shù)基礎(chǔ)上于1980年開發(fā)成功的。現(xiàn)在,以太網(wǎng)一詞泛指所有采用CSMA/CD協(xié)議的局域網(wǎng)。以太網(wǎng)2.0版由數(shù)字設(shè)備公司、Intel公司和Xerox公司聯(lián)合開發(fā),它與IEEE802.3兼容。
以太網(wǎng)控制器也稱以太網(wǎng)適配器,就是我們通常稱的"網(wǎng)卡".安裝方法即是插在機器主板的PCI擴展槽里,一般為白色,然后安裝所購買網(wǎng)卡中內(nèi)附的驅(qū)動光盤即可。不裝網(wǎng)卡的話你是無法連接網(wǎng)絡(luò)的。不過現(xiàn)在一般主板都有集成網(wǎng)卡。以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊主要由以太網(wǎng)卡驅(qū)動、ARP、UDP協(xié)議的若干個API函數(shù)組成,主要有 NICInit()、NICDMAInit()、NICInitTXFrame()、NICSendTXFrame()、NICReadAgain()、 ARPCheckifis()、ARPSendresponse()、ARPSendStPacket()、ICMPProcPkin()、 UDPAppInit()、IPGenCheckSum()、UDPAppProcPktin()、UDPStartPktout()和 UDPEndPktout()等。
系統(tǒng)首次執(zhí)行或復位時,以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊將首先調(diào)用NICInit ()和UDPAPPInit()等進行NIC、ARP、IP、UDP和應(yīng)用程序的初始化。初始化完成后,即進入主循環(huán)。在主循環(huán)中,89C52將反復檢測 RTL8019AS是否接收以太網(wǎng)幀。當有數(shù)據(jù)被接收時,89C52調(diào)用NICDMAInit()和NICReadAgain()讀入以太網(wǎng)幀首部再調(diào)用 ARPCheckIFIs()判斷接收幀是否為ARP數(shù)據(jù)。若是ARP,則轉(zhuǎn)入ARPSendResponse()和ARPSendstPacket() 子程序進行ARP處理并發(fā)送響應(yīng)ARP數(shù)據(jù)報;若不是ARP,則判斷是否為IP數(shù)據(jù)報。該程序?qū)⒆x入UDP數(shù)據(jù)報文首部的數(shù)據(jù)并進行相應(yīng)處理,還原出完整的CAN協(xié)議數(shù)據(jù)報文存入數(shù)據(jù)緩沖區(qū)B中,再通知總調(diào)度程序,由總調(diào)度程序調(diào)用CAN總線控制子程序?qū)AN協(xié)議數(shù)據(jù)報文發(fā)往CAN總線。
反過來,當總調(diào)度程序通知以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊將數(shù)據(jù)緩沖區(qū)B中準備好的CAN協(xié)議數(shù)據(jù)發(fā)送到以太網(wǎng)上時,它將調(diào)用NICInitTxFrame()、 udpstartPktOut)、IPGenCheckSum()、IPStartPktout()、NICSendTxFrame()、 UDPEndPktOut()等子函數(shù)進行發(fā)送處理,從而實現(xiàn)CAN總線到以太網(wǎng)的數(shù)據(jù)傳輸。
2.3 以太網(wǎng)層應(yīng)用程序設(shè)計
以太網(wǎng)上的通信協(xié)議一般采用TCP/IP協(xié)議。本文采用流行的SOCKET套接字編程,傳輸層協(xié)議選擇UDP(用戶數(shù)據(jù)報協(xié)議),通過VisuaIC++編寫用戶層程序。
WinSock提供了對UDP的支持,通過UDP協(xié)議可以向指定IP地址的透明網(wǎng)關(guān)發(fā)送CAN協(xié)議數(shù)據(jù),同時也可以通過它接收CAN協(xié)議數(shù)據(jù)。發(fā)送和接收方處于相同的地位沒有主次之分。利用CAsynSocket類操縱無連接的數(shù)據(jù)發(fā)送較簡單。首先生成一個本地套接口(需要指明SOCK_DGRAM標記);然后利用 int CAsyncSocket SendTO const VOID IPBuf int nBufLen UINT nHostPort LPCTSTR IpszHostADDress= NULL int nFlags=0發(fā)送數(shù)據(jù),int CasyncSocket ReceiveFrom void IpBuf int nBufLen Cstring&rSocketADDressUINT&rSocketPort int nFlags=0接收數(shù)據(jù)。利用UDP協(xié)議可以使管理主機和89C52網(wǎng)關(guān)實現(xiàn)雙向的數(shù)據(jù)通信。
3.接入Internet部分的程序流程圖
前面已經(jīng)介紹了軟件設(shè)計的原理,這里介紹接入Internet部分的程序流程圖
500)this.style.width=500;" border=0>
4.小結(jié)
系統(tǒng)中可以采用多種單片機實現(xiàn),只要是8位的單片機即可,內(nèi)部RAM容量大一點越好。該系統(tǒng)目前正在家庭電器的控制系統(tǒng)中使用,系統(tǒng)工作穩(wěn)定,接收信息正確,表明系統(tǒng)應(yīng)用可行。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實踐指南2026/1/6 10:40:19
- 嵌入式實時操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計實踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識2025/7/14 16:59:04









