資源描述:
《zigbee協(xié)議無(wú)線通信的實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Zigbee無(wú)線網(wǎng)絡(luò)通信的軟件實(shí)現(xiàn)ZigBee是一種新興的短距離、低功耗、低數(shù)據(jù)速率、低成本無(wú)線網(wǎng)絡(luò)技術(shù)。ZigBee采取了IEEE802.15.4強(qiáng)有力的無(wú)線物理層所規(guī)定的全部?jī)?yōu)點(diǎn):省電、簡(jiǎn)單、成本又低的規(guī)格;在此基礎(chǔ)上,ZigBee增加了網(wǎng)絡(luò)層和應(yīng)用層。它的主要應(yīng)用領(lǐng)域包括工業(yè)控制、消費(fèi)性電子設(shè)備、精準(zhǔn)農(nóng)業(yè),汽車(chē)自動(dòng)化、家庭和樓宇自動(dòng)化、醫(yī)用設(shè)備控制等。ZIGBEE的組網(wǎng)方式有三種:星型網(wǎng),樹(shù)狀網(wǎng),網(wǎng)狀網(wǎng)。星型網(wǎng)絡(luò)的各節(jié)點(diǎn)只能通過(guò)協(xié)調(diào)器相互通信。樹(shù)狀網(wǎng)把各個(gè)通信節(jié)點(diǎn)串成了一條線路,各節(jié)點(diǎn)只能延著這條線路,以傳遞的方式進(jìn)行通信。前兩種通信方式只能進(jìn)行一些簡(jiǎn)單
2、的應(yīng)用,這里不加討論。網(wǎng)狀網(wǎng)具有強(qiáng)大的功能,網(wǎng)絡(luò)各節(jié)點(diǎn)之間可靈活的進(jìn)行相互通信,網(wǎng)絡(luò)可以通過(guò)“多級(jí)跳”的方式來(lái)通信;該拓?fù)浣Y(jié)構(gòu)還可以組成極為復(fù)雜的網(wǎng)絡(luò);網(wǎng)絡(luò)還具備自組織、自愈功能。充分發(fā)揮了無(wú)線網(wǎng)絡(luò)通信的優(yōu)勢(shì)。下面以ZIGBEE協(xié)議建立網(wǎng)狀網(wǎng)絡(luò)的工作流程來(lái)說(shuō)明其通信的具體實(shí)現(xiàn)。ZIGBEE協(xié)議棧較復(fù)雜,但ZIBEE聯(lián)盟為我們的具體應(yīng)用封裝了一些編程接口。如APS層,ZDO層,AF層,OSAL操作系統(tǒng)層。我們的具體應(yīng)用大部分功能都可以通過(guò)這些高層接口來(lái)實(shí)現(xiàn),它們封裝了網(wǎng)絡(luò)層及物理層的實(shí)現(xiàn)細(xì)節(jié)。這些復(fù)雜的工作對(duì)程序開(kāi)發(fā)變得透明和方便。ZIGBEE2006協(xié)議棧為應(yīng)
3、用開(kāi)發(fā)提供了程序框架,就象使用VC++一樣,我們只須關(guān)心應(yīng)用的建立。先讓我們認(rèn)識(shí)一下ZIGBEE2006協(xié)議棧,打開(kāi)協(xié)議棧,在工程文件的左邊Workspace中可以看到整個(gè)協(xié)議棧的構(gòu)架,如圖所示:APP:應(yīng)用層目錄,這是用戶創(chuàng)建各種不同工程的區(qū)域,在這個(gè)目錄中包含了應(yīng)用層的內(nèi)容和這個(gè)項(xiàng)目的主要內(nèi)容,在協(xié)議棧里面一般是以操作系統(tǒng)的任務(wù)實(shí)現(xiàn)的。HAL:硬件層目錄,包含有與硬件相關(guān)的配置和驅(qū)動(dòng)及操作函數(shù)。MAC:MAC層目錄,包含了MAC層的參數(shù)配置文件及其MAC的LIB庫(kù)的函數(shù)接口文件。MT:實(shí)現(xiàn)通過(guò)串口可控各層,于各層進(jìn)行直接交互。NWK:網(wǎng)絡(luò)層目錄,含網(wǎng)絡(luò)層配
4、置參數(shù)文件及網(wǎng)絡(luò)層庫(kù)的函數(shù)接口文件,APS層庫(kù)的函數(shù)接口OSAL:協(xié)議棧的操作系統(tǒng)。Profile:AF層目錄,包含AF層處理函數(shù)文件。Security:安全層目錄,安全層處理函數(shù),比如加密函數(shù)等。Services:地址處理函數(shù)目錄,包括著地址模式的定義及地址處理函數(shù)。Tools:工程配置目錄,包括空間劃分及ZStack相關(guān)配置信息。ZDO:ZDO目錄ZMac:MAC層目錄,包括MAC層參數(shù)配置及MAC層LIB庫(kù)函數(shù)回調(diào)處理函數(shù)。ZMain:主函數(shù)目錄,包括入口函數(shù)及硬件配置文件。Output:輸出文件目錄,這個(gè)EW8051IDE自動(dòng)生成的。從上面的描述中可以
5、看出,整個(gè)協(xié)議棧中,對(duì)于Zigbee的功能已經(jīng)全部體現(xiàn),在此基礎(chǔ)上建立一個(gè)項(xiàng)目的方法主要是改動(dòng)應(yīng)用層。程序首先從入口主函數(shù)MAIN邁出了建立網(wǎng)絡(luò)的第一步。在主函數(shù)里初始化了硬件設(shè)備,包括時(shí)鐘,中斷,接口,外部設(shè)備等等。部分代碼如下:ZSEGintmain(void){SET_MAIN_CLOCK_SOURCE(CRYSTAL);//初始化時(shí)鐘InitLcd();//液晶屏初始化osal_int_disable(INTS_ALL);//中斷關(guān)閉,為了初始化中斷設(shè)備zmain_vdd_check();//電壓檢查zmain_ram_init();//堆棧初始化In
6、itBoard(OB_COLD);//I0口初始化HalDriverInit();//硬件設(shè)備驅(qū)動(dòng)初始化osal_nv_init(NULL);//初始化內(nèi)存zmain_ext_addr();//64位擴(kuò)展地址初始化zgInit();//初始化基本的FLASH數(shù)據(jù)ZMacInit();//介質(zhì)介入控制層初始化#ifndefNONWKafInit();//應(yīng)用AF層初始化#endifosal_init_system();//操作系統(tǒng)曾初始化osal_int_enable(INTS_ALL);//硬件初始化后,打開(kāi)所有中斷osal_start_system();//
7、所有的初始化結(jié)束,從這個(gè)函數(shù)進(jìn)入主循環(huán),它不在//返回}整個(gè)協(xié)議棧是以一個(gè)操作系統(tǒng)貫穿的,我們要加入自己的應(yīng)用,就要添加一個(gè)任務(wù)。在協(xié)議棧中的OSAL.c文件中,byteosal_init_system(void)函數(shù)的功能是初始化操做系統(tǒng)。在函數(shù)osal_start_system()中實(shí)現(xiàn)了添加任務(wù)到操作系統(tǒng)任務(wù)表中。在這個(gè)函數(shù)中通過(guò)調(diào)用osalAddTasks()函數(shù)來(lái)定制項(xiàng)目所需要應(yīng)用的任務(wù),該函數(shù)屬于應(yīng)用層和操作系統(tǒng)層之間的接口函數(shù),一般項(xiàng)目的建立需要根據(jù)系統(tǒng)的需要自己編寫(xiě)改函數(shù),并將函數(shù)放到應(yīng)用層。osalAddTasks()函數(shù)是通過(guò)osalTas
8、kAdd()函數(shù)完成任務(wù)添加。首先,將