新聞中心

        EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > LPC1227的遠(yuǎn)距離ZigBee無(wú)線網(wǎng)關(guān)設(shè)計(jì)

        LPC1227的遠(yuǎn)距離ZigBee無(wú)線網(wǎng)關(guān)設(shè)計(jì)

        作者: 時(shí)間:2011-11-15 來(lái)源:網(wǎng)絡(luò) 收藏

        2.3 EM310模塊電路
        EM310是由華為公司的GSM模塊。它的輸入電壓在第1節(jié)中已有介紹。這里需要注意2點(diǎn):
        ①串口引腳的連接。EM310模塊采用串口與進(jìn)行通信,EM310串口引腳的連接比較特殊。RXD對(duì)應(yīng)終端設(shè)備的RXD口,TXD對(duì)應(yīng)終端設(shè)備的TXD口。因此與EM310相連時(shí)引腳分配如下:PIO0_1/RXD0對(duì)應(yīng)RXD,PIO0_2/TXD0對(duì)應(yīng)TXD。
        ②本次中雖然不需要使用EM310進(jìn)行語(yǔ)音通話,但建議EM310模塊的RING引腳與的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ì)
        的軟件系統(tǒng)主要由協(xié)調(diào)器程序和嵌入式處理器程序構(gòu)成。
        3.1 協(xié)調(diào)器程序
        標(biāo)準(zhǔn)定義ZigBee網(wǎng)絡(luò)中存在3種類型的設(shè)備:協(xié)調(diào)器、路由器、終端設(shè)備。其中協(xié)調(diào)器負(fù)責(zé)建立ZigBee網(wǎng)絡(luò),因此中的ZigBee模塊需要在程序中配置為協(xié)調(diào)器類型。
        協(xié)調(diào)器程序采用最新的TI公司推出的ZigBee協(xié)議棧2007版,該協(xié)議棧可很好地支持網(wǎng)絡(luò)的自組織和自愈合。相對(duì)于目前使用較多的ZigBe e協(xié)議棧2006版,07版協(xié)議棧在06版協(xié)議棧基礎(chǔ)上主要增加了支持多密鑰高安全性、大型網(wǎng)絡(luò)和分割傳輸?shù)忍匦浴?br /> 協(xié)調(diào)器程序在已有協(xié)議棧基礎(chǔ)上,主要還需增加如下部分:
        ①2007版ZigBee協(xié)議棧中包含了CC2591控制程序,為了使用CC2591,在協(xié)調(diào)器程序中需要開(kāi)啟“halboard_cfg.h”文件中的HAL_PA_LNA編譯選項(xiàng)。
        ②增加串口處理任務(wù),實(shí)現(xià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芯片的看門狗初始化以及定期喂狗程序。
        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)程傳輸;通過(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.104case.com/article/155537.htm

        e.jpg




        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 海淀区| 长宁区| 合江县| 阳春市| 怀化市| 当涂县| 红河县| 教育| 如东县| 田阳县| 都兰县| 吴堡县| 卓尼县| 同德县| 隆德县| 清涧县| 桑植县| 渑池县| 射阳县| 乌拉特前旗| SHOW| 吴旗县| 禹州市| 紫云| 临湘市| 青浦区| 类乌齐县| 临高县| 镶黄旗| 海晏县| 普陀区| 桐梓县| 通榆县| 宜宾市| 丰原市| 循化| 姜堰市| 英山县| 石阡县| 汶川县| 文水县|