版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、硬件電路設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)在硬件設(shè)計(jì)中,沒有包含對于電機(jī)的數(shù)據(jù)采集部分,只設(shè)計(jì)了數(shù)據(jù)傳輸終端部分。系統(tǒng)的整體設(shè)計(jì)如圖31所示用11承卡”件也”樞明參考了Rabbit20OO和SIM100的使用手冊等資料,設(shè)計(jì)了GPRS終端的硬件電路,終端主要由以下幾個(gè)部分組成:1.中央控制部分采用Rabbit半導(dǎo)體公司的工業(yè)級芯片RabbitZO00作為微處理器。該處理器具有豐富的接口資源,配合其軟件開發(fā)平臺DynamicC可實(shí)現(xiàn)在想的編程、調(diào)試和仿真。保證了終端的良好性能,也方便軟件的升級。2.GPRS模塊選用的是SIM推出的GSM/GPRS雙頻模塊SIM100,SIM是當(dāng)前性價(jià)比較高的一款GPRS模塊,它
2、集成了完整的射頻電路和GSM基帶處理器,適合于開發(fā)一些GPRS無線應(yīng)用產(chǎn)品。同時(shí)它提供了功能完備的系統(tǒng)接口,用戶只需投入少量的研發(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)部開辟出4k作為用戶數(shù)據(jù)存儲(chǔ)區(qū),用于存儲(chǔ)非易失的設(shè)置參數(shù)。終端掉電后數(shù)據(jù)不會(huì)丟失。SRAM數(shù)據(jù)存儲(chǔ)區(qū)選用CY的CY62128B(SV128K)芯片,
3、主要用于動(dòng)態(tài)數(shù)據(jù)的交換、緩存等功能,用于提高Rabbit2000的運(yùn)行速度。4.程序下載接口,提供DynamicC環(huán)境下程序的下載,調(diào)試及仿真接口。參考Rabbit公司提供的下載電路設(shè)計(jì)而成。3.1.1 RabbitZ000微處理器Rabbit2000(如圖3一2)是Rabbit半導(dǎo)體公司專門為應(yīng)用于中小型控制器而設(shè)計(jì)的8位微處理器。RabbitZO00使用簡便,其硬件及軟件界面都最大程度的實(shí)現(xiàn)了方便和簡潔,運(yùn)算速度在8位總線微處理器中處于領(lǐng)先地位。它和280系列微處理器有相似的結(jié)構(gòu)和高度的兼容性,但性能有很大的提高。具有多達(dá)40個(gè)通用FO引腳。內(nèi)建日歷、時(shí)鐘、看門狗、定時(shí)器、多級中斷、雙DM
4、A通道。對于8位總線的微處理器,Rabbit具有很高的計(jì)算速度。這對于實(shí)時(shí)操作系統(tǒng)是極為重要的。對于RabbitZO0O,傳統(tǒng)的微處理器硬件和軟件的開發(fā)已被簡化,不再需要在線仿真。用一根接口電纜把PC串行口和基于R邊bbitZO00的目標(biāo)系統(tǒng)連接起來就即可實(shí)現(xiàn)軟件的開發(fā)。Rabbit20OO具有4個(gè)串行端口,具有很強(qiáng)的組網(wǎng)通信能力。它能精確地產(chǎn)生脈沖和邊沿,可實(shí)現(xiàn)多優(yōu)先級中斷。處理器速度和功耗在程序控制之下,在處理器持續(xù)執(zhí)行指令的時(shí)候,能使用超低功耗模式實(shí)現(xiàn)計(jì)算和執(zhí)行邏輯檢測,為實(shí)現(xiàn)低功耗設(shè)計(jì)提供了方便。Rabbit200O微處理器需要一種創(chuàng)新的C語言(D”amicC)系統(tǒng)的支持,z一wori
5、d公司給Rabbit2000提供軟件開發(fā)工具,縮短了使用者的開發(fā)周期。它很容易使硬件和軟件接口盡可能的簡潔和智能。Rabbit2000是一個(gè)8位總線的微處理器,同時(shí)它的指令集緊湊放置和內(nèi)存接口的設(shè)計(jì),允許內(nèi)存的最大利用,因此RabhitZO00具有突出的計(jì)算速度和優(yōu)秀的浮點(diǎn)運(yùn)算能力。為了方便RabbitZ000的使用者,簡化了微處理器硬件和軟件的開發(fā)。不需要在線仿真程序,軟件開發(fā)是通過連接個(gè)人計(jì)算機(jī)串口和Rabbit目標(biāo)系統(tǒng)的簡單接口電纜完成的,減小了軟件設(shè)計(jì)的難度l0o3.1.2 Rabb1t2000微處理器主要性能Rabbit20OO微處理器主要性能如下11:1.100引腳pQFp封裝。工
6、作電壓X圍2.7V-5v。時(shí)鐘頻率可達(dá)30MHz;2.工用級適用的電壓波動(dòng)為10%,溫度X圍為一40c至I+85C。商用級適用的電壓波動(dòng)為5%,溫度X圍為0C至I70C;3.為C程序留有IM字節(jié)的空間,最多可寫5萬多行程序代碼;4.具有四個(gè)級別的中斷優(yōu)先級,使得在實(shí)際工作中對關(guān)鍵應(yīng)用能夠做到快速響應(yīng)。一個(gè)完整的中斷程序可在小于4ps的時(shí)間內(nèi)執(zhí)行完成訪問UO設(shè)備可通過使用帶有FO前綴的存儲(chǔ)器存取指令來完成。因而,與專用刀0指令集的處理器相比,訪問刀O設(shè)備更加快捷、簡便©系統(tǒng)硬件設(shè)計(jì)簡單??偣部捎?個(gè)靜態(tài)存儲(chǔ)器芯片(比如RAM和FLAsHEPROM直接與微處理器連接而不需要額外的譯碼邏輯
7、。通過使用并行FO口線作為高位地址線,還可處理更多的存儲(chǔ)器。每一次存儲(chǔ)器訪問需要兩個(gè)時(shí)鐘周期。在24MHz,RabbitZ000微處理器無等待狀態(tài)下,存儲(chǔ)器存取時(shí)間為7Ons。多數(shù)FO設(shè)備也可實(shí)現(xiàn)無譯碼邏輯的直接連接;7.存儲(chǔ)器讀取周期為兩個(gè)時(shí)鐘周期長度。清晰的存儲(chǔ)器和FO讀寫邏輯能夠完全避免相互沖突的可能。外圍FO設(shè)備通常使用可編程接口作為FO芯片、FO讀選通信號或FO寫選通信號等來實(shí)現(xiàn)無譯碼邏輯接口。內(nèi)置時(shí)鐘倍頻分頻器允許使用降頻方式工作以減少高頻輻射;8.通過一個(gè)串口或一個(gè)并口對從端口進(jìn)行訪問,RabbitZ000可以被冷啟動(dòng)。這意味著閃存里可以沒有任何內(nèi)容,也可以在沒有任何現(xiàn)存的程序和
8、BIOS的情況下隨時(shí)重寫程序;9.共有40條并行UO口線。其中一些FO口線是與定時(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é)來標(biāo)記一個(gè)消息幀的開始。標(biāo)志字節(jié)有9比特而不是8比特:額外的一位比特在前8位比特之后,用以標(biāo)記一個(gè)消息幀的開始。通過串行口A可以對Rabbit2000進(jìn)行冷啟動(dòng),32
9、.768KHz晶振在冷啟動(dòng)時(shí)為串口A提供時(shí)鐘頻率;11.從端口方式允許RabbitZ000作為智能外設(shè)從屬于一個(gè)主處理器。8位從端口有6個(gè)8位寄存器,分兩對進(jìn)行雙向通信,獨(dú)立的選通脈沖和中斷信號用來控制從端口上下行通信。如果時(shí)鐘信號和復(fù)位信號都與主處理器共用,那么只需要一個(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è)外部晶體,也可以使用陶制諧
10、振器。典型的晶體振蕩器頻率X圍在I.SMHz到29.SMHZ之間。系統(tǒng)時(shí)鐘允許倍頻或8分頻,來動(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)格的代碼庫和強(qiáng)大的處理能力。例如,25MHz的時(shí)鐘通常需要14"s進(jìn)行浮點(diǎn)加法運(yùn)算,13Ps進(jìn)行乘法運(yùn)算,40協(xié)s進(jìn)行開方運(yùn)算;15.有一
11、個(gè)內(nèi)置的看門狗定時(shí)器。認(rèn)厄tchDog是一個(gè)帶有清除端及溢出信號輸出的計(jì)數(shù)器,用于在系統(tǒng)或程序超時(shí)或出錯(cuò)時(shí)自動(dòng)重啟系統(tǒng),使系統(tǒng)復(fù)位;16.擁有標(biāo)準(zhǔn)的編程端口,因而避免了使用CPU仿真器的必要。通過連接目標(biāo)系統(tǒng)和PC機(jī)的簡單的接口電纜可以用來下載和調(diào)試軟件。而占用編程口所增加的開銷極小。3.1.3 Rabb1t2000主要優(yōu)點(diǎn)Rabbit2000主要優(yōu)點(diǎn)如下12:l)無縫的體系結(jié)構(gòu)使設(shè)計(jì)硬件系統(tǒng)變得容易;2)有許多串口,而且它們能快速地通信;3)精確脈沖和時(shí)間沿的產(chǎn)生是一個(gè)標(biāo)準(zhǔn)的特征;4)中斷具有多種優(yōu)先級;5)處理器的速度和消耗能量受程序控制;6)超低能量模式下,雖然只有犯KHz,但處理器能繼
12、續(xù)運(yùn)行,進(jìn)行計(jì)算而且執(zhí)行合乎邏輯的測試;7)Rabbit200O的從端口可使其作為一個(gè)智能的外圍設(shè)備或一個(gè)從處理器。舉例來說,協(xié)議棧能夠直接下載到一個(gè)Rabbit200O從處理器,主機(jī)可以是任何的處理器;8)RabbitZ000可被冷啟動(dòng)能編寫復(fù)雜的軟件,C源碼可達(dá)1000或50000行,有編寫源碼的工具;10)一個(gè)簡單的ro針可編程接口代替了在線仿真程序和PROM;11泡含一個(gè)可更換電池的時(shí)間舊期時(shí)鐘;12)標(biāo)準(zhǔn)的Rabbit2000電路符合工業(yè)上的溫度和電壓規(guī)格。3.2.5 編程接口電路提供DynamicC環(huán)境下程序的下載,調(diào)試及仿真接口。參考設(shè)計(jì)電路如圖37所示13。3.3.1 GPRS
13、模塊介紹SIMloo是S加推出的GS樹GPRS雙頻模塊,主要為語音傳輸、短消息和數(shù)據(jù)業(yè)務(wù)提供無線接口。S加100集成了完整的射頻電路和GSM的基帶處理器,適合于開發(fā)一些GSM/GPRS的無線應(yīng)用產(chǎn)品,如移動(dòng)、PDA、PCMCIA無線MODEM卡、USB無線MODEM無線POS機(jī)、無線抄表、無線數(shù)據(jù)傳輸業(yè)務(wù),無線公用、無線商務(wù)、監(jiān)控、調(diào)度、車載、遙控、遠(yuǎn)程測量、定位和導(dǎo)航等系統(tǒng)和產(chǎn)品,應(yīng)用X圍十分廣泛。SIM100模塊為用戶提供了功能完備的系統(tǒng)接口,用戶只需投入少量的研發(fā)費(fèi)用,在較短的研發(fā)周期內(nèi),就可集成自己的應(yīng)用系統(tǒng)。GS樹GPRS模塊SIM10o技術(shù)指標(biāo)主要技術(shù)指標(biāo)如下'4:雙頻GS
14、MgOO/1800符合GSMPhaseZ/2標(biāo)準(zhǔn)支持GSM07.07和07.05AT命令電源電壓3.3V4.6V»電流消耗:待機(jī)模式4mA,通話模式300mA(平均)1.7A(峰值)體積大小:53mmx33mm'3mm重量:129(包括屏蔽罩)工作溫度:一35C+75C»支持USSD透明或非透明方式數(shù)據(jù)傳輸速率可達(dá)960ObPsGPRS最高下載速度85.6kbps/最高上傳速度42.skbPs»編碼方式CSI/2/3/4PPP一協(xié)議GPRSQos3V/l.SVS加接口2Mierophone輸入2speaker輸出鍵盤接口LCD接口背光LED驅(qū)動(dòng)接口Buzz
15、er接口RTC備用電源/電池接口GPI。RS232串口支持遠(yuǎn)程AT命令控制串行波特率:300一115200bits/s»單天線接口3.3.2 與Rabbit接口電路SIM10O提供標(biāo)準(zhǔn)的RS2犯串行接口,用戶可以通過串行口使用AT命令完成對模塊的操作。RXD是數(shù)據(jù)接收端口,TXD為數(shù)據(jù)發(fā)送端口,RTS為請求發(fā)送端口,CTS為清除發(fā)送端口,分別與Rabbit2000的串口C中的pC3、pCZ、3.3.3SIM卡接口電路PCS、PC4端口相連。SIM100支持外部SIM卡,可以直接與3.OVSIM卡或者1.SVSIM卡連接。模塊自動(dòng)監(jiān)測和適應(yīng)SIM卡類型,為了防止靜電損壞,在靠近sIM卡
16、座各個(gè)引腳的位置放置瞬變電壓抑制二極管,本處使用ST公司的ESDA6VIWSTVS!。SIM卡接口電路如圖39所示'4。應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的TCP正實(shí)現(xiàn)都會(huì)提供下面這些通用的應(yīng)用程序:»Teinet遠(yuǎn)程登錄。FTP文件傳輸協(xié)議。SMTP簡單傳送協(xié)議。SNMP簡單網(wǎng)絡(luò)管理協(xié)議。在TCP臚協(xié)議族中,有很多種協(xié)議。如圖42所示。TCP和UDP是兩種最為著名的傳輸層協(xié)議,二者都使用IP作為網(wǎng)絡(luò)層協(xié)議。雖然TCP使用不可靠的正服務(wù),但它卻提供一種可靠的傳輸層服務(wù)。UDP為應(yīng)用程序發(fā)送和接收數(shù)據(jù)報(bào)。一個(gè)數(shù)據(jù)報(bào)是指從發(fā)送方傳輸?shù)浇邮辗降囊粋€(gè)信息單元(例如,發(fā)送方
17、指定的一定字節(jié)數(shù)的信息)。但是與TCP不同的是,UDP是不可靠的,它不能保證數(shù)據(jù)報(bào)能安全無誤地到達(dá)最終目的16。IP是網(wǎng)絡(luò)層上的主要協(xié)議,同時(shí)被TCP和UDP使用。TCP和UDP的每組數(shù)據(jù)都通過端系統(tǒng)和每個(gè)中間路由器中的正層在互聯(lián)網(wǎng)中進(jìn)行傳輸17。ICMP是伊協(xié)議的附屬協(xié)議。IP層用它來與其他主機(jī)或路由器交換錯(cuò)誤報(bào)文和其他重要信息。IGMP是hitemet組管理協(xié)議。它用來把一個(gè)UDP數(shù)據(jù)報(bào)播到多個(gè)主機(jī)。A即(地址解析協(xié)議)和RAR衛(wèi)(逆地址解析協(xié)議)是某些網(wǎng)絡(luò)接口(如以太網(wǎng)和令牌環(huán)網(wǎng))使用的特殊協(xié)議,用來轉(zhuǎn)換IP層和網(wǎng)絡(luò)接口層使用的地址。GPRS終端軟件設(shè)計(jì)5.10"amieC簡介
18、DynamicC是zwodd公司開發(fā),專門用于編寫嵌入式應(yīng)用軟件的一套完整的開發(fā)系統(tǒng),是專為ZWbrld控制器和基于Rabbit微處理器的控制器而設(shè)計(jì)的。DynamicC是交互式C語言開發(fā)系統(tǒng)。DynamicC提供匯編、編輯和調(diào)試。調(diào)試基于Rabbit2000的目標(biāo)系統(tǒng)通常的方法是通過10管腳的可編程連接器經(jīng)由標(biāo)準(zhǔn)的轉(zhuǎn)換電纜連接到PC機(jī)的串口來實(shí)現(xiàn)的。DynamicC的庫包含非常完美的軟件來控制Rabbit200Oo包括驅(qū)動(dòng)程序、實(shí)用程序、數(shù)學(xué)程序和為DynamicC調(diào)試的基本FO系統(tǒng)24。amicC的編程環(huán)境見圖51。圖51DynamicC編程環(huán)境DynamicC與普通運(yùn)行于PC機(jī)或UNix
19、環(huán)境下的標(biāo)準(zhǔn)C有所不同。其改進(jìn)是為了幫助用戶編寫更為可靠的嵌入式控制軟件。如果不對標(biāo)準(zhǔn)C做任何改動(dòng),是不能夠?qū)⑵鋺?yīng)用于嵌入式環(huán)境中的。標(biāo)準(zhǔn)C的許多規(guī)則不適于嵌入式系統(tǒng)的開發(fā)。例如,標(biāo)準(zhǔn)C只能在已有當(dāng)前操作系統(tǒng),并且程序開始時(shí)執(zhí)行記錄應(yīng)為空的情況下才能夠運(yùn)行,而嵌入式系統(tǒng)的存儲(chǔ)器可能是電池供電型,并且在功率周期內(nèi)保持?jǐn)?shù)據(jù)不變。Z-WOrld己經(jīng)在一些領(lǐng)域中實(shí)現(xiàn)了對C語言展。DynamicC在許多功能上都比標(biāo)準(zhǔn)C有所提高,如下所示25:1.函數(shù)串,這是一個(gè)動(dòng)態(tài)C特有的概念,它允許在一個(gè)或多個(gè)函數(shù)中包含特殊的代碼塊。當(dāng)程序執(zhí)行到指定的函數(shù)串時(shí),將執(zhí)行該串中所有的代碼塊。公有函數(shù),允許在一個(gè)程序中模擬
20、協(xié)作事件;2.部分聲明支持單個(gè)程序中的搶先事件3.DynamicC中的中斷關(guān)鍵字允許程序員使用標(biāo)準(zhǔn)C來編寫中斷服務(wù)程序;4.DynamicC支持嵌入?yún)R編指令及獨(dú)立匯編指令;5.DynamicC允許最大限度的使用擴(kuò)展內(nèi)存。它支持微處理器內(nèi)的IM地址空間©默認(rèn)值存儲(chǔ)類是靜態(tài)的,而非動(dòng)態(tài)。這就避免了嵌入式系統(tǒng)中許多由于使用動(dòng)態(tài)變量而引發(fā)的錯(cuò)誤;7.DynalnicC摒棄了標(biāo)準(zhǔn)C所包括的大量頭文件,因?yàn)閯?dòng)態(tài)C有一個(gè)系統(tǒng)庫,并能在用戶程序編譯之前,自動(dòng)為編譯器提供函數(shù)原型及相似的頭文件信息。這些可以通過指令#use來實(shí)現(xiàn);8.用戶在聲明函數(shù)指針時(shí)不能使用變量,只有當(dāng)使用指針進(jìn)行間接調(diào)用時(shí)才可以
21、使用變量,但在調(diào)用過程中,編譯器不會(huì)檢查變量列表以確保其準(zhǔn)確性;9.DynamicC不支持位域和枚舉類型,也不支持對程序中不同部分的單獨(dú)編譯,但能夠容易的引用關(guān)鍵字extem和resister。5.2AT指令5.2.IAT指令概念A(yù)T指令集是從TE(TerminalEquipment)或DTE(DataTerminalEquipment)向TA(TerminalAdapter)或DCE(DataCircuitTerminatingEquipmen饃送的。通過TA、TE發(fā)送AT指令來控制MS(MobileStation)的功能,與GSM網(wǎng)絡(luò)業(yè)務(wù)進(jìn)行交互26。用戶可以通過AT指令進(jìn)行呼叫、短信、本
22、、數(shù)據(jù)業(yè)務(wù)、補(bǔ)充業(yè)務(wù)、傳真等方面的控制。SIM10O模塊的AT指令主要包括一般命令、呼叫控制命令、網(wǎng)絡(luò)服務(wù)相關(guān)令、本命令、短消息命令、GPRS命令等。對所有的無線模塊來說AT令大部分都是一樣。5.2.2AT指令格式AT指令是用來建立通信鏈路的,AT指令集的格式都是以“AT'或“at”開頭,“AT'或者"at”前綴必須出現(xiàn)在每一個(gè)指令行的開頭。可以設(shè)置參數(shù)值<n>,用來對指令進(jìn)行參數(shù)設(shè)置;參數(shù)值<n刁表示可選。當(dāng)用AT指令設(shè)置了一個(gè)參數(shù),那么這個(gè)值在被改變之前一直有效。1 .基本語法命令命令格式:AT<mand><n><n
23、>加上方括號表示可選;如需設(shè)置參數(shù)<n>,缺省值為O。2 .擴(kuò)展語法命令命令格式:AT+<name><vahie><vafue>可以包含一個(gè)或者多個(gè)數(shù)字或者字符串類型的子參數(shù),子參數(shù)之間用逗號隔開,字符串類型的參數(shù)應(yīng)用雙引號加以標(biāo)記。如Af+CSCS="GSM,;AI-+MI=2,l,0,0,lGSMAT指令有測試命令(=?)和讀命令(?),AT+<name>=?ffl試該命令的子參數(shù)的類型信息;AT+<name>?亥命令用來顯示子參數(shù)的當(dāng)前值。5.2.3AT指令介紹1.AT+CIPSTART!立TCP連接
24、或者注冊UDP端口號對于TCP連接:Al,+C護(hù)51'ARl,="TCP,“護(hù)ADDRESS/DOMAINNAME,“POR,。對于UDP連接:AT+CIPS飛AR'I二"UDP,“IPADDRESS/DOMAINNAME,“PORI,。SERVER可以是護(hù)地址或者已在州TERNET上注冊過的域名,命令正確返回OK,錯(cuò)誤返回ERROR連接成功返回CONNECCTOK失敗則返回STAI,E狀態(tài)碼,后再返回CONNECTFAIL2.AT+CIPSEN收送數(shù)據(jù)AT+C正SEND此命令可用來發(fā)送可變長度的數(shù)據(jù),返回“>”后寫入需要發(fā)送的數(shù)據(jù),按CTRL+Z開始
25、發(fā)送。AT+CIPSEND=<datalength>t匕命令可用來發(fā)送可變長度的數(shù)據(jù)。<datalength出需要一次發(fā)送的數(shù)據(jù)。每次傳送的數(shù)據(jù)字節(jié)數(shù)應(yīng)小于火等于1024byteso連接未建立或者斷開返回ERROR如果數(shù)據(jù)連接成功,返回SENDOK加果數(shù)據(jù)發(fā)送失敗,返回SENDFAIL:<error“o>o3 .AIT+CIPCLOSEAT+CIPCLOSE閉TCP或UDP連接關(guān)閉成功返回CLOSEOK關(guān)閉失敗返回ERROR4 .AT+CIPSHUT關(guān)閉移動(dòng)場景關(guān)閉成功返回SHUTOK關(guān)閉失敗返回ERROR5 .AT+CLPORT設(shè)置本地端口AT+CLPORT=(
26、"TCP”,“UDP'),“PORI,";UDP和TCP任選其一,命令成功返回OK,失敗返回ERROR6 .AT+CSTT啟動(dòng)任務(wù)并且設(shè)置APN、USERIDPASSWORDAT+CLPORT=<"APN">,<"USERm?<"PASSWORD"王建立連接之前,或者移動(dòng)場景關(guān)閉后要建立連接,有一個(gè)初始化的過程,這個(gè)過程分為啟動(dòng)任務(wù)、激活移動(dòng)場景、獲取本地護(hù)地址三個(gè)步驟。這三個(gè)步驟可以由AT+CIPSTART-次完成,也可以通過AT+CSTTAT+CRAT十CIFSR分步完成。在這些步驟執(zhí)行完
27、成后,AT+CIPSTARTR進(jìn)行連接操作。AT+CSTIT只有在IPINrrIAL狀態(tài)下才啟動(dòng)任務(wù),執(zhí)行后狀態(tài)變?yōu)镮PSTART。命令成功返回OK,失敗返回ERROR7 .AT十CR激活移動(dòng)場景AT+CllCR只有在護(hù)START下才激活移動(dòng)場景,執(zhí)行后狀態(tài)變?yōu)镮PCONFIG如果激活操作被模塊接受,狀態(tài)變?yōu)镮P則D;在模塊接受激活場景操作后,如果移動(dòng)場景激活成功,狀態(tài)變?yōu)镮PGPRSACT命令成功返回OK,失敗返回ERROR8 .Af+CIFSR獲得本地IP地址只有在移動(dòng)場景己經(jīng)激活的狀態(tài)下才可以通過此命令查詢得到本度IP地址,查詢成功返回本地IP地址,失敗返回ERROR9 .AT+CDNS
28、CFG配置DNSAT+CDNSCFG=<pri_dns”>,<"sec_dns"><"sec_dns”刁為備用Ip地址。10 .Af+CDNSGIPM名解析AT+CDNSGIP=<'domain_name">此命令用來解析域名的IP。如果解析成功,返回該域名的IP地址,如果解析失敗,返回ERROR:<er%11-AT+CIPSTAIUS查詢狀態(tài)返回的狀態(tài)表如下所示表51查詢狀態(tài)表汞S設(shè)土狀森表QFIN1TINALLIFSTART看任務(wù)2IPCONFIG配1場3ll,INH邕曼班景配置4爐GFH與*C
29、T喙景士卜薪#3tPSTATIJS出得某地IF地址6TCPAJDPCONNECTtiG?IPCIjCKE造樓己靛附SCOhrNUCTOK12 .AT+CDNSORIP設(shè)置連接SERVER端為IP地址還是域名AT+CDNSORIP=<mode>med物O時(shí),設(shè)置連接的SEVER端為IP地址;mode為1時(shí)設(shè)置連接的SEVER端為域名。命令正確返回OK。錯(cuò)誤返回ERROR13 .AT+CIPHEA吸置接收數(shù)據(jù)的IP頭AT+CIPHEAD=<mode*匕命令用來設(shè)置是否在接收數(shù)據(jù)時(shí)增加IP頭提示,mede為0時(shí)未設(shè)置IP頭;mode為l時(shí)設(shè)置IP頭。IP頭格式為:“+IpD(dat
30、alength):"。14 .AT十CIPATS設(shè)置自動(dòng)發(fā)送時(shí)間AT+CIPATS=<mode><time>mode為0時(shí)未設(shè)置自動(dòng)發(fā)送數(shù)據(jù);mode為1時(shí)設(shè)置自動(dòng)發(fā)送數(shù)據(jù),此時(shí)若要設(shè)置自動(dòng)發(fā)送時(shí)間,要以秒為單位。設(shè)置自動(dòng)發(fā)送時(shí)間后,如果在設(shè)定的時(shí)間內(nèi)未發(fā)送數(shù)據(jù),則模塊自動(dòng)發(fā)送,可以繼續(xù)對模塊AT命令操作。15 .AT十CIPSPRT設(shè)置在CIPSEND后是否跟有發(fā)送提示符>AT十CIPSPRT=<send_prompt>,<send_prompt>jo時(shí)CIPSEND后無提示,直接輸入要發(fā)送的數(shù)據(jù);為1時(shí),CIPSEND后有“&
31、gt;”提示。16 .AT+CIPSERVERK置為服務(wù)器17 .AT+CIPCSG較置為CSD或GPRS連接AT+CIPCSGP=<mode><apn>,<userID>,<pwd>,<dialnum>,<userID>,<pwd,rate>,mode為0時(shí)為CSD連接;為l時(shí)GPRS連接。CSD連接下要設(shè)置的參數(shù):<dialnum>撥打默認(rèn)為17201<userm>用戶名默認(rèn)為172<pwd>密碼默認(rèn)為172<rate>連接速率02400bps14800bps
32、29600bPs314400bPs默認(rèn)為9600bpsGPRS連接下要設(shè)置的參數(shù):<apn>訪問接入點(diǎn)默認(rèn)為CMNET<userID>用戶名默認(rèn)為空<pwd湍碼默認(rèn)為空18 .AT+CIPCCON置當(dāng)前連接AT+CIPCCONX<connRef>,若己與遠(yuǎn)端服務(wù)器建立連接,<connRef>為l返回OK,否則返回ERROR若已有遠(yuǎn)端客戶與本地服務(wù)器建立連接,<connRef>設(shè)為2返回OK,否則返回ERROR19 .AT+CIPFLP設(shè)置是否本地端口號AT+CIPATS=<mode>mode為O,不固定本地端口號,每
33、次建立連接時(shí)使用不同的端口號;mode為1時(shí),固定本地端口號,每次連接時(shí)使用相同的端口號。默認(rèn)情況下不固定本地端口號,這樣在at+cipclose關(guān)閉連接之后,用當(dāng)前端口加1作為新建連接的端口號來建立連接,不需要等待注銷端口號的過程,連接建立的速度更快。20 .AT于CIPSR伊設(shè)置接收數(shù)據(jù)時(shí)是否顯示發(fā)送方的護(hù)地址和端口號AT+C丁SRIP=<mode>,mode為0,則不顯示;mode為1則顯示,格式為RECVFROM:IPADDR:PORT默認(rèn)情況下在接收數(shù)據(jù)時(shí)不顯示發(fā)送方的IP地址和端口號14。21 3GPRS終端軟件實(shí)現(xiàn)GPRS終端的軟件設(shè)計(jì)主要包括串口驅(qū)動(dòng)、模塊驅(qū)動(dòng)、PP
34、P協(xié)議、TCP/IP協(xié)議的實(shí)現(xiàn)。設(shè)計(jì)的主流程圖如圖52所示,程序開始后,首先對串口進(jìn)行初始化,然后對GPRS終端進(jìn)行參數(shù)設(shè)置,完成后,即開始進(jìn)行PPP撥號連接,連接成功后,進(jìn)入GPRS網(wǎng)絡(luò),獲取護(hù)地址后,終端主動(dòng)向數(shù)據(jù)中心發(fā)出連接請求,收到應(yīng)答后,等待接收命令、解析并發(fā)送數(shù)據(jù)。1iFm二看后仕卜圖5-2終端主程序流程圖5.3.1 串口驅(qū)動(dòng)程序RabbitZ000微處理器提供4個(gè)串口。串口慶、8、。和口。2Wbrld支持兩種類型的串口通信方式,分別為基于數(shù)據(jù)流的驅(qū)動(dòng)和基于分組的驅(qū)動(dòng)?;诜纸M的驅(qū)動(dòng)是由DynamicC的PACKET.uB庫文件來實(shí)現(xiàn)的。不像RS232驅(qū)動(dòng)器是點(diǎn)對點(diǎn)的,信息包的驅(qū)動(dòng)
35、的設(shè)計(jì)是點(diǎn)對多點(diǎn)的通信方式,帶一個(gè)RS485接口o信息包驅(qū)動(dòng)器在半雙工的模式下處理發(fā)送和接收數(shù)據(jù)報(bào)。基于數(shù)據(jù)流的驅(qū)動(dòng)是由DynamicCRs232.UB庫文件實(shí)現(xiàn)的。這個(gè)庫包含電路緩沖區(qū),一個(gè)中斷服務(wù)程序和用戶接口的函數(shù)。這里采用基于數(shù)據(jù)流的驅(qū)動(dòng)27o對于這四個(gè)串口來說,有兩個(gè)電路緩沖區(qū),一個(gè)是用于讀數(shù)據(jù)的(接收緩沖區(qū)),一個(gè)是用于寫數(shù)據(jù)的(發(fā)送緩沖區(qū))。這些緩沖區(qū)只是暫時(shí)存放要發(fā)送和接收的數(shù)據(jù),但不對這些數(shù)據(jù)進(jìn)行處理。默認(rèn)的緩沖區(qū)大小是31字節(jié)。通過兩個(gè)宏XINBUFSIZ序口XOUTBUFSIZET以對緩沖區(qū)的大小進(jìn)行修改,這里X指的是串口A、B、C和D。這里X代表A,B,C或D。編寫如下
36、函數(shù):»serxgetc():讀取接收緩沖區(qū)的下一個(gè)字符。serXread()讀取接收緩沖區(qū)的指定數(shù)量的字節(jié)。serxpeek()查看接收緩沖區(qū)的下一個(gè)字符。serxPutc():在發(fā)送緩沖區(qū)里寫入一個(gè)字符。serXputs():在發(fā)送緩沖區(qū)里寫入一個(gè)空結(jié)束符的字符串。»serXwrite():在發(fā)送緩沖區(qū)里寫入指定數(shù)量的字符。除了serXpeek()函數(shù)之外,其他的函數(shù)都是先把使用的緩沖區(qū)鎖住,在返回之前再進(jìn)行各種開鎖24。例如serBputc():在向發(fā)送緩沖區(qū)里寫入一個(gè)字符。流程圖如圖5一3所示。i以serBPute(intc)Staticintn;if(cbuf-w
37、rlock(spb_ocbuf)n=cbuf_putch(spb_ocbuf,c);if(n)sPb_starttx();Cbuf_wrunlock(spb_ocbuf);elsen=0;Returnn;圖5-3寫入一個(gè)字符流程圖serBgetc():讀取接收緩沖區(qū)里的下一個(gè)字符。流程圖如圖54圖5-4讀取字符流程圖nodebugintserBgete()statieintn;if(cbuf_rdlock(spb_icbuf)n=cbuf-geteh(sPb_icbuf);if(brtscts&&cbuf_used(spb_icbuf<=serBrtsLo)(*b_rts
38、on)();/setPortBRTSlinehighcebuf-rdunloek(spb_icbuf);Elsen=-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ī)暫停??梢酝ㄟ^軟件方式或硬件方式實(shí)現(xiàn)流量控制。RS232驅(qū)動(dòng)器使用的是硬件流控。serXfloweontrolon()和serXfloweontroloff()函數(shù)用來使能或禁止硬件流控.Rabbit被設(shè)置為一個(gè)DTE儆據(jù)終端設(shè)備),意味著當(dāng)Rabbit為更多的
39、數(shù)據(jù)做好準(zhǔn)備時(shí),要聲明流控線RTS(請求發(fā)送,而CTS精除發(fā)送)是一個(gè)輸入信號來監(jiān)視系統(tǒng)的準(zhǔn)備狀態(tài),系統(tǒng)要與Rabbit相連。目前使用宏定義來配置RTS和CTS,定義使用哪個(gè)端口和這個(gè)端口的哪個(gè)特定位。下面是為串口B配置RTS/CTS的例子。#defineSERBRTSPORTPBD戲用端口B的數(shù)據(jù)寄存器#defineSERBRTSSHADOWPBDRShadow/定義端口B的屏蔽寄存器#defineSERB_RTS_BIT6偏出#defineSERB_RTS_PORTPBDR/輸入#defineSERB_RTS_BIT5如下為使能串口B的硬件流控。本函數(shù)使能控制流控的兩根數(shù)據(jù)線CTS和RTS
40、o當(dāng)另外的系統(tǒng)準(zhǔn)備接收數(shù)據(jù)時(shí),CTS的輸入將被拉低。RTS作為輸出信號,系統(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%,貝U設(shè)RTS為高if(serBrdUsed()<serBrtsHi)(*b_rtson)():5.3.2 PPP連接的實(shí)現(xiàn)對于ppp連接
41、,DynamicC的庫中己經(jīng)給出了GpRS初始化和ppp連接的模塊的初始化函數(shù)ifconfig(),所以只需在程序中進(jìn)行一些宏定義,并且在main函數(shù)中調(diào)用ifconfig()函數(shù)。#defineUSE_PPP_SERIAL0x04/通過端口C進(jìn)彳fPPP連接#defineMODEM_DEBUGI#definePSS_MODEM_SENDEXPECT_SIZE200#defineDLALUP_SENDEXPECT"AT+CGDCOINT="IP","CMNET"0,0OKATD*99*l#CONNECT”/*設(shè)置AT連接指令。ATD*99*l#
42、是GPRS業(yè)務(wù)使用的撥號*/#definePAPNAME""用戶名GPRS默認(rèn)為空#definePAPPASSWORD""密碼主程序中調(diào)用的ifconfig函數(shù)如下:ifconfig(IF_PPPZ,IFS_PPP_INITIFS_PPP_SPEED115200L,IFS_PPP_RTSPINPCDRPCDRShadow4,IFS_PPP_CTSPINPCDR5,IFS_PPP_FLOWCONTRQLl,IFS_PP_SENDEXPECCTDIALUP_SENDEXPECTIFS_PPP_HANGUP"ATH;IFS_PP_MODEMESCAP
43、El,IFS_PPP_ACCEPTIPl,IFS_PPP_ACCEPTDNSl,IFS_PPP_REMOTEAUTHPAPNAMEPAPPASSWORDIFS_UP,IFS_END):Ifconfig的流程圖如圖55所示,首先是對模塊的初始化,初始化成功后進(jìn)行撥號,撥號成功,登入GPRS網(wǎng)后,進(jìn)行PPP連接。圖5-5Ifconfig模塊初始化函數(shù)流程圖5.3.3 UDP數(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初始化,打開UDP端口,采用C
44、ostate互聯(lián)語句進(jìn)行數(shù)據(jù)的發(fā)送與接收。發(fā)送數(shù)據(jù)后,判斷操作是否成功,若不成功,則關(guān)intsend_packet(void)staticlongsequence;autocharbuf128;autointlength,retval;#GLOBAL_INITsequence=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)閉連接,重新打開if(retva
45、l<0)Printf("Errorsendingdatagram!Closingandreopeningsocketn");sock_close(&my_sock);if(!udp_oPen(&my_sock,LOCAL_PORT,resolve(REMOTE_IP),REMOTE_PORTNULL)Printf("udp_openfailed!n");exit(0);Tcp_tieck(NULL);returnl;Costate互聯(lián)語句實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收如下:for(;)receive_packet();Costatewaitf
46、or(DelaySec(l);waitfor(send_packet();5.3.4 TCP數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)TCP數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)與UDP基本一致,流程圖與UDP流程圖一樣,只是在函數(shù)的調(diào)用上有所不同。如下為TCP發(fā)送數(shù)據(jù)的函數(shù)。Intreceive_packet()intbytes_read;Staticcharreceived_buf128;#GLOBAL_INITmemset(received_buf,0x00,sizeof(received_buf);/清除緩沖區(qū)接收數(shù)據(jù)Bytes_read=sock_fastread(&my_socket,received_buf,sizeof(
47、received-buf)-l);if(bytes_read>0)received_bufbytes_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開發(fā)板平臺上完成的。在調(diào)試中,采用了RCM2300開發(fā)板(如圖57所示),以及SIMIOOGPRS模塊,兩者之間采用RS232串口進(jìn)行連接,RCM2300通過J認(rèn)。連接到PC,軟件平臺為。"amieC。接收端用TCP/UDP接收軟件??刂颇K的核心是RCM2300如圖58所示,模塊的硬件電路由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.I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年消防設(shè)施檢測與維保服務(wù)合同5篇
- 2025年度安置房質(zhì)量保證合同書3篇
- 2025年水泥制品環(huán)保技術(shù)轉(zhuǎn)移合同3篇
- 2025年度高空墜落防護(hù)HSE施工安全協(xié)議3篇
- 二零二五年房產(chǎn)銷售代理與廣告宣傳協(xié)議3篇
- 二零二五年鮮活水產(chǎn)品運(yùn)輸與質(zhì)量監(jiān)管協(xié)議3篇
- 2025年度免租金停車場租賃合同模板
- 2025版棋牌室三方合作協(xié)議-創(chuàng)新管理與行業(yè)規(guī)范4篇
- 2025年污水處理站污水處理設(shè)施設(shè)備租賃與維修合同3篇
- 2025年度留學(xué)簽證擔(dān)保與資金證明服務(wù)合同3篇
- 公司組織架構(gòu)圖(可編輯模版)
- 1汽輪機(jī)跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 禮品(禮金)上交登記臺賬
- 普通高中英語課程標(biāo)準(zhǔn)詞匯表
- 北師大版七年級數(shù)學(xué)上冊教案(全冊完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2023高中物理步步高大一輪 第五章 第1講 萬有引力定律及應(yīng)用
- 青少年軟件編程(Scratch)練習(xí)題及答案
- 浙江省公務(wù)員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內(nèi)科學(xué)
- 全統(tǒng)定額工程量計(jì)算規(guī)則1994
評論
0/150
提交評論