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