新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 微控制器的GPRS無線上網(wǎng)方案

微控制器的GPRS無線上網(wǎng)方案

作者: 時間:2009-07-17 來源:網(wǎng)絡 收藏

4 PPP協(xié)議的實現(xiàn)

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

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

圖3 PPP報文解析


5 登錄GGSN的過程

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

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


圖4 協(xié)商過程流程


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

6 小結(jié)

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


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