


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
利用RCM2200實現(xiàn)以太網(wǎng)與異步串口的通信
摘要本文研究基于RCM2200嵌入式系統(tǒng)對網(wǎng)絡(luò)和串口的編程技術(shù)。介紹了RCM2200微控制器核心模塊以及DynamicC軟件開發(fā)環(huán)境,講述了如何利用DynamicC語言通過RCM2200核心模塊實現(xiàn)UDP報文和異步串口數(shù)據(jù)的互相轉(zhuǎn)換。DynamicC是與RCM2200配套使用的軟件開發(fā)語言,它擁有豐富的庫函數(shù)以便程序員編程時調(diào)用,結(jié)果表明,運用該語言能實現(xiàn)基于RCM2200以太網(wǎng)與異步串口之間的成功通信。關(guān)鍵詞嵌入式系統(tǒng);RCM2200;UDP報文;串口通信1引言目前,嵌入式技術(shù)已經(jīng)廣泛滲入并應(yīng)用到各領(lǐng)域,涉及到多種傳統(tǒng)及現(xiàn)代技術(shù),形成了前所未有的多學(xué)科、多領(lǐng)域的交叉與融合。由Z-World公司推出的RCM2200[1]是一款低成本的嵌入式微控制器核心模塊,它采用DynamicC?[2]這一專門為Z-World產(chǎn)品創(chuàng)建的集成的C編譯器、編輯器、鏈接器、裝載器和調(diào)試器,便于實現(xiàn)快速開發(fā)應(yīng)用,加快產(chǎn)品投放到市場。
UDP協(xié)議[3][4]是比較著名的傳輸層協(xié)議之一,它與TCP協(xié)議一樣是基于IP協(xié)議的,但與TCP不同的是它不需要協(xié)議層提供質(zhì)量保證,因此,在需要實時數(shù)據(jù)傳輸?shù)那闆r下應(yīng)用比較廣泛。并且,因為不提供質(zhì)量保證,服務(wù)器沒有必要一直處于等待狀態(tài),從而大大減輕了服務(wù)器的負(fù)擔(dān)。在某些情況下,還可以根據(jù)需要給UDP報文加上一些質(zhì)量保證控制,有很大的靈活度。在不遠(yuǎn)的將來,將設(shè)備與網(wǎng)絡(luò)相連將成為一種趨勢。在諸如GPS串口數(shù)據(jù)網(wǎng)絡(luò)收發(fā)以及某些語音傳輸、實時監(jiān)控等多種場合,實現(xiàn)以太網(wǎng)與異步串口數(shù)據(jù)之間的通信是非常必要的。本文介紹了一種基于RCM2200嵌入式微控制器核心模塊利用UDP報文實現(xiàn)網(wǎng)絡(luò)與串口互通的方法,可以迅速實現(xiàn)將串口與網(wǎng)絡(luò)相連接。2系統(tǒng)原理及功能RCM2200采用Rabbit半導(dǎo)體公司推出的高性能8位器件-Rabbit2000型微處理器;帶RJ-45插口的內(nèi)置10Base-T端口簡化了網(wǎng)絡(luò)連接,便于開發(fā)帶以太網(wǎng)接口的監(jiān)控、通訊設(shè)備;配備有4個串行口,方便擴展聯(lián)接;擁有26根并行的I/O引線以及16根可設(shè)置的I/O引線,無須擴展即可完成一般的I/O任務(wù);擁有256KFlash,128KSRAM,用于代碼存儲和數(shù)據(jù)存儲;時間、日期、看門狗、定時器等一應(yīng)俱全;且其采用雙列直插式引腳,尺寸僅為59x41x22mm。這種結(jié)構(gòu)促進了嵌入式系統(tǒng)的快速開發(fā),并可實現(xiàn)集成的以太網(wǎng)連接。RCM2200系統(tǒng)的基本框架結(jié)構(gòu)如圖1所示。圖1RCM2200系統(tǒng)結(jié)構(gòu)RCM2200采用DynamicC?語言進行軟件開發(fā),與標(biāo)準(zhǔn)C語言相比,DynamicC的改進和差異在于使得在功能強大的嵌入式系統(tǒng)上進行實時編程變得非常容易。語言的擴展包括多任務(wù)和優(yōu)先多任務(wù)的構(gòu)造,當(dāng)供電失敗時,能夠保護寫入變量,能夠?qū)懭氲街袛喑绦蛑腥?。?biāo)準(zhǔn)C函數(shù)庫,特定板的外圍驅(qū)動,芯片外圍設(shè)備,以及其他的性能以源代碼的形式包含在DynamicC中。完全支持匯編語言,在對時間要求較高的應(yīng)用中,匯編代碼可以方便的與C代碼混用。在該開發(fā)系統(tǒng)中將RCM2200的以太網(wǎng)接口與當(dāng)?shù)鼐钟蚓W(wǎng)相連,選擇一個串口與計算機的串口相連。由以太網(wǎng)發(fā)送UDP報文給RCM2200微控制器核心模塊經(jīng)過處理后通過串口發(fā)送給計算機,由計算機串口發(fā)送數(shù)據(jù)給RCM2200微控制器核心模塊經(jīng)過處理后通過其上的網(wǎng)絡(luò)口發(fā)送UDP報文給以太網(wǎng),從而實現(xiàn)基于RCM2200以太網(wǎng)和串口之間的通信。3UDP協(xié)議的實現(xiàn)UDP協(xié)議是比較著名的傳輸層協(xié)議之一,它使用IP作為網(wǎng)絡(luò)層協(xié)議,為應(yīng)用程序發(fā)送和接收數(shù)據(jù)報。但是,它提供無連接服務(wù),是不可靠傳輸。因此,UDP報文主要用于需要實時數(shù)據(jù)傳輸?shù)那闆r,一次傳輸少量的數(shù)據(jù)。在某些對實時性要求很高的場合,利用UDP報文進行數(shù)據(jù)傳輸是非常必要的,但往往要采用一些可靠性方案,以防止有漏傳、誤傳的現(xiàn)象發(fā)生。3.1客戶機/服務(wù)器程序設(shè)計模式客戶機/服務(wù)器的程序設(shè)計模式在網(wǎng)絡(luò)程序設(shè)計中被大量的應(yīng)用。這種設(shè)計模式將整個系統(tǒng)分為兩大部分——服務(wù)器部分和客戶機部分??蛻魴C向服務(wù)器提出請求,服務(wù)器對請求作相應(yīng)的處理將結(jié)果返回給客戶機。
根據(jù)不同的實際情況,客戶機/服務(wù)器的通信存在對稱和非對稱兩種方式。在對稱的方式下,通信的每一方都可能扮演主從角色;在非對稱的方式下,一方不可改變的認(rèn)為是主機,而另一方則是從機。無論是對稱的或是非對稱的,當(dāng)服務(wù)被提供時必然存在客戶進程和服務(wù)進程?;赨DP協(xié)議的通信既可采用對稱方式也可采用非對稱方式。3.2數(shù)據(jù)報套接字套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過程中端點的抽象表示,包含進行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機的IP地址,本地進程的協(xié)議端口,遠(yuǎn)地主機的IP地址,遠(yuǎn)地進程的協(xié)議端口。UDP協(xié)議支持?jǐn)?shù)據(jù)報套接字。這種套接字可以采用客戶/服務(wù)器模式,以全雙工方式工作,接收發(fā)送可以同時進行,但并不保證數(shù)據(jù)傳輸?shù)目煽啃浴⒂行蛐院蜔o重復(fù)性,需要由程序員負(fù)責(zé)管理數(shù)據(jù)報的排序和可靠性。3.3使用DynamicC實現(xiàn)UDP報文的傳輸DynamicC提供了許多支持TCP/IP協(xié)議的庫函數(shù)。其中,DCRTCP.LIB是最主要的函數(shù)庫。下面將簡要介紹UDP協(xié)議下的基本通信流程。3.3.1調(diào)用本地初始化函數(shù)
voidsock_init(void)
該函數(shù)將使用默認(rèn)配置初始化本地信息包驅(qū)動器以及DCRTCP.LIB函數(shù)庫。該函數(shù)必須在其他網(wǎng)絡(luò)庫函數(shù)被使用前進行調(diào)用。3.3.2打開數(shù)據(jù)報套接字
intudp_open(*s,lport,remote_IP,port,*data_handler())其中的參數(shù)解釋如下:s:指向UDP套接字的指針;lport:本地協(xié)議端口;remote_IP:可接受的遠(yuǎn)地主機IP地址,如果該項為-1,則支持廣播通信;port:可接受的遠(yuǎn)地進程協(xié)議端口,如果該項為-1,則為廣播數(shù)據(jù)報;data_handler():如果接收到數(shù)據(jù)則調(diào)用該函數(shù);該函數(shù)的返回值,如果成功返回非零,否則返回零值。3.3.3接收遠(yuǎn)地主機發(fā)送的數(shù)據(jù)報
intudp_recv(*s,*buf_recv,recv_len)
當(dāng)套接字初始化后用該函數(shù)掃描接收緩沖區(qū),,察看是否有數(shù)據(jù)報到達。其中,buf_recv:指向用于存放已到達數(shù)據(jù)報的數(shù)組的指針;recv_len:存放數(shù)據(jù)報的數(shù)組的大小。如果接收到數(shù)據(jù)報則返回數(shù)據(jù)報的長度;否則返回-1。3.3.4發(fā)送數(shù)據(jù)報給遠(yuǎn)地主機
intudp_send(*s,*buf_send,send_len)
調(diào)用該函數(shù)發(fā)送數(shù)據(jù)報給遠(yuǎn)地主機。如果成功返回該數(shù)據(jù)報的長度,否則返回-1。
buf_send:指向待發(fā)送數(shù)據(jù)報的指針;
send_len:待發(fā)送數(shù)據(jù)報的長度。3.3.5網(wǎng)絡(luò)信息處理函
inttcp_tick(*s)
該函數(shù)將察看網(wǎng)絡(luò)連接狀態(tài),檢查數(shù)據(jù)報的到達情況,處理新到數(shù)據(jù)報并重傳丟失的數(shù)據(jù)報。若出現(xiàn)網(wǎng)絡(luò)連接被復(fù)位及套接字已關(guān)閉的情況或參量s為NULL,則返回值為零;否則返回非零值。3.3.6關(guān)閉套接字
voidsock_close(*s)
當(dāng)數(shù)據(jù)傳送工作完成或傳送過程中發(fā)生錯誤時,可調(diào)用該函數(shù)關(guān)閉套接字4
串口通信的實現(xiàn)4.1RS232電平與TTL電平的轉(zhuǎn)換PC機的串行接口是符合EIARS-232C規(guī)范的外部總線標(biāo)準(zhǔn)接口,而RCM2200配備有四個串行接口,都是采用TTL電平,因此兩者之間必須進行電平轉(zhuǎn)換。以RCM2200的串行口C(位于核心模塊的J4插槽上)為例,電平轉(zhuǎn)換如圖2所示。圖2RS232與TTL電平轉(zhuǎn)換圖4.2使用DynamicC實現(xiàn)串口數(shù)據(jù)的傳輸
DynamicC提供了一些與計算機串行口進行通信的函數(shù)可供用戶程序調(diào)用,下面簡要介紹其中的一部分。4.2.1打開串行接口intserXopen(bard)bard:長整型,每秒鐘傳送的比特數(shù)。
該函數(shù)用于打開RCM2200的串行接口,由于RCM2200核心模塊擁有四個串行口,故X可根據(jù)需要取為A\B\C\D其中一個。在調(diào)用該函數(shù)之前,還必須先定義串行口的輸入輸出緩沖區(qū)大小,通常情況下設(shè)定為2n-1,否則就采用默認(rèn)值31,但在編譯時會給出警告。該函數(shù)的返回值:成功則為1,否則為0。4.2.2讀取PC機串行口數(shù)據(jù)
intserXgetc()
/*X=A|B|C|D*/
程序可以調(diào)用該函數(shù)查詢串行口是否有字符來到,如果有,返回該字符值;否則,返回值-1。4.2.3發(fā)送數(shù)據(jù)到PC機串行口
intserXputs(*s)
intserXwrite(s,length)/*X=A|B|C|D*/
這兩個函數(shù)均可用于發(fā)送字符串給計算機的串行口,返回成功發(fā)送的字符數(shù)。
s:待發(fā)送字符串的首地址;
length:待發(fā)送字符串的長度。4.2.4關(guān)閉串行口
voidserXclose()
/*X=A|B|C|D*/
該函數(shù)用于關(guān)閉已經(jīng)打開的串行口。5
實現(xiàn)以太網(wǎng)與串口之間的通信5.1
定義網(wǎng)絡(luò)以及串口初始化數(shù)據(jù)在程序的開頭,必須使用#define定義一些初始化數(shù)據(jù),比如:RCM2200所使用的本地IP地址以及端口,與之通信的遠(yuǎn)地IP地址以及端口以及串口輸入輸出緩沖區(qū)的大小等等。5.2主程序
在主程序中調(diào)用PC機串口發(fā)送字符串給RCM2200經(jīng)過處理后再由RCM2200發(fā)送UDP報文給以太網(wǎng)以及RCM2200接收以太網(wǎng)發(fā)送來的UDP報文后再送給計算機的串行口兩個子程序。main(){
sock_init();//初始化網(wǎng)絡(luò)庫函數(shù)
://打開串行口及網(wǎng)絡(luò)套接字
for(;;;)
{tcp_tick(NULL);//察看套接字狀態(tài)init_comm();//網(wǎng)絡(luò)發(fā)報文串口接收comm_init();//串口發(fā)數(shù)據(jù)網(wǎng)絡(luò)接收
}}5.3網(wǎng)絡(luò)發(fā)報文串口接收
子程序init_comm()使用庫函數(shù)udp_recv查詢RCM2200以太網(wǎng)接口是否有UDP報文來到,如果沒有則返回主程序,否則將UDP報文存放到buf_init數(shù)組中,然后調(diào)用serCputs(buf_init)通過RCM2200的串行口C發(fā)送到計算機的串行口。值得一提的是,當(dāng)RCM2200接收到了一次報文之后,它將自動關(guān)閉接收報文的套接字,因此,如果還想接受下一次發(fā)送的報文,必須再次調(diào)用函數(shù)udp_open打開該套接字。5.4串口發(fā)字符串網(wǎng)絡(luò)接收
子程序comm_init()調(diào)用函數(shù)serCgetc()用于查詢計算機的串行口是否有數(shù)據(jù)到來,如果沒有則返回主程序,否則將接收到的字符存儲到buf_comm數(shù)組中,直到檢測到結(jié)束符到來,將字符串以UDP報文的形式通過函數(shù)udp_send發(fā)送給以太網(wǎng)。如果發(fā)送成功,則返回主程序等待下一次數(shù)據(jù)的到來,否則關(guān)閉該套接字后重新打開再返回主程序等待。5.5程序調(diào)試結(jié)果
在該程序的調(diào)試過程中,利用VisualC++語言編寫了一個接收和發(fā)送UDP報文的程序用于以太網(wǎng)的計算機上,另外還使用了從網(wǎng)上下載的串口調(diào)試幫助軟件,結(jié)果表明,該程序能實現(xiàn)基于RCM2200以太網(wǎng)與異步串口之間的成功通信。結(jié)論
RCM2200是為了促進嵌入式系統(tǒng)的快速開發(fā)和實現(xiàn)集成的以太網(wǎng)連接而設(shè)計的。集成的以太網(wǎng)口允許用戶通過使用經(jīng)濟的網(wǎng)絡(luò)軟件進行瞬間的本地連接或全球范圍的連接。另外,RCM220
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋防水維修標(biāo)準(zhǔn)標(biāo)準(zhǔn)合同5篇
- 2025年住家育兒嫂工作合同示范文本
- 2025年合作資本眾籌合同
- 2025年辦公家具進口合同文本
- 2025年住宅小區(qū)維修基金管理合同范本
- 2025年工程建設(shè)項目貨物供應(yīng)合同標(biāo)準(zhǔn)文本
- 2025年成人高考語文文學(xué)常識《莫言小說》魔幻現(xiàn)實主義題庫
- 合同協(xié)議-技術(shù)改造合同6篇
- 有關(guān)上繳利潤遞增包干合同7篇
- 授權(quán)委托外方加工合同書6篇
- 2025年懷化職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫必考題
- 2025年第六屆(中小學(xué)組)國家版圖知識競賽測試題庫及答案
- 2025年中國床墊機械行業(yè)市場發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報告
- C小學(xué)一起諾如病毒胃腸炎疫情的調(diào)查與處置課件
- 2025年鎵礦采選項目投資可行性研究分析報告
- 歐泰科-吊掛軟件使用教程
- 公安局網(wǎng)安大隊工作總結(jié)
- 2025年裝備制造創(chuàng)新中心北京石油機械有限公司招聘筆試參考題庫附帶答案詳解
- 教科版六年級下冊科學(xué)全冊教學(xué)設(shè)計教案
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 病理學(xué)與病理生理學(xué)考試題
評論
0/150
提交評論