![zigbee學習自我總結_第1頁](http://file4.renrendoc.com/view/6737a7087d5bfe0742072c26ad3ede0e/6737a7087d5bfe0742072c26ad3ede0e1.gif)
![zigbee學習自我總結_第2頁](http://file4.renrendoc.com/view/6737a7087d5bfe0742072c26ad3ede0e/6737a7087d5bfe0742072c26ad3ede0e2.gif)
![zigbee學習自我總結_第3頁](http://file4.renrendoc.com/view/6737a7087d5bfe0742072c26ad3ede0e/6737a7087d5bfe0742072c26ad3ede0e3.gif)
![zigbee學習自我總結_第4頁](http://file4.renrendoc.com/view/6737a7087d5bfe0742072c26ad3ede0e/6737a7087d5bfe0742072c26ad3ede0e4.gif)
![zigbee學習自我總結_第5頁](http://file4.renrendoc.com/view/6737a7087d5bfe0742072c26ad3ede0e/6737a7087d5bfe0742072c26ad3ede0e5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
-.z.TOC\o"1-5"\n\u1.Zigbee網(wǎng)絡節(jié)點類型Zigbee網(wǎng)絡有三類節(jié)點類型:即協(xié)調(diào)器Coordinator、路由器Router和終端設備EndDevice,其中協(xié)調(diào)器和路由器均為全功能設備,而終端設備選用精簡功能設備。2.Zigbee協(xié)議棧各層主要功能模塊3.Zigbee網(wǎng)絡節(jié)點地址Zigbee網(wǎng)絡協(xié)議的每一個節(jié)點皆有兩個地址:64位的IEEEMAC地址及16位網(wǎng)絡地址.EUI-64(64-bite*tendeduniqueidentifier)1)64-bit地址,又稱為MAC地址或IEEE地址。每個ZigBee節(jié)點都應該有全球唯一的64位IEEE地址。這個地址需要向IEEE組織申請才能使用。通信時,將待發(fā)送的數(shù)據(jù)包的目的地址設為此64位IEEE地址,從而實現(xiàn)數(shù)據(jù)包的正確投遞。2)16-bit地址,即網(wǎng)絡地址,或稱為短地址。當一個ZigBee網(wǎng)絡形成后,ZigBee網(wǎng)絡內(nèi)的每個節(jié)點,都會分配到一個16位的網(wǎng)絡地址。通信時,將待發(fā)送的數(shù)據(jù)包的目的地址設為此16位網(wǎng)絡地址。4.Zigbee協(xié)議術語配置文件(profile):Zigbee協(xié)議的配置文件是對邏輯組件及其相關接口的描述,是面向*個應用類別的公約、準則.通常沒有程序代碼與配置文件相關聯(lián).屬性(attribute):設備之間通信的每一種數(shù)據(jù)像開關的狀態(tài)或溫度計值等皆可稱為屬性.每個屬性可得到唯一的ID值.簇(cluster):多個屬性的匯集形成了簇,每個簇也擁有一個唯一的ID。雖然個體之間傳輸?shù)耐ǔJ菍傩孕畔?,但所謂的邏輯組件的接口指的卻是簇一級的操作,而非屬性一級.終端(endpoint):每個支持一個或多個簇的代碼功能塊稱為終端。不同的設備通過它們的終端及所支持的簇來進行通信。PANIDs:PANIDs是用來在邏輯上分離在同一領域內(nèi)的多個節(jié)點組。這樣不同組之間節(jié)點通信就不會干擾,且可以在同一通道channel上(zigbee2007不行,因為它通信時可以改變頻率的)Panid是16位,范圍是0*0000~03fff。當建立或加入網(wǎng)絡時沒有指定PANID的話,就會根據(jù)defaultPANID確定。它是個常量。E*tendedPANID:zigbee增加了一個8字節(jié)的擴展PANID,便于提供服務和PANID沖突檢測。5.Zigbee協(xié)議結構●物理層(PHY)物理層定義了物理無線信道和MAC子層之間的接口,提供物理層數(shù)據(jù)服務和物理層管理服務。物理層內(nèi)容:1)ZigBee的激活;2)當前信道的能量檢測;3)接收鏈路服務質(zhì)量信息;4)ZigBee信道接入方式;5)信道頻率選擇;6)數(shù)據(jù)傳輸和接收?!窠橘|(zhì)接入控制子層(MAC)MAC層負責處理所有的物理無線信道訪問,并產(chǎn)生網(wǎng)絡信號、同步信號;支持PAN連接和分離,提供兩個對等MAC實體之間可靠的鏈路。MAC層功能:1)網(wǎng)絡協(xié)調(diào)器產(chǎn)生信標;2)與信標同步;3)支持PAN(個域網(wǎng))鏈路的建立和斷開;4)為設備的安全性提供支持;5)信道接入方式采用免沖突載波檢測多址接入(CSMA-CA)機制;6)處理和維護保護時隙(GTS)機制;7)在兩個對等的MAC實體之間提供一個可靠的通信鏈路?!窬W(wǎng)絡層(NWK)ZigBee協(xié)議棧的核心部分在網(wǎng)絡層。網(wǎng)絡層主要實現(xiàn)節(jié)點加入或離開網(wǎng)絡、接收或拋棄其他節(jié)點、路由查找及傳送數(shù)據(jù)等功能。網(wǎng)絡層功能:1)網(wǎng)絡發(fā)現(xiàn);2)網(wǎng)絡形成;3)允許設備連接;4)路由器初始化;5)設備同網(wǎng)絡連接;6)直接將設備同網(wǎng)絡連接;7)斷開網(wǎng)絡連接;8)重新復位設備;9)接收機同步;10)信息庫維護。●應用層(APL)ZigBee應用層框架包括應用支持層(APS)、ZigBee設備對象(ZDO)和制造商所定義的應用對象。應用支持層的功能包括:維持綁定表、在綁定的設備之間傳送消息。ZigBee設備對象的功能包括:定義設備在網(wǎng)絡中的角色(如ZigBee協(xié)調(diào)器和終端設備),發(fā)起和響應綁定請求,在網(wǎng)絡設備之間建立安全機制。ZigBee設備對象還負責發(fā)現(xiàn)網(wǎng)絡中的設備,并且決定向他們提供何種應用服務。ZigBee應用層除了提供一些必要函數(shù)以及為網(wǎng)絡層提供合適的服務接口外,一個重要的功能是應用者可在這層定義自己的應用對象?!駪贸绦蚩蚣埽ˋF)運行在ZigBee協(xié)議棧上的應用程序實際上就是廠商自定義的應用對象,并且遵循規(guī)范(profile)運行在端點1---240上。在ZigBee應用中,提供2種標準服務類型:鍵值對(KVP)或報文(MSG)。●Zigbee設備對象(ZDO)遠程設備通過ZDO請求描述符信息,接收到這些請求時,ZDO會調(diào)用配置對象獲取相應描述符值。另外,ZDO提供綁定服務。6.Z-Stack軟件構架Z-Stack由main()函數(shù)開始執(zhí)行,main()函數(shù)共做了2件事:一是系統(tǒng)初始化,另外一件是開始執(zhí)行輪轉查詢式操作系統(tǒng),如下圖所示:7.Z-Stack系統(tǒng)運行流程圖8.Z-Stack在項目中的目錄結構(1)App:應用層目錄,這個目錄下的文件就是創(chuàng)建一個新項目時自己要添加的文件,(2)HAL:硬件層目錄,Common目錄下的文件是公用文件,基本上與硬件無關,其中hal_assert.c是斷言文件,用于調(diào)用,hal_drivers.c是驅動文件,抽象出與硬件無關的驅動函數(shù),包含有與硬件相關的配置和驅動及操作函數(shù)。Include目錄下主要包含各個硬件模塊的頭文件,而Target目錄下的文件是跟硬件平臺相關的,可能看到有兩個平臺,分別是Cc2430DB平臺和一個CC2430EB平臺。后面的DB和EB表示的是TI公司開發(fā)板的型號,其實還有一種類型是BB的,BB:BatteryBoard
DB:DevelopmentBoardEB:EvaluationBoard
分別對應TI公司開發(fā)的三種板型,其功能按上順序依次變強。可以參看"Z-StackUser'sGuideforCC2430"的圖片,可以獲得更直觀的認識。(3)MAC:MAC層目錄,HighLevel和LowLevel兩個目錄表示MAC層分為了高層和底層兩層,Include目錄下則包含了MAC層的參數(shù)配置文件及基MAC的LIB庫函數(shù)接口文件,這里的MAC層的協(xié)議是不開源的,以庫的形式給出(4)MT:監(jiān)制調(diào)試層目錄,該目錄下的文件主要用于調(diào)試目的,即實現(xiàn)通過串口調(diào)試各層,與各層進行直接交互。(5)NWK:網(wǎng)絡層目錄,含有網(wǎng)絡層配置參數(shù)文件及網(wǎng)絡層庫的函數(shù)接口文件,及APS層庫的函數(shù)接口(6)OSAL:協(xié)議棧的操作系統(tǒng)抽象層目錄(7)Profile:AF層目錄,ApplicationFarmework應用框架,包含AF層處理函數(shù)接口文件。(8)Security:安全層目錄,包含安全層處理函數(shù)接口文件(9)Services:ZigBee和802.15.4設備地址處理函數(shù)目錄,包括地址模式的定義及地址處理函數(shù)(10)Tools:工作配置目錄,包括空間劃分及Z-Stack相關配置信息(11)ZDO:指ZigBee設備對象,可認為是一種公共的功能集,文件用戶用自定義的對象調(diào)用APS子層的服務和NWK層的服務(12)ZMAC:其中Zmac.c是Z-StackMAC導出層接口文件,zmac_cb.c是ZMAC需要調(diào)用的網(wǎng)絡層函數(shù)(13)Zmain:Zmain.c主要包含了整個項目的入口函數(shù)main(),在OnBoard.c包含硬件開始平臺類外設進行控制的接口函數(shù)(14)Output:輸出文件目錄,這個是EW8051IDE自動生成的9.Z-stack中實現(xiàn)自己的任務在Zstack(TI的Zigbee協(xié)議棧)中,對于每個用戶自己新建立的任務通常需要兩個相關的處理函數(shù),包括:①用于初始化的函數(shù)如:SampleApp_Init(),這個函數(shù)是在osalInitTasks()這個osal(Zstack中自帶的小操作系統(tǒng))中去調(diào)用的,其目的就是把一些用戶自己寫的任務中的一些變量,網(wǎng)絡模式,網(wǎng)絡終端類型等進行初始化;②用于引起該任務狀態(tài)變化的事件發(fā)生后所需要執(zhí)行的事件處理函數(shù)如:SampleApp_ProcessEvent(),這個函數(shù)是首先constpTaskEventHandlerFntasksArr[]中進行設置(綁定),然后在osalInitTasks()中如果發(fā)生事件進行調(diào)用綁定的事件處理函數(shù)。1)用戶自己設計的任務代碼在Zstack中的調(diào)用過程main()執(zhí)行(在Zmain目錄中ZMain.c)-osal_init_system()(在OSAL目錄中的OSAL.c中)-調(diào)用osalInitTasks()(在APP目錄中的OSAL_SerialApp.c)-調(diào)用SerialApp_Init(),(在APP目錄中的SerialApp.c中)。在osalInitTasks()中實現(xiàn)了多個任務初始化的設置,其中macTaskInit(taskID++)到ZDApp_Init(taskID++)的幾行代碼表示對于幾個系統(tǒng)運行初始化任務的調(diào)用,而用戶自己實現(xiàn)的SampleApp_Init()在最后,這里taskID隨著任務的增加也隨之遞增.所以用戶自己實現(xiàn)的任務的初始化操作應該在osalInitTasks()中增加。(在APP目錄中的OSAL_SerialApp.c中增加)。2)任務處理調(diào)用的重要數(shù)據(jù)結構在Zstack里,對于同一個任務可能有多種事件發(fā)生,則需要執(zhí)行不同的事件處理,為了方便,對于每個任務的事件處理函數(shù)都統(tǒng)一在一個事件處理函數(shù)中實現(xiàn),然后根據(jù)任務的ID號(task_id)和該任務的具體事件(events)調(diào)用*個任務的事件處理函數(shù),進入了該任務的事件處理函數(shù)之后,再根據(jù)events再來判別是該任務的哪一種事件發(fā)生,進而執(zhí)行相應的事件處理。pTaskEventHandlerFn是一個指向函數(shù)(事件處理函數(shù))的指針,這里實現(xiàn)的每一個數(shù)組元素各對應于一個任務的事件處理函數(shù),比如SampleApp_ProcessEvent對于用戶自行實現(xiàn)的事件處理函數(shù)uint16SampleApp_ProcessEvent(uint8task_id,uint16events),所以這里如果我們實現(xiàn)了一個任務,還需要把實現(xiàn)的該任務的事件處理函數(shù)在這里添加。注意,tasksEvents(在APP目錄中的OSAL_SerialApp.c的osalInitTasks(void)函數(shù)中)和tasksArr[](在APP中的OSAL_SerialApp.c中)里的順序是一一對應的,tasksArr[]中的第i個事件處理函數(shù)對應于tasksEvents中的第i個任務的事件。3)對于不同事件發(fā)生后的任務處理函數(shù)的調(diào)用osal_start_system()很重要,決定了當*個任務的事件發(fā)生后調(diào)用對應的事件處理函數(shù)(在Zmain目錄中ZMain.c)。10.Z-stack添加一個新的任務在osalInitTasks()和tasksArr[]添加相應的項就可以了。osalInitTasks()為初始化系統(tǒng)的任務,tasksArr[]為任務處理事件矩陣。在osalInitTasks()和tasksArr[]添加相應的項就可以。1)修改osalInitTasks()voidosalInitTasks(void){……OuhsApp_Init(taskID++);PhotoApp_Init(taskID);}2)修改tasksArr[]constpTaskEventHandlerFntasksArr[]={……OuhsApp_ProcessEventPhotoApp_ProcessEvent};3)添加_Init()和_ProcessEvent()voidPhotoApp_Init(uint8task_id){PhotoApp_TaskID=task_id;PhotoInit();RegisterForPhoto(PhotoApp_TaskID);}uint16PhotoApp_ProcessEvent(uint8task_iduint16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG){MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(PhotoApp_TaskID);while(MSGpkt){switch(MSGpkt->hdr.event){casePHOTO_CHANGE:HalLedblink(HAL_LED_1330300);//P0IE=1;break;}//Releasethememoryosal_msg_deallocate((uint8*)MSGpkt);//Ne*t-ifoneisavailableMSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(PhotoApp_TaskID);}//returnunprocessedeventsreturn(events^SYS_EVENT_MSG);}//Discardunknowneventsreturn0;}TI節(jié)點地址的獲得:NLME_GetShortAddr();//調(diào)用NLME_GetShortAddr()函數(shù),獲得16位短地址。(void)NLME_GetE*tAddr();
//LoadthesaveE*tAddrpointer//獲得64位的IEEE地址。實例分析一:SampleApplication工程:遠程按鍵無線控制燈實例分析二:按鍵處理硬件層對按鍵的處理:InitBoard-----(HalKeyConfig(OnboardKeyIntEnable,OnBoard_KeyCallback);//按鍵配置,設置回調(diào)函數(shù)對按鍵進行處理---------HalDriverInit();//初始化外設-------HalKeyInit()----HalKeyConfig()----/*Registerthecallbackfucntion/注冊回調(diào)函數(shù)*/pHalKeyProcessFunction=cback;//設置回調(diào)函數(shù)----OnBoard_KeyCallback()或如沒有使用中斷,osal_start_timerE*(Hal_TaskID,HAL_KEY_EVENT,HAL_KEY_POLLING_VALUE);/*Kickoffpolling------uint16Hal_ProcessEvent(uint8task_id,uint16events)對按鍵進行掃描---HalKeyPoll();//檢查按鍵-----OnBoard_KeyCallback(uint8keys,uint8state)---->OnBoard_SendKeys(keys,shift)--osal_msg_send(registeredKeysTaskID,(uint8*)msgPtr);//發(fā)送消息KEY_CHANGE應用層對按鍵的處理:GenericApp_ProcessEvent(bytetask_id,UINT16events)-------在應用層是通過消息來處理按鍵的。通過標識KEY_CHANGE來識別-----GenericApp_HandleKeys(((keyChange_t*)MSGpkt)->state,((keyChange_t*)MSGpkt)->keys)實例分析三:串口處理過程:SerialAPP工程Main()--HalDriverInit()----[HAL:hal_drivers.c----HalDriverInit]--HalUARTInit()--[HAL:Target:hal_uart.c---HalUARTInit()-]-HalUARTInitDMA()或HalUARTInitISR()----[ZStack-cc2530--1.3.0\components\hal\target\CC2530EB\_hal_uart_isr.c:HalUARTInitISR(void)]或[ZStack-cc2530--1.3.0\components\hal\target\CC2530EB\_hal_uart_dma.c:HalUARTInitDMA(void)]osal_init_system()-osalInitTasks()-SerialApp_Init(taskID)---[APP----SerialApp.c:SerialApp_Init(taskID)----------HalUARTOpen()--------HalUARTOpenISR(config)-----初始化及配置完成之后剩下的就是如何使用:SerialApp_ProcessEvent(uint8task_id,UINT16events):收:caseAF_INCOMING_MSG_CMD:SerialApp_ProcessMSGCmd(MSGpkt);break;發(fā):if(events&SERIALAPP_SEND_EVT){SerialApp_Send();return(events^SERIALAPP_SEND_EVT);}SerialApp_Send();//發(fā)送數(shù)據(jù)--AF_DataRequest(&SerialApp_T*Addr,(endPointDesc_t*)&SerialApp_epDesc,SERIALAPP_CLUSTERID1,SerialApp_T*Len+1,SerialApp_T*Buf,&SerialApp_MsgID,0,AF_DEFAULT_RADIUS))實例分析四:SimpleAPP測溫分析SimpleSensor:采集溫度值并發(fā)送:Mian()-初始化HAL,在HAL目錄下的hal_board_cfg.h的HAL_BOARD_INIT()--InitializeboardI/O,在ZMain目錄下的OnBoard.c里InitBoard()--在HAL目錄下的hal_drivers.c里HalDriverInit()---在OSAL目錄下的OSAL.C里osal_init_system()-------在APP目錄下的sapi.c里osalInitTasks()-----》在APP目錄下的sapi.c里SAPI_Init(),同時設置了應用開始事件ZB_ENTRY_EVENT用osal_set_event(task_id,ZB_ENTRY_EVENT)實現(xiàn)-----》在APP目錄下的sapi.c里SAPI_ProcessEvent()事件處理-----》在APP目錄下的SimpleSensor.c里zb_HandleOsalEvent()讀取溫度值----》在APP目錄下的sapi.c里通過zb_SendDataRequest()調(diào)用AF_DataRequest()把溫度發(fā)出去------------------》注:zb_SendDataRequest(0*FFFE,SENSOR_REPORT_CMD_ID,2,pData,0,AF_ACK_REQUEST,0);參數(shù)pData就是采集到的溫度值。SimpleCollector:溫度值接收并上報:Mian()-osal_init_system()-------在APP目錄下的sapi.c里osalInitTasks()-----》在APP目錄下的sapi.c里SAPI_Init()------》tasksArr[]-----》SAPI_ProcessEvent------》caseAF_INCOMING_MSG_CMD:SAPI_ReceiveDataIndication()---------》zb_ReceiveDataIndication(source,command,len,pData)該函數(shù)在APP目錄的SimpleCollector.c里--------》if(command==SENSOR_REPORT_CMD_ID),執(zhí)行DataChange(pData,buf)數(shù)據(jù)處理,該函數(shù)在DS18B20.C里--------》通過調(diào)用debug_str();函數(shù)發(fā)送到串口。實例分析五:無線串口透明傳輸typedefstruct{osal_event_hdr_thdr;/*OSALMessageheader*/uint16groupId;/*Message'sgroupID-0ifnotset*/uint16clusterI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度析產(chǎn)協(xié)議范本:知識產(chǎn)權分配3篇
- 二零二五年度荒溝水域資源開發(fā)承包合作協(xié)議
- 13人物描寫一組《摔跤》說課稿-2023-2024學年統(tǒng)編版語文五年級下冊
- 二零二五年度高端醫(yī)療影像設備租賃與維護一體化合同2篇
- 2024-2025學年新教材高中英語 Unit 1 Knowing me Knowing you理解 課文精研讀說課稿 外研版必修第三冊
- 2023一年級數(shù)學下冊 六 小小存錢罐-人民幣的認識信息窗1 -認識人民幣說課稿 青島版六三制
- 2025至2030年中國網(wǎng)絡型樓宇對講系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國磨刀機砂輪數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國潔身器數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國萬能蒸柜爐數(shù)據(jù)監(jiān)測研究報告
- 《梅大高速茶陽路段“5·1”塌方災害調(diào)查評估報告》專題警示學習
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 《大健康解讀》課件
- 2025年度交通運輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年公司領導在新年動員會上的講話樣本(3篇)
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預測報告(智研咨詢)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學設計2022課標
- 聯(lián)合體三方協(xié)議合同模板
- 2024年3季度青島房地產(chǎn)市場季度簡報
- 蘇東坡詞十首
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
評論
0/150
提交評論