LPC1227的遠(yuǎn)距離ZigBee無(wú)線網(wǎng)關(guān)設(shè)計(jì)
2.3 EM310模塊電路
EM310是由華為公司設(shè)計(jì)的GSM模塊。它的輸入電壓設(shè)計(jì)在第1節(jié)中已有介紹。這里需要注意2點(diǎn):
①串口引腳的連接。EM310模塊采用串口與LPC1227進(jìn)行通信,EM310串口引腳的連接比較特殊。RXD對(duì)應(yīng)終端設(shè)備的RXD口,TXD對(duì)應(yīng)終端設(shè)備的TXD口。因此LPC1227與EM310相連時(shí)引腳分配如下:PIO0_1/RXD0對(duì)應(yīng)RXD,PIO0_2/TXD0對(duì)應(yīng)TXD。
②本次設(shè)計(jì)中雖然不需要使用EM310進(jìn)行語(yǔ)音通話,但建議EM310模塊的RING引腳與LPC1227的GPIO引腳相連。因?yàn)镋M310模塊在收到短信和語(yǔ)音呼叫時(shí)都會(huì)在RING引腳輸出低電平,LPC1227通過(guò)中斷可以及時(shí)計(jì)算出RING引腳低電平持續(xù)時(shí)間,從而盡快地對(duì)短信或來(lái)電進(jìn)行處理,比采用軟件查詢方式更具有實(shí)時(shí)性。
3 軟件設(shè)計(jì)
網(wǎng)關(guān)的軟件系統(tǒng)主要由ZigBee協(xié)調(diào)器程序和嵌入式處理器程序構(gòu)成。
3.1 ZigBee協(xié)調(diào)器程序
ZigBee標(biāo)準(zhǔn)定義ZigBee網(wǎng)絡(luò)中存在3種類(lèi)型的設(shè)備:協(xié)調(diào)器、路由器、終端設(shè)備。其中協(xié)調(diào)器負(fù)責(zé)建立ZigBee網(wǎng)絡(luò),因此網(wǎng)關(guān)中的ZigBee模塊需要在程序中配置為協(xié)調(diào)器類(lèi)型。
協(xié)調(diào)器程序采用最新的TI公司推出的ZigBee協(xié)議棧2007版,該協(xié)議??珊芎玫刂С志W(wǎng)絡(luò)的自組織和自愈合。相對(duì)于目前使用較多的ZigBe e協(xié)議棧2006版,07版協(xié)議棧在06版協(xié)議棧基礎(chǔ)上主要增加了支持多密鑰高安全性、大型網(wǎng)絡(luò)和分割傳輸?shù)忍匦浴?br /> 協(xié)調(diào)器程序在已有協(xié)議?;A(chǔ)上,主要還需增加如下部分:
①2007版ZigBee協(xié)議棧中包含了CC2591控制程序,為了使用CC2591,在協(xié)調(diào)器程序中需要開(kāi)啟“halboard_cfg.h”文件中的HAL_PA_LNA編譯選項(xiàng)。
②增加串口處理任務(wù),實(shí)現(xiàn)與網(wǎng)關(guān)處理器的串口通信。
③按照自定義的數(shù)據(jù)傳輸幀格式解析、處理接收到的數(shù)據(jù),按照自定義的數(shù)據(jù)傳輸幀格式構(gòu)造待發(fā)送的數(shù)據(jù)。
④定期向全網(wǎng)廣播包含RTC信息的數(shù)據(jù)包。定期廣播該數(shù)據(jù)包對(duì)于全網(wǎng)節(jié)點(diǎn)來(lái)說(shuō)有兩種作用。一是該數(shù)據(jù)包可實(shí)現(xiàn)全網(wǎng)節(jié)點(diǎn)RTC同步;二是網(wǎng)絡(luò)中的其他節(jié)點(diǎn)可通過(guò)定期檢查有無(wú)收到該數(shù)據(jù)包判斷協(xié)調(diào)器有無(wú)出現(xiàn)異常。此設(shè)計(jì)很適合包含路由器、需要RTC同步的大型網(wǎng)絡(luò)。
⑤增加CC2530芯片的看門(mén)狗初始化以及定期喂狗程序。
3.2 嵌入式處理器程序
為了實(shí)現(xiàn)網(wǎng)關(guān)的低成本、高實(shí)時(shí)性設(shè)計(jì),本次網(wǎng)關(guān)不采用任何嵌入式操作系統(tǒng)。整個(gè)軟件系統(tǒng)采用前后臺(tái)的編程思想,后臺(tái)ISR(中斷服務(wù)程序)和前臺(tái)主程序循環(huán)之間的數(shù)據(jù)交換可以通過(guò)事件標(biāo)志和數(shù)據(jù)緩存區(qū)來(lái)實(shí)現(xiàn)。
由于EM310模塊內(nèi)置了TCP/IP協(xié)議,因此網(wǎng)關(guān)的MCU向該模塊直接發(fā)送AT指令即可與目標(biāo)上位機(jī)建立TCP/IP連接,實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程無(wú)線傳輸;通過(guò)發(fā)送AT指令還可收發(fā)短信、掛斷語(yǔ)音通話。為了增強(qiáng)網(wǎng)關(guān)的靈活性以及降低運(yùn)行成本,網(wǎng)關(guān)采用GPRS方式與上位機(jī)進(jìn)行通信,同時(shí)保留處理短信功能,實(shí)現(xiàn)短信對(duì)網(wǎng)關(guān)的配置與操控。比如遇到目標(biāo)上位機(jī)IP地址變動(dòng)的情況時(shí),可通過(guò)給網(wǎng)關(guān)發(fā)送短信,配置網(wǎng)關(guān)最新目標(biāo)IP地址然后再與目標(biāo)主機(jī)建立GPRS連接。
對(duì)于該部分程序,需要注意以下幾點(diǎn):
①LPC1227具備在應(yīng)用中編程的功能,對(duì)于需要掉電保存的信息可無(wú)須外擴(kuò)Flash芯片而直接通過(guò)執(zhí)行程序?qū)⑻囟ㄐ畔⒈4娴絃PC1227芯片中。
②ZigBee協(xié)調(diào)器中RAM空間很有限,而且自身的Flash擦除次數(shù)也有限(CC2530支持約2萬(wàn)次的擦寫(xiě),而LPC1227可支持約10萬(wàn)次的擦寫(xiě))。考慮到保存ZigBee網(wǎng)絡(luò)中大量節(jié)點(diǎn)的16位網(wǎng)絡(luò)地址需要很大的空間,而協(xié)調(diào)器中RAM空間明顯不夠用,如果保存到協(xié)調(diào)器的Flash中又會(huì)影響CC2530芯片的使用壽命,因此采用LPC1227中的RAM空間來(lái)保存節(jié)點(diǎn)的網(wǎng)絡(luò)地址。畢竟LPC1227芯片8 KB的RAM空間足以保存一個(gè)大型網(wǎng)絡(luò)中節(jié)點(diǎn)的網(wǎng)絡(luò)地址。同時(shí),LPC1227具備的在應(yīng)用編程功能可將節(jié)點(diǎn)網(wǎng)絡(luò)地址信息保存在自身Flash中。
③本次設(shè)計(jì)中自定義的ZigBee數(shù)據(jù)傳輸幀的節(jié)點(diǎn)ID號(hào)采用一字節(jié)進(jìn)行保存。因此,一個(gè)網(wǎng)關(guān)所建立的ZigBee網(wǎng)絡(luò)容量最大可為255個(gè)節(jié)點(diǎn)(除去協(xié)調(diào)器節(jié)點(diǎn))。為了實(shí)現(xiàn)簡(jiǎn)單的ZigBee節(jié)點(diǎn)網(wǎng)絡(luò)地址和節(jié)點(diǎn)號(hào)之間的地址映射,采用如下代碼實(shí)現(xiàn)(前提是節(jié)點(diǎn)編號(hào)從0到255):
uint16 Node[256]; //定義用于保存16位網(wǎng)絡(luò)地址的數(shù)組
Node[x]=NetAddr; //保存節(jié)點(diǎn)號(hào)為x的網(wǎng)絡(luò)地址
NetAddr=Node[x]; //獲取節(jié)點(diǎn)號(hào)為x的網(wǎng)絡(luò)地址
嵌入式處理器程序的MCU程序處理流程如圖4所示。本文引用地址:http://www.ex-cimer.com/article/155537.htm
評(píng)論