基于ZigBee技術(shù)的無線點餐系統(tǒng)設(shè)計
3 網(wǎng)絡(luò)節(jié)點軟件的設(shè)計
3.1 網(wǎng)絡(luò)節(jié)點程序
ZigBee網(wǎng)絡(luò)支持三種網(wǎng)絡(luò)結(jié)構(gòu),即星狀、樹狀和網(wǎng)狀。節(jié)點設(shè)計基于通用性及便于開發(fā)的考慮,移植了TI公司的Z-Stack協(xié)議棧,其主要特點就是兼容性,支持IEEE 802.15.4標(biāo)準(zhǔn)的CC2430片上系統(tǒng)解決方案。ZigBee網(wǎng)絡(luò)中有三種設(shè)備,分別是協(xié)調(diào)器、路由器及終端設(shè)備。協(xié)調(diào)器負(fù)責(zé)啟動一個網(wǎng)絡(luò),在一個ZigBee網(wǎng)絡(luò)中有且只有一個協(xié)調(diào)器設(shè)備。本系統(tǒng)選用了一個協(xié)調(diào)器和多個終端設(shè)備,對協(xié)議棧進(jìn)行了相應(yīng)的修改和增減以適應(yīng)硬件電路的實際需求,組成簡單的星形網(wǎng)絡(luò)。
Z-Stack是基于操作系統(tǒng)的思想來構(gòu)建的,采用事件輪循機制,整個協(xié)議棧用C語言編寫。當(dāng)各層初始化之后,系統(tǒng)進(jìn)入低功耗模式,當(dāng)事件發(fā)生時,喚醒系統(tǒng),開始進(jìn)入中斷處理事件,結(jié)束后繼續(xù)進(jìn)入低功耗模式。如果同時有幾個事件發(fā)生,判斷優(yōu)先級,逐次處理事件。這種軟件構(gòu)架可以極大地降級系統(tǒng)的功耗。整個Z-Stack的主要工作流程,大致分為系統(tǒng)啟動、驅(qū)動初始化、OSAL初始化與啟動和進(jìn)入任務(wù)輪循幾個階段。
系統(tǒng)流程如圖4所示。
當(dāng)硬件初始化完成后,打開中斷,執(zhí)行osal_star_system()函數(shù)開始運行OSAL系統(tǒng)。該任務(wù)調(diào)度函數(shù)按照優(yōu)先級檢測各個任務(wù)是否就緒。如果存在就緒的任務(wù)則調(diào)用tasksArr()中相對應(yīng)的任務(wù)處理函數(shù)去處理該事件,直到執(zhí)行完所有就緒的任務(wù)。如果任務(wù)列表中沒有就緒的任務(wù),則可以使處理器進(jìn)入睡眠狀態(tài)實現(xiàn)低功耗。OSAL任務(wù)調(diào)度流程如圖5所示。
ZigBee網(wǎng)絡(luò)的形成是通過ZDApp_Init這個任務(wù)實現(xiàn)的。zDApp_Init任務(wù)中調(diào)用了函數(shù)ZDAPP_Net-workInit,如果是協(xié)調(diào)器就建立網(wǎng)絡(luò),確定PANID與頻道選擇,打開全局中斷之后進(jìn)入監(jiān)聽狀態(tài),監(jiān)測網(wǎng)絡(luò)中有無ZigBee信號,如果有節(jié)點申請加入網(wǎng)絡(luò),協(xié)調(diào)器給節(jié)點分配網(wǎng)絡(luò)地址。對于終端設(shè)備,完成初始化之后,發(fā)送申請加入網(wǎng)絡(luò)信號,等待協(xié)調(diào)器響應(yīng)。成功加入網(wǎng)絡(luò)后,進(jìn)入休眠狀態(tài)等待喚醒。網(wǎng)絡(luò)啟動程序流程如圖6所示。
評論