gprs無(wú)線(xiàn)數(shù)據(jù)傳輸終端研究與設(shè)計(jì)_第1頁(yè)
gprs無(wú)線(xiàn)數(shù)據(jù)傳輸終端研究與設(shè)計(jì)_第2頁(yè)
gprs無(wú)線(xiàn)數(shù)據(jù)傳輸終端研究與設(shè)計(jì)_第3頁(yè)
gprs無(wú)線(xiàn)數(shù)據(jù)傳輸終端研究與設(shè)計(jì)_第4頁(yè)
gprs無(wú)線(xiàn)數(shù)據(jù)傳輸終端研究與設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

硬件電路設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)在硬件設(shè)計(jì)中,沒(méi)有包含對(duì)于電機(jī)的數(shù)據(jù)采集部分,只設(shè)計(jì)了數(shù)據(jù)傳輸終端部分。系統(tǒng)的整體設(shè)計(jì)如圖3一1所示參考了Rabbit20OO和SIM100的使用手冊(cè)等資料,設(shè)計(jì)了GPRS終端的硬件電路,終端主要由以下幾個(gè)部分組成:中央控制部分采用Rabbit半導(dǎo)體公司的工業(yè)級(jí)芯片RabbitZO00作為微處理器。該處理器具有豐富的接口資源,配合其軟件開(kāi)發(fā)平臺(tái)DynamicC可實(shí)現(xiàn)在想的編程、調(diào)試和仿真。保證了終端的良好性能,也方便軟件的升級(jí)。2.GPRS模塊選用的是SIMCOM推出的GSM/GPRS雙頻模塊SIM100,SIM是當(dāng)前性?xún)r(jià)比較高的一款GPRS模塊,它集成了完整的射頻電路和GSM基帶處理器,適合于開(kāi)發(fā)一些GPRS無(wú)線(xiàn)應(yīng)用產(chǎn)品。同時(shí)它提供了功能完備的系統(tǒng)接口,用戶(hù)只需投入少量的研發(fā)費(fèi)用,在較短的時(shí)間內(nèi),就可·以集成自己的應(yīng)用系統(tǒng)。SIM100可以與RabbitZ000以標(biāo)準(zhǔn)的串口方式相連。3.存儲(chǔ)擴(kuò)展區(qū)。包括FLASH存儲(chǔ)擴(kuò)展和SRAM存儲(chǔ)擴(kuò)展,F(xiàn)lashMemory擬采用Atmel的AT29C020(5V,256K)存儲(chǔ)器,該存儲(chǔ)器除作為程序存儲(chǔ)區(qū)外,Dynamicc支持Rabbit2000在其內(nèi)部開(kāi)辟出4k作為用戶(hù)數(shù)據(jù)存儲(chǔ)區(qū),用于存儲(chǔ)非易失的設(shè)置參數(shù)。終端掉電后數(shù)據(jù)不會(huì)丟失。SRAM數(shù)據(jù)存儲(chǔ)區(qū)選用CY的CY62128B(SV,128K)芯片,主要用于動(dòng)態(tài)數(shù)據(jù)的交換、緩存等功能,用于提高Rabbit2000的運(yùn)行速度。4.程序下載接口,提供DynamicC環(huán)境下程序的下載,調(diào)試及仿真接口。參考Rabbit公司提供的下載電路設(shè)計(jì)而成。3.1.1RabbitZ000微處理器Rabbit2000(如圖3一2)是Rabbit半導(dǎo)體公司專(zhuān)門(mén)為應(yīng)用于中小型控制器而設(shè)計(jì)的8位微處理器。RabbitZO00使用簡(jiǎn)便,其硬件及軟件界面都最大程度的實(shí)現(xiàn)了方便和簡(jiǎn)潔,運(yùn)算速度在8位總線(xiàn)微處理器中處于領(lǐng)先地位。它和280系列微處理器有相似的結(jié)構(gòu)和高度的兼容性,但性能有很大的提高。具有多達(dá)40個(gè)通用FO引腳。內(nèi)建日歷、時(shí)鐘、看門(mén)狗、定時(shí)器、多級(jí)中斷、雙DMA通道。對(duì)于8位總線(xiàn)的微處理器,Rabbit具有很高的計(jì)算速度。這對(duì)于實(shí)時(shí)操作系統(tǒng)是極為重要的。對(duì)于RabbitZO00,傳統(tǒng)的微處理器硬件和軟件的開(kāi)發(fā)己被簡(jiǎn)化,不再需要在線(xiàn)仿真。用一根接口電纜把PC串行口和基于R邊bbitZO00的目標(biāo)系統(tǒng)連接起來(lái)就即可實(shí)現(xiàn)軟件的開(kāi)發(fā)。Rabbit20OO具有4個(gè)串行端口,具有很強(qiáng)的組網(wǎng)通信能力。它能精確地產(chǎn)生脈沖和邊沿,可實(shí)現(xiàn)多優(yōu)先級(jí)中斷。處理器速度和功耗在程序控制之下,在處理器持續(xù)執(zhí)行指令的時(shí)候,能使用超低功耗模式實(shí)現(xiàn)計(jì)算和執(zhí)行邏輯檢測(cè),為實(shí)現(xiàn)低功耗設(shè)計(jì)提供了方便。Rabbit200O微處理器需要一種創(chuàng)新的C語(yǔ)言(D”amicC)系統(tǒng)的支持,z一worid公司給Rabbit2000提供軟件開(kāi)發(fā)工具,縮短了使用者的開(kāi)發(fā)周期。它很容易使硬件和軟件接口盡可能的簡(jiǎn)潔和智能。Rabbit2000是一個(gè)8位總線(xiàn)的微處理器,同時(shí)它的指令集緊湊放置和內(nèi)存接口的設(shè)計(jì),允許內(nèi)存的最大利用,因此RabhitZO00具有突出的計(jì)算速度和優(yōu)秀的浮點(diǎn)運(yùn)算能力。為了方便RabbitZ000的使用者,簡(jiǎn)化了微處理器硬件和軟件的開(kāi)發(fā)。不需要在線(xiàn)仿真程序,軟件開(kāi)發(fā)是通過(guò)連接個(gè)人計(jì)算機(jī)串口和Rabbit目標(biāo)系統(tǒng)的簡(jiǎn)單接口電纜完成的,減小了軟件設(shè)計(jì)的難度[l0]。3.1.2Rabb1t2000微處理器主要性能Rabbit20OO微處理器主要性能如下[11]:1.100引腳pQFp封裝。工作電壓范圍2.7V-5v。時(shí)鐘頻率可達(dá)30MHz;2.工用級(jí)適用的電壓波動(dòng)為10%,溫度范圍為一40℃到+85℃。商用級(jí)適用的電壓波動(dòng)為5%,溫度范圍為0℃到70℃;3.為C程序留有IM字節(jié)的空間,最多可寫(xiě)5萬(wàn)多行程序代碼;4.具有四個(gè)級(jí)別的中斷優(yōu)先級(jí),使得在實(shí)際工作中對(duì)關(guān)鍵應(yīng)用能夠做到快速響應(yīng)。一個(gè)完整的中斷程序可在小于4ps的時(shí)間內(nèi)執(zhí)行完成;5.訪(fǎng)問(wèn)UO設(shè)備可通過(guò)使用帶有FO前綴的存儲(chǔ)器存取指令來(lái)完成。因而,與專(zhuān)用刀0指令集的處理器相比,訪(fǎng)問(wèn)刀O設(shè)備更加快捷、簡(jiǎn)便;6.系統(tǒng)硬件設(shè)計(jì)簡(jiǎn)單??偣部捎?個(gè)靜態(tài)存儲(chǔ)器芯片(比如RAM和FLAsHEPROM)直接與微處理器連接而不需要額外的譯碼邏輯。通過(guò)使用并行FO口線(xiàn)作為高位地址線(xiàn),還可處理更多的存儲(chǔ)器。每一次存儲(chǔ)器訪(fǎng)問(wèn)需要兩個(gè)時(shí)鐘周期。在24MHz,RabbitZ000微處理器無(wú)等待狀態(tài)下,存儲(chǔ)器存取時(shí)間為7Ons。多數(shù)FO設(shè)備也可實(shí)現(xiàn)無(wú)譯碼邏輯的直接連接;7.存儲(chǔ)器讀取周期為兩個(gè)時(shí)鐘周期長(zhǎng)度。清晰的存儲(chǔ)器和FO讀寫(xiě)邏輯能夠完全避免相互沖突的可能。外圍FO設(shè)備通常使用可編程接口作為FO芯片、FO讀選通信號(hào)或FO寫(xiě)選通信號(hào)等來(lái)實(shí)現(xiàn)無(wú)譯碼邏輯接口。內(nèi)置時(shí)鐘倍頻分頻器允許使用降頻方式工作以減少高頻輻射;8.通過(guò)一個(gè)串口或一個(gè)并口對(duì)從端口進(jìn)行訪(fǎng)問(wèn),RabbitZ000可以被冷啟動(dòng)。這意味著閃存里可以沒(méi)有任何內(nèi)容,也可以在沒(méi)有任何現(xiàn)存的程序和BIOS的情況下隨時(shí)重寫(xiě)程序;9.共有40條并行UO口線(xiàn)。其中一些FO口線(xiàn)是與定時(shí)器同步的,這就允許在硬件和軟件聯(lián)合控制之下產(chǎn)生精確地時(shí)鐘沿和脈沖;10.共有4個(gè)串行口,A、B、C和D。這4個(gè)串行端口都可以工作在異步模式下,其中A和B兩個(gè)串行口還可以工作在同步模式下。通信波特率可以很高,在異步操作時(shí)為時(shí)鐘速度的l/犯,同步操作時(shí),使用1/6的外部時(shí)鐘速度或l/4的內(nèi)部時(shí)鐘速度。在異步工作方式時(shí),Rabbit200O支持發(fā)送標(biāo)志字節(jié)來(lái)標(biāo)記一個(gè)消息幀的開(kāi)始。標(biāo)志字節(jié)有9比特而不是8比特:額外的一位比特在前8位比特之后,用以標(biāo)記一個(gè)消息幀的開(kāi)始。通過(guò)串行口A(yíng)可以對(duì)Rabbit2000進(jìn)行冷啟動(dòng),32.768KHz晶振在冷啟動(dòng)時(shí)為串口A(yíng)提供時(shí)鐘頻率;11.從端口方式允許RabbitZ000作為智能外設(shè)從屬于一個(gè)主處理器。8位從端口有6個(gè)8位寄存器,分兩對(duì)進(jìn)行雙向通信,獨(dú)立的選通脈沖和中斷信號(hào)用來(lái)控制從端口上下行通信。如果時(shí)鐘信號(hào)和復(fù)位信號(hào)都與主處理器共用,那么只需要一個(gè)Rabhit2000微處理器和一個(gè)RAM芯片就可以構(gòu)成一個(gè)完整的從系統(tǒng);12.內(nèi)置電池供電的時(shí)間舊期時(shí)鐘部件,使用一個(gè)外置犯.768KHz晶振。時(shí)間舊期時(shí)鐘也可用于提供每488ps一次的周期性中斷;13.很多定時(shí)器和計(jì)數(shù)器(共6個(gè))可用于產(chǎn)生中斷、波特率發(fā)生和計(jì)數(shù)器工作。內(nèi)置主時(shí)鐘振蕩器使用的是一個(gè)外部晶體,也可以使用陶制諧振器。典型的晶體振蕩器頻率范圍在1.SMHz到29.SMHz之間。系統(tǒng)時(shí)鐘允許倍頻或8分頻,來(lái)動(dòng)態(tài)改變工作速度或降低功耗。為定時(shí)器提供的時(shí)鐘是獨(dú)立的,以保證當(dāng)處理器時(shí)鐘分頻或倍頻時(shí)不影響波特率和定時(shí)器。極低功率方式時(shí),處理器時(shí)鐘可由犯.786KHz振蕩器驅(qū)動(dòng),并把主振蕩器斷電。這時(shí)電流大約為100pA,而處理器仍能保持每秒10,000條指令的執(zhí)行速度。這是優(yōu)于其他處理器的休眠模式:14.Rabbit2000有著卓越的浮點(diǎn)數(shù)處理性能,原因在于它有著嚴(yán)格的代碼庫(kù)和強(qiáng)大的處理能力。例如,25MHz的時(shí)鐘通常需要14“s進(jìn)行浮點(diǎn)加法運(yùn)算,13ps進(jìn)行乘法運(yùn)算,40協(xié)s進(jìn)行開(kāi)方運(yùn)算;15.有一個(gè)內(nèi)置的看門(mén)狗定時(shí)器。認(rèn)厄tchDog是一個(gè)帶有清除端及溢出信號(hào)輸出的計(jì)數(shù)器,用于在系統(tǒng)或程序超時(shí)或出錯(cuò)時(shí)自動(dòng)重啟系統(tǒng),使系統(tǒng)復(fù)位;16.擁有標(biāo)準(zhǔn)的編程端口,因而避免了使用CPU仿真器的必要。通過(guò)連接目標(biāo)系統(tǒng)和PC機(jī)的簡(jiǎn)單的接口電纜可以用來(lái)下載和調(diào)試軟件。而占用編程口所增加的開(kāi)銷(xiāo)極小。3.1.3Rabb1t2000主要優(yōu)點(diǎn)Rabbit2000主要優(yōu)點(diǎn)如下[12]:l)無(wú)縫的體系結(jié)構(gòu)使設(shè)計(jì)硬件系統(tǒng)變得容易;2)有許多串口,而且它們能快速地通信;3)精確脈沖和時(shí)間沿的產(chǎn)生是一個(gè)標(biāo)準(zhǔn)的特征;4)中斷具有多種優(yōu)先級(jí);5)處理器的速度和消耗能量受程序控制;6)超低能量模式下,雖然只有犯KHz,但處理器能繼續(xù)運(yùn)行,進(jìn)行計(jì)算而且執(zhí)行合乎邏輯的測(cè)試;7)Rabbit200O的從端口可使其作為一個(gè)智能的外圍設(shè)備或一個(gè)從處理器。舉例來(lái)說(shuō),協(xié)議棧能夠直接下載到一個(gè)Rabbit200O從處理器,主機(jī)可以是任何的處理器;8)RabbitZ000可被冷啟動(dòng);9)能編寫(xiě)復(fù)雜的軟件,C源碼可達(dá)1000或50000行,有編寫(xiě)源碼的工具;10)一個(gè)簡(jiǎn)單的ro針可編程接口代替了在線(xiàn)仿真程序和PROM;11)包含一個(gè)可更換電池的時(shí)間舊期時(shí)鐘;12)標(biāo)準(zhǔn)的Rabbit2000電路符合工業(yè)上的溫度和電壓規(guī)格。3.2.5編程接口電路提供DynamicC環(huán)境下程序的下載,調(diào)試及仿真接口。參考設(shè)計(jì)電路如圖3一7所示[13]。3.3.1GPRS模塊介紹SIMloo是S加COM推出的GS樹(shù)GPRS雙頻模塊,主要為語(yǔ)音傳輸、短消息和數(shù)據(jù)業(yè)務(wù)提供無(wú)線(xiàn)接口。S加100集成了完整的射頻電路和GSM的基帶處理器,適合于開(kāi)發(fā)一些GSM/GPRS的無(wú)線(xiàn)應(yīng)用產(chǎn)品,如移動(dòng)電話(huà)、PDA、PCMCIA無(wú)線(xiàn)MODEM卡、USB無(wú)線(xiàn)MODEM、無(wú)線(xiàn)POS機(jī)、無(wú)線(xiàn)抄表、無(wú)線(xiàn)數(shù)據(jù)傳輸業(yè)務(wù),無(wú)線(xiàn)公用電話(huà)、無(wú)線(xiàn)商務(wù)電話(huà)、監(jiān)控、調(diào)度、車(chē)載、遙控、遠(yuǎn)程測(cè)量、定位和導(dǎo)航等系統(tǒng)和產(chǎn)品,應(yīng)用范圍十分廣泛。SIM100模塊為用戶(hù)提供了功能完備的系統(tǒng)接口,用戶(hù)只需投入少量的研發(fā)費(fèi)用,在較短的研發(fā)周期內(nèi),就可集成自己的應(yīng)用系統(tǒng)。GS樹(shù)GPRS模塊SIM10o技術(shù)指標(biāo)主要技術(shù)指標(biāo)如下[’4]:》雙頻GSMgOO/1800》符合GSMPhaseZ/2+標(biāo)準(zhǔn)》支持GSM07.07和07.05AT命令》電源電壓3.3V一4.6V》電流消耗:待機(jī)模式4mA,通話(huà)模式300mA(平均)1.7A(峰值)》體積大小:53mmx33mm‘3mm》重量:129(包括屏蔽罩)》工作溫度:一35℃~+75℃》支持USSD》透明或非透明方式數(shù)據(jù)傳輸速率可達(dá)960ObPs》GPRS:最高下載速度85.6kbps/最高上傳速度42.skbPs》編碼方式CSI/2/3/4》PPP一協(xié)議》GPRSQos》3V/l.SVS加接口》2Mierophone輸入》2speaker輸出》鍵盤(pán)接口》LCD接口》背光LED驅(qū)動(dòng)接口》Buzzer接口》RTC備用電源/電池接口》GPIO》RS232串口支持》遠(yuǎn)程AT命令控制》串行波特率:300一115200bits/s》單天線(xiàn)接口3.3.2與Rabbit接口電路SIM10O提供標(biāo)準(zhǔn)的RS一2犯串行接口,用戶(hù)可以通過(guò)串行口使用AT命令完成對(duì)模塊的操作。RXD是數(shù)據(jù)接收端口,TXD為數(shù)據(jù)發(fā)送端口,RTS為請(qǐng)求發(fā)送端口,CTS為清除發(fā)送端口,分別與Rabbit2000的串口C中的pC3、pCZ、PCS、PC4端口相連。3.3.3SIM卡接口電路SIM100支持外部SIM卡,可以直接與3.OVSIM卡或者1.SVSIM卡連接。模塊自動(dòng)監(jiān)測(cè)和適應(yīng)SIM卡類(lèi)型,為了防止靜電損壞,在靠近sIM卡座各個(gè)引腳的位置放置瞬變電壓抑制二極管,本處使用ST公司的ESDA6VIWSTVS管。SIM卡接口電路如圖3一9所示[’4]。應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的TCP/正實(shí)現(xiàn)都會(huì)提供下面這些通用的應(yīng)用程序:》Teinet遠(yuǎn)程登錄?!稦TP文件傳輸協(xié)議?!稴MTP簡(jiǎn)單郵件傳送協(xié)議?!稴NMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議。在TCP/護(hù)協(xié)議族中,有很多種協(xié)議。如圖4一2所示。TCP和端口號(hào)AT+C丁SRIP=<mode>,mode為0,則不顯示;mode為1則顯示,格式為RECVFROM:IPADDR:PORT。默認(rèn)情況下在接收數(shù)據(jù)時(shí)不顯示發(fā)送方的IP地址和端口號(hào)[14]。5.3GPRS終端軟件實(shí)現(xiàn)GPRS終端的軟件設(shè)計(jì)主要包括串口驅(qū)動(dòng)、模塊驅(qū)動(dòng)、PPP協(xié)議、TCP/IP協(xié)議的實(shí)現(xiàn)。設(shè)計(jì)的主流程圖如圖5一2所示,程序開(kāi)始后,首先對(duì)串口進(jìn)行初始化,然后對(duì)GPRS終端進(jìn)行參數(shù)設(shè)置,完成后,即開(kāi)始進(jìn)行PPP撥號(hào)連接,連接成功后,進(jìn)入GPRS網(wǎng)絡(luò),獲取護(hù)地址后,終端主動(dòng)向數(shù)據(jù)中心發(fā)出連接請(qǐng)求,收到應(yīng)答后,等待接收命令、解析并發(fā)送數(shù)據(jù)。圖5-2終端主程序流程圖5.3.1串口驅(qū)動(dòng)程序RabbitZ000微處理器提供4個(gè)串口。串口A(yíng)、B、C和D。Z一Wbrld支持兩種類(lèi)型的串口通信方式,分別為基于數(shù)據(jù)流的驅(qū)動(dòng)和基于分組的驅(qū)動(dòng)?;诜纸M的驅(qū)動(dòng)是由DynamicC的PACKET.uB庫(kù)文件來(lái)實(shí)現(xiàn)的。不像RS232驅(qū)動(dòng)器是點(diǎn)對(duì)點(diǎn)的,信息包的驅(qū)動(dòng)的設(shè)計(jì)是點(diǎn)對(duì)多點(diǎn)的通信方式,帶一個(gè)RS485接口。信息包驅(qū)動(dòng)器在半雙工的模式下處理發(fā)送和接收數(shù)據(jù)報(bào)?;跀?shù)據(jù)流的驅(qū)動(dòng)是由DynamicCRs232.UB庫(kù)文件實(shí)現(xiàn)的。這個(gè)庫(kù)包含電路緩沖區(qū),一個(gè)中斷服務(wù)程序和用戶(hù)接口的函數(shù)。這里采用基于數(shù)據(jù)流的驅(qū)動(dòng)[27]。對(duì)于這四個(gè)串口來(lái)說(shuō),有兩個(gè)電路緩沖區(qū),一個(gè)是用于讀數(shù)據(jù)的(接收緩沖區(qū)),一個(gè)是用于寫(xiě)數(shù)據(jù)的(發(fā)送緩沖區(qū))。這些緩沖區(qū)只是暫時(shí)存放要發(fā)送和接收的數(shù)據(jù),但不對(duì)這些數(shù)據(jù)進(jìn)行處理。默認(rèn)的緩沖區(qū)大小是31字節(jié)。通過(guò)兩個(gè)宏XINBUFSIZE和XOUTBUFSIZE可以對(duì)緩沖區(qū)的大小進(jìn)行修改,這里X指的是串口A(yíng)、B、C和D。這里X代表A,B,C或D。編寫(xiě)如下函數(shù):》serxgetc():讀取接收緩沖區(qū)的下一個(gè)字符?!穝erXread():讀取接收緩沖區(qū)的指定數(shù)量的字節(jié)?!穝erxpeek():查看接收緩沖區(qū)的下一個(gè)字符?!穝erxPutc():在發(fā)送緩沖區(qū)里寫(xiě)入一個(gè)字符?!穝erXputs():在發(fā)送緩沖區(qū)里寫(xiě)入一個(gè)空結(jié)束符的字符串?!穝erXwrite():在發(fā)送緩沖區(qū)里寫(xiě)入指定數(shù)量的字符。除了serXpeek()函數(shù)之外,其他的函數(shù)都是先把使用的緩沖區(qū)鎖住,在返回之前再進(jìn)行各種開(kāi)鎖[24】。例如serBputc():在向發(fā)送緩沖區(qū)里寫(xiě)入一個(gè)字符。流程圖如圖5一3所示。i以serBPute(intc){Staticintn;if(cbuf--wrlock(spb_ocbuf){n=cbuf_putch(spb_ocbuf,c);if(n){sPb_starttx();}Cbuf_wrunlock(spb_ocbuf);}else{n=0;}Returnn;}圖5-3寫(xiě)入一個(gè)字符流程圖serBgetc():讀取接收緩沖區(qū)里的下一個(gè)字符。流程圖如圖5一4所示。圖5-4讀取字符流程圖nodebugintserBgete(){statieintn;if(cbuf_rdlock(spb_icbuf)){n=cbuf--geteh(sPb_icbuf);if(brtscts&&cbuf_used(spb_icbuf<=serBrtsLo){(*b_rtson)();//setPortBRTSlinehigh}cebuf--rdunloek(spb_icbuf);}Else{n=-l;}returnn;}有些時(shí)候系統(tǒng)不能以數(shù)據(jù)的發(fā)送速率處理要接收的數(shù)據(jù)。這時(shí)需要使用緩沖區(qū),但是如果接收機(jī)跟不上發(fā)送機(jī)的處理速度,緩沖區(qū)會(huì)產(chǎn)生溢出情況。這時(shí)就需要采用流量控制,它采用的方法是允許接收機(jī)標(biāo)示什么時(shí)候需要發(fā)送機(jī)暫停。可以通過(guò)軟件方式或硬件方式實(shí)現(xiàn)流量控制。RS232驅(qū)動(dòng)器使用的是硬件流控。serXfloweontrolon()和serXfloweontroloff()函數(shù)用來(lái)使能或禁止硬件流控.Rabbit被設(shè)置為一個(gè)DTE(數(shù)據(jù)終端設(shè)備),意味著當(dāng)Rabbit為更多的數(shù)據(jù)做好準(zhǔn)備時(shí),要聲明流控線(xiàn)RTS(請(qǐng)求發(fā)送,而CTS(清除發(fā)送)是一個(gè)輸入信號(hào)來(lái)監(jiān)視系統(tǒng)的準(zhǔn)備狀態(tài),系統(tǒng)要與Rabbit相連。目前使用宏定義來(lái)配置RTS和CTS,定義使用哪個(gè)端口和這個(gè)端口的哪個(gè)特定位。下面是為串口B配置RTS/CTS的例子。#defineSERBRTSPORTPBDR//使用端口B的數(shù)據(jù)寄存器#defineSERBRTSSHADOWPBDRShadow//定義端口B的屏蔽寄存器#defineSERB_RTS_BIT6//輸出#defineSERB_RTS_PORTPBDR//輸入#defineSERB_RTS_BIT5如下為使能串口B的硬件流控。本函數(shù)使能控制流控的兩根數(shù)據(jù)線(xiàn)CTS和RTS。當(dāng)另外的系統(tǒng)準(zhǔn)備接收數(shù)據(jù)時(shí),CTS的輸入將被拉低。RTS作為輸出信號(hào),系統(tǒng)用它表明本系統(tǒng)已經(jīng)準(zhǔn)備好接收數(shù)據(jù)。VoidserBfloweontrolon(){brtscts=l;//設(shè)定為流控b_checkctsfunc=spb--checkcts_fc;b_rtsoff=spb_rtsoff--fc;b_rtson=spb_rtson_fc;serBrtsLo=BINBUFSIZE*0.2;serBrtsHi=BINBUFSIZE*0.8;//如果緩存低于80%,則設(shè)RTS為高if(serBrdUsed()<serBrtsHi)(*b_rtson)():5.3.2PPP連接的實(shí)現(xiàn)對(duì)于ppp連接,DynamicC的庫(kù)中己經(jīng)給出了GpRS初始化和ppp連接的模塊的初始化函數(shù)ifconfig(),所以只需在程序中進(jìn)行一些宏定義,并且在main函數(shù)中調(diào)用ifconfig()函數(shù)。#defineUSE_PPP_SERIAL0x04//通過(guò)端口C進(jìn)行PPP連接#defineMODEM_DEBUGI#definePSS_MODEM_SENDEXPECT_SIZE200#defineDLALUP_SENDEXPECT"AT+CGDCONT=l,\"IP\",\"CMNET\",0,0OKATD*99***l#CONNECT"/*設(shè)置AT連接指令。ATD*99***l#是GPRS業(yè)務(wù)使用的撥號(hào)號(hào)碼*/#definePAPNAME""http://用戶(hù)名GPRS默認(rèn)為空#definePAPPASSWORD""http://密碼主程序中調(diào)用的ifconfig函數(shù)如下:ifconfig(IF_PPPZ,IFS_PPP_INIT,IFS_PPP_SPEED,115200L,IFS_PPP_RTSPIN,PCDR,PCDRShadow,4,IFS_PPP_CTSPIN,PCDR,5,IFS_PPP_FLOWCONTROL,l,IFS_PP_SENDEXPECT,DIALUP_SENDEXPECT,IFS_PPP_HANGUP,"ATH",IFS_PP_MODEMESCAPE,l,IFS_PPP_ACCEPTIP,l,IFS_PPP_ACCEPTDNS,l,IFS_PPP_REMOTEAUTH,PAPNAME,PAPPASSWORD,IFS_UP,IFS_END):Ifconfig的流程圖如圖5一5所示,首先是對(duì)模塊的初始化,初始化成功后進(jìn)行撥號(hào),撥號(hào)成功,登入GPRS網(wǎng)后,進(jìn)行PPP連接。圖5-5Ifconfig模塊初始化函數(shù)流程圖5.3.3UDP數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)由于DynamicC內(nèi)嵌了TCP/IP協(xié)議,所以傳輸數(shù)據(jù)時(shí)只要包括UDP部分就可以了。UDP數(shù)據(jù)傳輸主要包括數(shù)據(jù)的發(fā)送與接收兩部分,在GPRS模塊附著到GPRS網(wǎng)絡(luò)后,首先是進(jìn)行UDP初始化,打開(kāi)UDP端口,采用Costate互聯(lián)語(yǔ)句進(jìn)行數(shù)據(jù)的發(fā)送與接收。發(fā)送數(shù)據(jù)后,判斷操作是否成功,若不成功,則關(guān)閉端口,重新進(jìn)行連接,流程圖如圖5一6所示。圖5-6UDP收發(fā)數(shù)據(jù)流程圖發(fā)送數(shù)據(jù)的函數(shù)如下:intsend_packet(void){staticlongsequence;autocharbuf[128];autointlength,retval;#GLOBAL_INIT{sequence=0;}sequence++;sprintf(buf,"SEQ=%ld",sequence)://格式化數(shù)據(jù)并填入緩沖區(qū)length=strien(buf)+l;//發(fā)送數(shù)據(jù)retval=udp_send(&my_sock,buf,length);//判斷發(fā)送結(jié)果,不成功則關(guān)閉連接,重新打開(kāi)if(retval<0){Printf(”Errorsendingdatagram!Closingandreopeningsocket...\n");sock_close(&my_sock);if(!udp_oPen(&my_sock,LOCAL_PORT,resolve(REMOTE_IP),REMOTE_PORT,NULL)){Printf("udp_openfailed!\n");exit(0);}}Tcp_tieck(NULL);returnl;}Costate互聯(lián)語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收如下:for(;;){receive_packet();Costate{waitfor(DelaySec(l));waitfor(send_packet());}}5.3.4TCP數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)TCP數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)與UDP基本一致,流程圖與UDP流程圖一樣,只是在函數(shù)的調(diào)用上有所不同。如下為T(mén)CP發(fā)送數(shù)據(jù)的函數(shù)。Intreceive_packet(){intbytes_read;Staticcharreceived_buf[128];#GLOBAL_INIT{memset(received_buf,0x00,sizeof(received_buf));//清除緩沖區(qū)}//接收數(shù)據(jù)Bytes_read=sock_fastread(&my_socket,received_buf,sizeof(received--buf)-l);if(bytes_read>0){received_buf[bytes_read]='\0';Printf("%s",received_buffer);return1;}5.4程序調(diào)試5.4.1調(diào)試環(huán)境由于時(shí)間關(guān)系,本文只設(shè)計(jì)出了該終端的硬件結(jié)構(gòu),未做出產(chǎn)品,軟件設(shè)計(jì)主要是在RCM2300開(kāi)發(fā)板平臺(tái)上完成的。在調(diào)試中,采用了RCM2300開(kāi)發(fā)板(如圖5一7所示),以及SIMIOOGPRS模塊,兩者之間采用RS232串口進(jìn)行連接,RCM2300通過(guò)J認(rèn)。連接到PC,軟件平臺(tái)為?!盿mieC。接收端用TCP/UDP接收軟件??刂颇K的核心是RCM2300如圖5一8所示,模塊的硬件電路由Rabbit2000徽處理器、一個(gè)256K的Flash、一個(gè)128K的SRAM、4個(gè)串口、26個(gè)1/0口和一個(gè)10針的編程接口組成。RabbitCoreRCM2300具有Rabbit2000和其它內(nèi)置的特點(diǎn):快速高效的指令集、5個(gè)8比特定時(shí)器、2個(gè)10比特定時(shí)器、22.IMHZ時(shí)鐘速率、四個(gè)串口、256KFlash用來(lái)存儲(chǔ)RCM2300應(yīng)用程序。開(kāi)發(fā)板上有RS232串行接口,實(shí)現(xiàn)與GPRS的串行通信。5.4.2調(diào)試過(guò)程調(diào)試中,將目標(biāo)IP地址設(shè)置為3,目標(biāo)端口設(shè)置為1234,波特率為115200bits。使用兩臺(tái)PC,將一臺(tái)具有公網(wǎng)IP的PC作為中心端,另一臺(tái)PC與數(shù)據(jù)終端連接。中心端用TCP心DP接收軟件在指定端口接收測(cè)試。建立好連接后,無(wú)線(xiàn)終端每隔一定時(shí)間向數(shù)據(jù)中心循環(huán)發(fā)送一組數(shù)據(jù)。如圖5-9所示。中心端監(jiān)聽(tīng)端口并接收數(shù)據(jù),如圖5一10為UDP傳送數(shù)據(jù)時(shí),數(shù)據(jù)中心接收數(shù)據(jù)列表。圖5-9傳輸終端發(fā)送數(shù)據(jù)圖5-10中心端接收數(shù)據(jù)試驗(yàn)中分別對(duì)UDP和TCP傳輸進(jìn)行了數(shù)次數(shù)據(jù)傳輸測(cè)試,包括每隔15、lmin、smin、10min、2omin、30min進(jìn)行循環(huán)數(shù)據(jù)傳輸測(cè)試。5.4.3調(diào)試結(jié)果測(cè)試結(jié)果表明,無(wú)線(xiàn)終端在傳輸數(shù)據(jù)的過(guò)程中,中心端能接收到數(shù)據(jù),說(shuō)明在實(shí)驗(yàn)環(huán)境中,通過(guò)GPRS傳輸數(shù)據(jù)是成功的。分別用TCP和UDP傳輸方式實(shí)現(xiàn)了數(shù)據(jù)的傳輸。也對(duì)兩者的運(yùn)行結(jié)果進(jìn)行了比較。如下:1.每隔l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論