<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 微控制器的GPRS無(wú)線(xiàn)上網(wǎng)

微控制器的GPRS無(wú)線(xiàn)上網(wǎng)

作者: 時(shí)間:2004-12-07 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹一種在微上實(shí)現PPP協(xié)議,并使其控制模塊通過(guò)連入Internet的方法;介紹技術(shù)和GPRS模塊的使用方法;重點(diǎn)介紹微軟件的層次結構和PPP協(xié)議的實(shí)現方法。

關(guān)鍵詞: 點(diǎn)對點(diǎn)協(xié)議 GPRS 互聯(lián)網(wǎng)

引 言

  微控制器以其體積小、功耗低、使用方便等特點(diǎn),廣泛應用于各種工業(yè)、民用的嵌入式系統中;而隨著(zhù)互聯(lián)網(wǎng)(Internet)的興起與普及,使微控制器通過(guò)互聯(lián)網(wǎng)傳送數據就變得非常有意義。目前使微控制器的解決方案一般有兩種:一種是采用微控制器驅動(dòng)網(wǎng)卡,通過(guò)以太網(wǎng)連接Internet;另一種是使微控制器直接驅動(dòng)調制解調器(MODEM)通過(guò)電話(huà)線(xiàn)向ISP撥號。這兩種方案的缺點(diǎn)在于都要使用有線(xiàn)的網(wǎng)絡(luò ),無(wú)法應用于在邊遠地區或可移動(dòng)系統中。

針對這一問(wèn)題,本文提出一種基于GPRS的微控制器的解決方案,即在微控制器中實(shí)現PPP協(xié)議,并通過(guò)驅動(dòng)GPRS模塊經(jīng)過(guò)GPRS網(wǎng)連接到Internet實(shí)現上網(wǎng)。這種方案的優(yōu)點(diǎn)在于:① 覆蓋面廣,適用于廣大偏遠地區;② 上網(wǎng),適用于可移動(dòng)目標;③使用廉價(jià)的微控制器實(shí)現簡(jiǎn)單、成本低;④ 安裝簡(jiǎn)便,維護方便。

1 GPRS技術(shù)及其特點(diǎn)

  GPRS(General Packet Radio Service)是通用分組業(yè)務(wù)的簡(jiǎn)稱(chēng),是在GSM基礎上發(fā)展起來(lái)的一種分組交換的數據承載和傳輸方式。與原有的GSM比較,GPRS在數據業(yè)務(wù)的承載和支持上具有非常明顯的優(yōu)勢:通過(guò)多個(gè)GSM時(shí)隙的復用,支持的數據傳輸速率更高,理論峰值達115kb/s;不同的網(wǎng)絡(luò )用戶(hù)共享同一組GPRS信道,但只有當某一個(gè)用戶(hù)需要發(fā)送或接收數據時(shí)才會(huì )占用信道資源。這樣,通過(guò)多用戶(hù)的業(yè)務(wù)復用,更有效地利用無(wú)線(xiàn)網(wǎng)絡(luò )信道資源,特別適合突發(fā)性、頻繁的小流量數據傳輸,很好地適應數據業(yè)務(wù)的突發(fā)性特點(diǎn);GPRS計費方式更加靈活,可以支持按數據流量來(lái)進(jìn)行計費;與無(wú)線(xiàn)應用協(xié)議(WAP)技術(shù)不同,GPRS能夠隨時(shí)為用戶(hù)提供透明的IP通道,可直接訪(fǎng)問(wèn)Internet中的所有站點(diǎn)和資源;采用信道復用技術(shù),每一個(gè)GPRS用戶(hù)都能夠實(shí)現永遠在線(xiàn);另外,GPRS還能支持在進(jìn)行數據傳輸的同時(shí)進(jìn)行語(yǔ)音通話(huà)等等,而且相對于短消息等其它無(wú)線(xiàn)數據通信業(yè)務(wù),GPRS的價(jià)格優(yōu)勢比較明顯。目前,我國移動(dòng)推出的GPRS上網(wǎng)業(yè)務(wù)最高每千字節也只有3分錢(qián),而且用戶(hù)可以根據自己的需要,以月租、包月等多種形式進(jìn)一步降低GPRS通信的費用。

  因此使用GPRS實(shí)現遠程數據的傳送是非常經(jīng)濟實(shí)用的,特別是對于不易架設有線(xiàn)網(wǎng)絡(luò )的邊遠地區和可移動(dòng)裝置。

