新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于ZigBee技術(shù)的無(wú)線點(diǎn)餐系統(tǒng)設(shè)計(jì)

基于ZigBee技術(shù)的無(wú)線點(diǎn)餐系統(tǒng)設(shè)計(jì)

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



3 網(wǎng)絡(luò)節(jié)點(diǎn)軟件的
3.1 網(wǎng)絡(luò)節(jié)點(diǎn)程序

網(wǎng)絡(luò)支持三種網(wǎng)絡(luò)結(jié)構(gòu),即星狀、樹(shù)狀和網(wǎng)狀。節(jié)點(diǎn)通用性及便于開(kāi)發(fā)的考慮,移植了TI公司的Z-Stack協(xié)議棧,其主要特點(diǎn)就是兼容性,支持IEEE 802.15.4標(biāo)準(zhǔn)的CC2430片上解決方案。網(wǎng)絡(luò)中有三種設(shè)備,分別是協(xié)調(diào)器、路由器及終端設(shè)備。協(xié)調(diào)器負(fù)責(zé)啟動(dòng)一個(gè)網(wǎng)絡(luò),在一個(gè)網(wǎng)絡(luò)中有且只有一個(gè)協(xié)調(diào)器設(shè)備。本選用了一個(gè)協(xié)調(diào)器和多個(gè)終端設(shè)備,對(duì)協(xié)議棧進(jìn)行了相應(yīng)的修改和增減以適應(yīng)硬件電路的實(shí)際需求,組成簡(jiǎn)單的星形網(wǎng)絡(luò)。
Z-Stack是操作的思想來(lái)構(gòu)建的,采用事件輪循機(jī)制,整個(gè)協(xié)議棧用C語(yǔ)言編寫(xiě)。當(dāng)各層初始化之后,系統(tǒng)進(jìn)入低功耗模式,當(dāng)事件發(fā)生時(shí),喚醒系統(tǒng),開(kāi)始進(jìn)入中斷處理事件,結(jié)束后繼續(xù)進(jìn)入低功耗模式。如果同時(shí)有幾個(gè)事件發(fā)生,判斷優(yōu)先級(jí),逐次處理事件。這種軟件構(gòu)架可以極大地降級(jí)系統(tǒng)的功耗。整個(gè)Z-Stack的主要工作流程,大致分為系統(tǒng)啟動(dòng)、驅(qū)動(dòng)初始化、OSAL初始化與啟動(dòng)和進(jìn)入任務(wù)輪循幾個(gè)階段。
系統(tǒng)流程如圖4所示。


當(dāng)硬件初始化完成后,打開(kāi)中斷,執(zhí)行osal_star_system()函數(shù)開(kāi)始運(yùn)行OSAL系統(tǒng)。該任務(wù)調(diào)度函數(shù)按照優(yōu)先級(jí)檢測(cè)各個(gè)任務(wù)是否就緒。如果存在就緒的任務(wù)則調(diào)用tasksArr()中相對(duì)應(yīng)的任務(wù)處理函數(shù)去處理該事件,直到執(zhí)行完所有就緒的任務(wù)。如果任務(wù)列表中沒(méi)有就緒的任務(wù),則可以使處理器進(jìn)入睡眠狀態(tài)實(shí)現(xiàn)低功耗。OSAL任務(wù)調(diào)度流程如圖5所示。
ZigBee網(wǎng)絡(luò)的形成是通過(guò)ZDApp_Init這個(gè)任務(wù)實(shí)現(xiàn)的。zDApp_Init任務(wù)中調(diào)用了函數(shù)ZDAPP_Net-workInit,如果是協(xié)調(diào)器就建立網(wǎng)絡(luò),確定PANID與頻道選擇,打開(kāi)全局中斷之后進(jìn)入監(jiān)聽(tīng)狀態(tài),監(jiān)測(cè)網(wǎng)絡(luò)中有無(wú)ZigBee信號(hào),如果有節(jié)點(diǎn)申請(qǐng)加入網(wǎng)絡(luò),協(xié)調(diào)器給節(jié)點(diǎn)分配網(wǎng)絡(luò)地址。對(duì)于終端設(shè)備,完成初始化之后,發(fā)送申請(qǐng)加入網(wǎng)絡(luò)信號(hào),等待協(xié)調(diào)器響應(yīng)。成功加入網(wǎng)絡(luò)后,進(jìn)入休眠狀態(tài)等待喚醒。網(wǎng)絡(luò)啟動(dòng)程序流程如圖6所示。



評(píng)論


相關(guān)推薦

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

關(guān)閉