2 硬件連接和GPRS模塊設置

  通過(guò)GPRS網(wǎng)進(jìn)行數據傳輸一般需要使用GPRS模塊。目前,GPRS模塊一般是指帶有GPRS功能的GSM模塊,可以利用GPRS網(wǎng)進(jìn)行數據通信。其中比較流行的有法國Wave公司的WISMO系列和西門(mén)子公司的S系列等等。WAVECOM的WISMO模塊接口簡(jiǎn)單、使用方便且功能非常強大,它與微控制器、SIM卡、電源之間的連接如圖1所示。

  其中GPRS模塊與微控制器間是通過(guò)串行口進(jìn)行通信的,通信速率最快可以達到115 200b/s。模塊與控制器間的通信協(xié)議是AT命令集,其中大部分命令是符合協(xié)議“AT command set for GSM Mobile Equipment (ME) (GSM 07.07 version 6.4.0 Release 1997)”的,但也有一些是Wavecom自己定義的AT命令。除了串口發(fā)送(TX)、串口接收(RX)之外,微控制器與GPRS模塊之間還有一些硬件握手信號,如DTR、CTS、DCD等。為了簡(jiǎn)化微控制器的控制,硬件設計時(shí)沒(méi)有使用全部的硬件握手信號,而只使用數據載波檢測(Data Carrier Detect, DCD)和終端準備(Data Terminal Ready, DTR)信號。DCD信號可以檢測GPRS模塊是處于數據傳送狀態(tài)還是處于A(yíng)T命令傳送狀態(tài)。DTR信號用來(lái)通知GPRS模塊傳送工作已經(jīng)結束。

  硬件連接完成后,在進(jìn)行GPRS上網(wǎng)操作之前,首先要對GPRS模塊進(jìn)行一定的設置。主要的設置工作有:① 設置通信波特率,可以使用AT+IPR=38400命令,把波特率設為38 400b/s或其它合適的波特率,默認的通信速度為9600b/s。② 設置接入網(wǎng)關(guān),通過(guò)AT+ CGD CONT=1, “IP”, “CMNET”命令設置GPRS接入網(wǎng)關(guān)為移動(dòng)夢(mèng)網(wǎng)。③設置移動(dòng)終端的類(lèi)別,通過(guò)AT+CGCLASS=“B”設置移動(dòng)終端的類(lèi)別為B類(lèi),即同時(shí)監控多種業(yè)務(wù);但只能運行一種業(yè)務(wù),即在同一時(shí)間只能使用GPRS上網(wǎng),或者使用GSM的語(yǔ)音通信。④ 測試GPRS服務(wù)是否開(kāi)通,使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,則GPRS連接成功;如果返回ERROR,則意味著(zhù)GPRS失敗。這時(shí)應檢查一下SIM卡的GPRS業(yè)務(wù)是否已經(jīng)開(kāi)通,GPRS模塊天線(xiàn)是否安裝正確等問(wèn)題。

圖2 軟件層次結構

  中國移動(dòng)在GPRS與Internet網(wǎng)中間建立了許多相當于ISP的網(wǎng)關(guān)支持節點(diǎn)(GGSN),以連接GPRS網(wǎng)與外部的Internet網(wǎng)。GPRS模塊可以通過(guò)撥“*99***1#”登錄到GGSN上動(dòng)態(tài)分配到Internet網(wǎng)的IP地址。其間GPRS模塊與網(wǎng)關(guān)的通信要符合點(diǎn)對點(diǎn)協(xié)議(Point to Point Protocol, PPP),其中身份驗證時(shí)用戶(hù)名、密碼都為空。使用PPP協(xié)議登錄上之后,就可以通過(guò)GGSN接上Internet了。

3 軟件整體結構

3.1 軟件層次結構

  程序中的所有代碼都是由C語(yǔ)言編寫(xiě)的,并采用分層的結構,從底到上分別為:串口驅動(dòng)層、GPRS模塊驅動(dòng)層、PPP協(xié)議層、IP協(xié)議層、UDP協(xié)議層與應用層。上層函數的實(shí)現需要應用到底層函數,而底層函數的任務(wù)就是為上層函數提供服務(wù),最終完成應用層任務(wù)――傳送數據。各層的主要函數如圖2所示。

3.2 驅動(dòng)程序編寫(xiě)

  首先是串行口驅動(dòng)層。它實(shí)現打開(kāi)串口(OpenComm)、關(guān)閉串口(CloseComm)、讀串口數據(ReadComm)、寫(xiě)串口數據(WriteComm)等函數。例如WriteComm函數向串口發(fā)送一個(gè)字節的數據,而transmit函數向串口發(fā)送一個(gè)字符串的數據:

void WriteComm(char c){

ES = 0;

SBUF = c;

while(TI==0);

TI=0;

ES = 1;

}

void transmit (char *data) {

Delay (250);

while (*data) {

WriteComm (*data++);

}

}

  然后,在這些串口函數的基礎上編寫(xiě)GPRS模塊的驅動(dòng)函數。微控制器通過(guò)串行口控制GPRS模塊,進(jìn)行撥號、設置等操作??刂频姆椒ㄊ遣捎肁T命令。在控制GPRS模塊撥打移動(dòng)夢(mèng)網(wǎng)GGSN的登錄號碼“*99***1#”之后,GPRS模塊就轉入在線(xiàn)模式(On-Line)。此時(shí)微控制器向串行口發(fā)送的所有數據都透明地傳送給了GGSN,同樣GGSN的回答也傳回單片機的串行口。當數據傳送完成后,微控制器需要通知GPRS模塊結束會(huì )話(huà),并從在線(xiàn)模式轉回普通的命令模式,這可以通過(guò)置高DTR線(xiàn)完成。同時(shí),如果線(xiàn)路由于異常斷開(kāi),CD線(xiàn)會(huì )回復到平常的低電平,所以處于在線(xiàn)模式下也要不斷檢測CD線(xiàn)是否處于高電平。根據這些操作,可以編寫(xiě)GPRS驅動(dòng)函數:初始化GPRS模塊函數(GPRSInit)、撥號函數(GPRSDial)、斷開(kāi)連接函數(GPRSHangup)、檢測是否處于在線(xiàn)狀態(tài)函數(GPRSOnline)。其中,GPRS的撥號和掛斷代碼如下:

BYTE GPRSDial (void) {

signed char delayCount = 80;

transmit ("ATV0"); // 要求返回數字表示的回答

if (!Waitfor ("0", 30)) { // 等待 OK 回答

return -1;

}

DTR_ON;

transmit ("ATD*99***1#"); // 撥GGSN的號碼

GPRSBuffFlush (); // 清空buffer

// 等待回答

while ((!GPRSBuffNotEmpty()) (--delayCount > 0)) {

Delay (250);

}

if (delayCount) {

return GPRSGetch (); // 返回回答的數字

}

return -1; // 沒(méi)有返回,錯誤

}

void GPRSHangup (void) {

DTR_ON; // 置高DTR

Delay (40); // 保持一定時(shí)間

DTR_OFF; // 完成連接的斷開(kāi)

}

  這些底層的驅動(dòng)函數將會(huì )使上層協(xié)議的編寫(xiě)很方便,更重要的是,它為我們提供了一個(gè)驅動(dòng)抽象層。當底層硬件做出改動(dòng)的時(shí)候,只需要對底層的驅動(dòng)函數進(jìn)行改動(dòng),而上層函數的代碼不變。

4 PPP協(xié)議的實(shí)現

  由于移動(dòng)夢(mèng)網(wǎng)的GGSN與GPRS模塊通信時(shí)遵循PPP協(xié)議,所以要在微控制器中也實(shí)現一部分PPP協(xié)議才能與之對話(huà)。GPRS模塊在撥號后首先要與GPRS網(wǎng)關(guān)進(jìn)行通信鏈路的協(xié)商,即協(xié)商點(diǎn)到點(diǎn)的各種鏈路參數配置。協(xié)商過(guò)程遵守LCP(Link Control Protocol)、PAP(Password Authentication Protocol)和IPCP(Internet Protocol Control Protocol)等協(xié)議。其中LCP協(xié)議用于建立、構造、測試鏈路連接;PAP協(xié)議用于處理密碼驗證部分;IPCP協(xié)議用于設置網(wǎng)絡(luò )協(xié)議環(huán)境,并分配IP地址。協(xié)商機制用有限狀態(tài)機的模型來(lái)實(shí)現。一旦協(xié)商完成,鏈路已經(jīng)創(chuàng )建,IP地址已經(jīng)分配就可以按照協(xié)商的標準進(jìn)行IP報文的傳輸了。根據應用的不同,IP報文中可以攜帶UDP報文,也可以是TCP或ICMP報文。本系統正是采用UDP報文傳送數據信息的。數據傳輸完成之后,微控制器會(huì )向GGSN發(fā)送LCP的斷開(kāi)連接報文,以終止網(wǎng)絡(luò )連接。

  PPP協(xié)議的幀結構如圖3(左)所示。微控制器的串口中斷接收程序首先以包起始和結束符來(lái)判斷是否有完整的PPP包,并對PPP包的內容進(jìn)行校驗,以確定數據包的完整性和正確性。然后,在主循環(huán)中進(jìn)入PPP報文解析模塊,解析過(guò)程如圖3(右)所示。

5 登錄GGSN的過(guò)程

  系統的一個(gè)難點(diǎn)是微控制器登陸GPRS網(wǎng)關(guān)(GGSN)并與網(wǎng)關(guān)通過(guò)LCP、PAP、IPCP協(xié)議進(jìn)行協(xié)商的過(guò)程。LCP、PAP與IPCP協(xié)議的幀結構大同小異,最常用的為請求(REQ)、同意(ACK)和拒絕(NAK)三種幀。微控制器與GGSN各為一方進(jìn)行協(xié)商,任何一方都可以發(fā)送REQ幀請求某方面的配制,另一方覺(jué)得配置不能接受會(huì )回應NAK幀,如果可以則回應ACK幀。為了節省資源,我們只處理這三種數據幀,其它鏈路問(wèn)題都由微控制器在程序控制下自己重新?lián)芴柦鉀Q。

  協(xié)商過(guò)程大致描述如下:在撥號成功連接后,GGSN首先會(huì )返回一個(gè)PAP REQ數據幀。我們發(fā)送一個(gè)空LCP REQ幀,以強迫進(jìn)行協(xié)議協(xié)商階段。隨后,GGSN發(fā)送LCP設置幀,我們拒絕所有的設置并請求驗證模式。GGSN選擇CHAP或PAP方式驗證,我們只接受PAP方式。然后,進(jìn)行PAP驗證用戶(hù)名和密碼過(guò)程,在GPRS中用戶(hù)名與密碼都為空,如果成功,GGSN會(huì )返回IPCP報文分配動(dòng)態(tài)IP地址。此時(shí),就完成了與GGSN的協(xié)商過(guò)程。協(xié)商過(guò)程的狀態(tài)轉換如圖4所示。

  協(xié)商完成后進(jìn)入IP數據報通信階段。此時(shí),微控制器向GGSN發(fā)送的所有包含IP報文的PPP報文都會(huì )被傳送給Internet網(wǎng)中相應的IP地址;而遠端所有向微控制器IP地址發(fā)送的報文也都會(huì )經(jīng)GPRS網(wǎng)傳送到微控制器上,從而完成微控制器與遠程主機通過(guò)互聯(lián)網(wǎng)的數據傳輸。

  注:PPP報文解析程序和協(xié)商過(guò)程程序見(jiàn)本刊網(wǎng)站www.dpj.com.cn。

6 小 結

  經(jīng)過(guò)優(yōu)化,本系統的軟件代碼可以精簡(jiǎn)到6K字節左右,共使用不到300字節的RAM。并且由于程序使用C語(yǔ)言編寫(xiě),稍加改動(dòng)就可以在各種系列的微控制器上實(shí)現。微控制器通過(guò)GPRS上網(wǎng)的技術(shù)可以廣泛應用于需要遠程傳送數據的系統中,特別適合于遠程抄表、遠程監控等領(lǐng)域。我們目前正把這項技術(shù)應用于車(chē)輛監控調度系統,在試驗階段取得了比較好的效果。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>