物聯(lián)網(wǎng)無(wú)線傳感器網(wǎng)絡(luò)技術(shù)與應(yīng)用項(xiàng)目四-無(wú)線傳感課件_第1頁(yè)
物聯(lián)網(wǎng)無(wú)線傳感器網(wǎng)絡(luò)技術(shù)與應(yīng)用項(xiàng)目四-無(wú)線傳感課件_第2頁(yè)
物聯(lián)網(wǎng)無(wú)線傳感器網(wǎng)絡(luò)技術(shù)與應(yīng)用項(xiàng)目四-無(wú)線傳感課件_第3頁(yè)
物聯(lián)網(wǎng)無(wú)線傳感器網(wǎng)絡(luò)技術(shù)與應(yīng)用項(xiàng)目四-無(wú)線傳感課件_第4頁(yè)
物聯(lián)網(wǎng)無(wú)線傳感器網(wǎng)絡(luò)技術(shù)與應(yīng)用項(xiàng)目四-無(wú)線傳感課件_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)棧數(shù)據(jù)通信項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)棧數(shù)據(jù)通信知識(shí)目標(biāo):1.掌握zigbee無(wú)線傳感器網(wǎng)絡(luò)的信道、網(wǎng)絡(luò)號(hào)、設(shè)備類型、地址分配等知識(shí)。2.了解zigbee無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)構(gòu)和傳輸流程。3.掌握zigbee無(wú)線傳感器網(wǎng)絡(luò)收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法。項(xiàng)目四ZigBee無(wú)線傳感器數(shù)據(jù)通信知識(shí)目標(biāo):項(xiàng)目四ZigBee無(wú)線傳感器數(shù)據(jù)通信技能目標(biāo):1.掌握zigbee無(wú)線傳感器網(wǎng)絡(luò)的組成及組網(wǎng)實(shí)現(xiàn)的方法。項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)通信技能目標(biāo):項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)通信①組網(wǎng):調(diào)用Z-Stack協(xié)議棧提供的網(wǎng)絡(luò)組建函數(shù)及網(wǎng)絡(luò)加入函數(shù),從而實(shí)現(xiàn)網(wǎng)絡(luò)的建立和節(jié)點(diǎn)的加入。②發(fā)送:當(dāng)需要進(jìn)行數(shù)據(jù)發(fā)送時(shí),調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)發(fā)送函數(shù),實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。③接收:當(dāng)有數(shù)據(jù)包到達(dá)時(shí),通過(guò)調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)接收函數(shù),實(shí)現(xiàn)數(shù)據(jù)的接收。。4.1ZigBee無(wú)線數(shù)據(jù)傳輸①組網(wǎng):調(diào)用Z-Stack協(xié)議棧提供的網(wǎng)絡(luò)組建函數(shù)及網(wǎng)絡(luò)加入4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型在zigbee無(wú)線傳感網(wǎng)絡(luò)中存在三種邏輯設(shè)備類型:協(xié)調(diào)器(Coordinator)、路由器(Router)和終端設(shè)備(End-Device)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型①協(xié)調(diào)器協(xié)調(diào)器是一個(gè)Zigbee網(wǎng)絡(luò)的第一個(gè)開(kāi)始的設(shè)備,或稱為zigbee網(wǎng)絡(luò)的啟動(dòng)或網(wǎng)絡(luò)的建立設(shè)備。協(xié)調(diào)器節(jié)點(diǎn)選擇一個(gè)信道和網(wǎng)絡(luò)標(biāo)志符,然后開(kāi)始建立一個(gè)網(wǎng)絡(luò)。協(xié)調(diào)器設(shè)備在網(wǎng)絡(luò)中還可以有其他作用,比如建立安全機(jī)制、網(wǎng)絡(luò)中的綁定的建立等等。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型②路由節(jié)點(diǎn)允許節(jié)點(diǎn)加入網(wǎng)絡(luò);負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)功能;一個(gè)路由節(jié)點(diǎn)可以與若干個(gè)路由節(jié)點(diǎn)或終端節(jié)點(diǎn)通信。Zigbee星型網(wǎng)絡(luò)不支持Zigbee路由。一般來(lái)說(shuō),路由器需要一直處于工作狀態(tài),功耗較高,所以需要穩(wěn)定連續(xù)的電源供電(區(qū)別于干電池供電)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型③終端節(jié)點(diǎn)只需要負(fù)責(zé)加入已建立的指定網(wǎng)絡(luò)即可,終端節(jié)點(diǎn)不具有網(wǎng)絡(luò)維護(hù)功能。它的存儲(chǔ)容量要求最少,所以它可以根據(jù)自己功能需要休眠或喚醒,因此為電池供電設(shè)備,其可以實(shí)現(xiàn)Zigbee低功耗設(shè)計(jì)。一般來(lái)說(shuō),該設(shè)備需要的內(nèi)存較少(特別是內(nèi)部RAM)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型協(xié)調(diào)節(jié)點(diǎn)啟動(dòng)時(shí),根據(jù)定義的搜索信道(DDEFAULT_CHANLIST)和PANID(DZDAPP_CONFIG_PAN_ID)建立網(wǎng)絡(luò);如果PANID定義為0xFFFF,則隨機(jī)產(chǎn)生PANID。路由節(jié)點(diǎn)和終端節(jié)點(diǎn)啟動(dòng)后,搜索指定的PANID(DZDAPP_CONFIG_PAN_ID)網(wǎng)絡(luò),并加入網(wǎng)絡(luò)。如果PANID定義為0xFFFF,則可加入其他網(wǎng)絡(luò)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型對(duì)每個(gè)節(jié)點(diǎn)有兩個(gè)任務(wù),具體如下。①執(zhí)行指定的網(wǎng)絡(luò)功能函數(shù)。②配置確定的參數(shù)到指定的值。網(wǎng)絡(luò)功能的設(shè)置確定了該節(jié)點(diǎn)的類型,參數(shù)配置和指定的值確定了堆棧的模式。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)2.堆棧模式需要被配置為指定值的堆棧參數(shù),連同這些值被稱為堆棧模式(StackProfile)。這些堆棧模式參數(shù)被Zigbee聯(lián)盟定義指定。在同一個(gè)網(wǎng)絡(luò)中的設(shè)備必須符合同一個(gè)堆棧模式(同一個(gè)網(wǎng)絡(luò)中所有設(shè)備的堆棧模式配置參數(shù)必須一致)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)3.信道Chanel在zigbee標(biāo)準(zhǔn)協(xié)議中,2.4GHz的射頻頻段被分為16個(gè)獨(dú)立的信道。每一個(gè)設(shè)備都有一個(gè)-DEFAULT_CHANLIST的默認(rèn)信道集(0x0B~0x1A)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)3.信道Chanel4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)3.信道Chanel

f8w2530.cxl:該文件包含了CC2530單片機(jī)的鏈接控制指令,包括堆棧的大小、內(nèi)存分配等,一般情況下不需要修改。

f8wConfig.cfg:該文件包含了信道選擇、網(wǎng)絡(luò)ID號(hào)等有關(guān)的鏈接命令。每一個(gè)設(shè)備都有一個(gè)DEFFAULT_CHANLIST的默認(rèn)信道集。要選擇哪個(gè)信道,把前面的“//”注釋刪除,其余的保留即可。例如我們的信道默認(rèn)為-DDEFAULT_CHANLIST=0x00000800//11-0x0B,只需刪除前面“//”注釋符即可。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.PANIDPANID指網(wǎng)絡(luò)編號(hào),用于區(qū)分不同的Zigbee網(wǎng)絡(luò)。設(shè)備的PANID值由DZDAPP_CONFIG_PAN_ID來(lái)設(shè)置,如果DZDAPP_CONFIG_PAN_ID設(shè)置為0xFFFF,則協(xié)調(diào)器將產(chǎn)生一個(gè)隨機(jī)的PAN_ID。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.PANID設(shè)備的PANID值由DZDAPP_CONFIG_PAN_ID來(lái)設(shè)置,如果DZDAPP_CONFIG_PAN_ID設(shè)置為0xFFFF,則協(xié)調(diào)器將產(chǎn)生一個(gè)隨機(jī)的PAN_ID。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.PANID設(shè)備的PANID值由DZDAPP_CONFIG_PAN_ID來(lái)設(shè)置,如果DZDAPP_CONFIG_PAN_ID設(shè)置為0xFFFF,則協(xié)調(diào)器將產(chǎn)生一個(gè)隨機(jī)的PAN_ID。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)5.描述符Zigbee網(wǎng)絡(luò)中的所有設(shè)備都有一些描述符,用來(lái)描述設(shè)備類型和應(yīng)用方式。描述符包含節(jié)點(diǎn)描述符、電源描述符和默認(rèn)用戶描述符等,通過(guò)改變這些描述符可以定義自己的設(shè)備。描述符的定義和創(chuàng)建配置項(xiàng)在文件ZDOConfig.h和ZDOConfig.c中完成,描述符信息可以被網(wǎng)絡(luò)中的其他設(shè)備讀取。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.2工作流程①調(diào)用協(xié)議棧提供的組網(wǎng)函數(shù)、加入網(wǎng)絡(luò)函數(shù),實(shí)現(xiàn)網(wǎng)絡(luò)的建立與節(jié)點(diǎn)的加入。②發(fā)送設(shè)備調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)發(fā)送函數(shù),實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。③接收設(shè)備調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)接收函數(shù),實(shí)現(xiàn)數(shù)據(jù)的接收。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.2工作流程4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送在Zigbee協(xié)議棧中進(jìn)行數(shù)據(jù)發(fā)送可以調(diào)用AF_DataRequest函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)調(diào)用協(xié)議棧里面與硬件相關(guān)的函數(shù)最終將數(shù)據(jù)通過(guò)無(wú)線發(fā)送出去。只需要掌握AF_DataRequest函數(shù)的使用方法即可。afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收當(dāng)協(xié)調(diào)器收到數(shù)據(jù)后,操作系統(tǒng)會(huì)將數(shù)據(jù)封裝成一個(gè)消息,然后放入消息隊(duì)列中,每個(gè)消息都有自己的消息ID,標(biāo)識(shí)接收到新數(shù)據(jù)的消息的ID是AF_INCOMING_MSG_CMD,其中AF_INCOMING_MSG_CMD的值是0x1A,這是在Zigbee協(xié)議棧中定義好的,用戶不可更改。Zigbee協(xié)議棧中AF_INCOMING_MSG_CMD宏的定義(在ZComDef.h文件中)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收接收方接收成功,協(xié)議棧將觸發(fā)數(shù)據(jù)包接收事件:AF_INCOMING_MSG_CMD------>處理函數(shù)SampleApp_ProcessEvent()。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收①對(duì)方傳遞上來(lái)的是什么類型的數(shù)據(jù)?數(shù)據(jù)的事件類型(簇ID)由pkt->clusterId決定。②傳遞上來(lái)的數(shù)據(jù)內(nèi)容是什么?數(shù)據(jù)內(nèi)容由pkt->cmd.Data決定。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.2.1Zigbee數(shù)據(jù)包的結(jié)構(gòu)4.2ZigBee數(shù)據(jù)包4.2.1Zigbee數(shù)據(jù)包的結(jié)構(gòu)4.2ZigBee數(shù)4.2.2Zigbee數(shù)據(jù)傳輸流程在這里可以看出在網(wǎng)絡(luò)層管理實(shí)體一旦選擇了一個(gè)PAN標(biāo)識(shí)符,就會(huì)立刻選擇一個(gè)0x0000的16位網(wǎng)絡(luò)地址,并且設(shè)置MAC層的macShortAddressPIB屬性,使其等于所選擇的網(wǎng)絡(luò)地址。網(wǎng)絡(luò)層數(shù)據(jù)包中,體現(xiàn)了在網(wǎng)絡(luò)層中的數(shù)據(jù)以及格式,網(wǎng)絡(luò)層數(shù)據(jù)包如圖4.9所示。網(wǎng)絡(luò)層中也體現(xiàn)了源地址和目的地址與APS層基本相同。它們最大的不同是數(shù)據(jù)中加入了網(wǎng)絡(luò)層包,附加了網(wǎng)絡(luò)層數(shù)據(jù)。4.2ZigBee數(shù)據(jù)包4.2.2Zigbee數(shù)據(jù)傳輸流程4.2ZigBee數(shù)4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀PFY凈荷PHR凈荷SHR凈荷MAC幀MHRR凈荷MFRR凈荷MAC凈荷MHRR凈荷NWK凈荷AHRMIC凈荷APS凈荷輔助幀HDRNWK幀APS幀4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀P4.3.1串口概述1.通用異步收發(fā)器UART異步串行通信接口是嵌入式系統(tǒng)最常用的接口,可用來(lái)與上位機(jī)或其他外部設(shè)備進(jìn)行數(shù)據(jù)通信。UART是異步串行通信的總稱,它允許在串行鏈路上進(jìn)行全雙工的通信,輸入/輸出電平為TTL電平。一般來(lái)說(shuō),全雙工UART定義了一個(gè)串行發(fā)送引腳(TxD)和一個(gè)串行接收引腳(RxD),可以在同一時(shí)刻發(fā)送和接收數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述2.同步串行口SPI和I2C①串行外設(shè)端口(SerialPeripheralInterface,SPI)是一種同步串行外設(shè)端口,它與各種外圍設(shè)備以串行方式進(jìn)行通信、交換信息。SPI支持全雙工同步傳輸,可選擇以8或16位傳輸幀格式進(jìn)行傳輸,支持多種模式。②I2C總線是一個(gè)多主機(jī)的總線。這就是說(shuō)I2C總線可以連接多于一個(gè)能控制它的器件。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法①初始化串口,包括設(shè)置波特率、中斷等。②向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)或者從接收緩沖區(qū)讀取數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法①HalUARTOpen()函數(shù)原型:uint8HalUARTOpen(uint8port,halUARTCfg_t*config);功能描述:打開(kāi)串口,對(duì)串口進(jìn)行初始化。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法②HalUARTRead()函數(shù)原型:uint8HalUARTRead(uint8port,uint8*buf,uint16len);功能描述:從串口讀取數(shù)據(jù),并將其存放在buf數(shù)組中。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法③HalUARTWrite()函數(shù)原型:uint8HalUARTWrite(uint8port,uint8*buf,uintlen);功能描述:寫信息到串口。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個(gè)步驟。1.串口初始。2.登記任務(wù)。3.串口發(fā)送。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個(gè)步驟。1.串口初始。我們打開(kāi)APP目錄下的OSAL_SampleApp.c文件,找到SampleApp_Init()任務(wù)函數(shù)進(jìn)行MT層串口初始化。添加MT_UartInit();語(yǔ)句。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個(gè)步驟。2.登記任務(wù)。就是把串口事件通過(guò)task_id登記在SampleApp_Init()里。MT_UartRegisterTaskID(task_id);//登記任務(wù)號(hào)4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作3.串口發(fā)送。我們?cè)趧倓偺砑映跏蓟a的后面加入一條上面提示HelloWorld的語(yǔ)句。HalUARTWrite(0,"HelloWorld\n",12);(串口0,‘字符’,字符個(gè)數(shù))。再在預(yù)編譯加入以下一些內(nèi)容。ZIGBEEPROZTOOL_P1MT_TASKMT_SYS_FUNCMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作提示:需要在SampleApp.c這個(gè)文件里加入#include"MT_UART.h"頭文件語(yǔ)句。如果不想要的可以在預(yù)編譯地方把MT相關(guān)內(nèi)容注釋,不再顯示亂碼。ZIGBEEPROZTOOL_P1xMT_TASKxMT_SYS_FUNCxMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)非易失性存儲(chǔ)器(NonVolatile,NV):即使系統(tǒng)斷電后,存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)也不會(huì)丟失。在Zigbee協(xié)議棧中NV存儲(chǔ)器主要用于保存網(wǎng)絡(luò)的配置參數(shù)(如網(wǎng)絡(luò)地址等)。非易失性存儲(chǔ)器是指能夠永久保存信息的存儲(chǔ)器,設(shè)備在意外復(fù)位或者斷電的情況下不會(huì)丟失信息。協(xié)議棧在OSAL文件夾下有OSAL_Nv.h和OSAL_Nv.c文件。4.4非易失性存儲(chǔ)器非易失性存儲(chǔ)器(NonVolatile,NV):即使系統(tǒng)斷4.4.1NV操作函數(shù)①osal_nv_item_init()函數(shù)原型:uintosal_nv_item_init(uint16id,uint16len,void*buf)功能描述:NV條目初始化函數(shù)。4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)②osal_nv_write()函數(shù)原型:uint8osal_nv_write(uint16id,uint16ndx,uint16len,void*buf)。功能描述:NV寫入函數(shù)。uint16id表示NV條目ID號(hào);uint16ndx距離條目開(kāi)始地址的偏移量;uint16len表示要寫入的數(shù)據(jù)長(zhǎng)度;void*buf表示指向存放寫入數(shù)據(jù)緩沖區(qū)的指針。4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)③osal_nv_read()函數(shù)原型:uint8osal_nv_read(uint16id,uint16len,void*buf)。功能描述:NV讀取函數(shù)。uint16id表示NV條目ID號(hào);uint16ndx距離條目開(kāi)始地址的偏移量;uint16len表示要讀取的數(shù)據(jù)長(zhǎng)度;void*buf表示存放讀取數(shù)據(jù)緩沖區(qū)的指針。4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)4.4非易失性存儲(chǔ)器4.4.2NV基本操作1.網(wǎng)絡(luò)層非易失性存儲(chǔ)器Z-Stack將一些網(wǎng)絡(luò)相關(guān)的重要信息都存儲(chǔ)到非易失性存儲(chǔ)器,保證在Zigbee設(shè)備意外復(fù)位或者斷電后重新啟動(dòng)時(shí),設(shè)備能夠自動(dòng)恢復(fù)到原來(lái)網(wǎng)絡(luò)中。為了啟用這個(gè)功能,需要包含NV_RESTORE 編譯選項(xiàng)。注意,在一個(gè)最終的Zigbee網(wǎng)絡(luò)中,這個(gè)選項(xiàng)必須始終啟用。關(guān)閉這個(gè)選項(xiàng)的功能主要是為了開(kāi)發(fā)調(diào)試。4.4非易失性存儲(chǔ)器4.4.2NV基本操作4.4非易失性存儲(chǔ)器4.4.2NV基本操作2.應(yīng)用層非易失性存儲(chǔ)器NV除了用于保存網(wǎng)絡(luò)信息,也可以用來(lái)保存應(yīng)用程序的特定信息,用戶描述符就是一個(gè)很好的例子。NV中用戶描述符ID項(xiàng)是ZDO_NV_UserDesc(在ZComDef.h定義)。在ZDApp_Init()函數(shù)中,調(diào)用函數(shù)Osal_nv_item_init()來(lái)初始化用戶描述符所需要的NV空間。如果之前還沒(méi)有建立這個(gè)NV空間,這個(gè)初始化函數(shù)將為用戶描述符保留空間,并且將它設(shè)置為默認(rèn)值ZDO_DefaultUserDescriptor。4.4非易失性存儲(chǔ)器4.4.2NV基本操作4.4非易失性存儲(chǔ)器4.4.2NV基本操作2.應(yīng)用層非易失性存儲(chǔ)器注意:如果用戶應(yīng)用程序要?jiǎng)?chuàng)建自己的NV項(xiàng),那么必須從應(yīng)用層范圍0x0201~0x0FFF中選擇ID。4.4非易失性存儲(chǔ)器4.4.2NV基本操作4.4非易失性存儲(chǔ)器4.4.3NV基礎(chǔ)實(shí)驗(yàn)NV存儲(chǔ)器主要的操作有初始化NV存儲(chǔ)器、讀NV存儲(chǔ)器、寫NV存儲(chǔ)器。這些都在OSAL文件夾下中的OSAL_Nv.h和OSAL.h文件中定義和實(shí)現(xiàn)。4.4非易失性存儲(chǔ)器4.4.3NV基礎(chǔ)實(shí)驗(yàn)4.4非易失性存儲(chǔ)器4.4.4NV基礎(chǔ)實(shí)驗(yàn)效果在ZigBee協(xié)議棧中,其他需要保存的一些常量數(shù)據(jù)都是使用上述方法將其存儲(chǔ)到NV存儲(chǔ)器中,這樣就可以實(shí)現(xiàn)一些關(guān)鍵數(shù)據(jù)的保存,特別是網(wǎng)絡(luò)參數(shù)的保存。4.4非易失性存儲(chǔ)器4.4.4NV基礎(chǔ)實(shí)驗(yàn)效果4.4非易失性存儲(chǔ)器4.5.1幀格式介紹4.5組網(wǎng)驗(yàn)證4.5.1幀格式介紹4.5組網(wǎng)驗(yàn)證4.5.1幀格式介紹4.5組網(wǎng)驗(yàn)證4.5.1幀格式介紹4.5組網(wǎng)驗(yàn)證4.5.2組網(wǎng)測(cè)試當(dāng)終端傳感器節(jié)點(diǎn)入網(wǎng)以后,協(xié)調(diào)器會(huì)給終端傳感器節(jié)點(diǎn)分配16位的短地址。當(dāng)協(xié)調(diào)器收到終端傳感器節(jié)點(diǎn)發(fā)送的數(shù)據(jù)信息后,通過(guò)串口向PC機(jī)發(fā)送。其中,串口傳輸設(shè)置為:115200b/s,1位停止位,無(wú)校驗(yàn)位。4.5組網(wǎng)驗(yàn)證4.5.2組網(wǎng)測(cè)試4.5組網(wǎng)驗(yàn)證1.Zigbee無(wú)線傳感器網(wǎng)絡(luò)是大量的傳感器節(jié)點(diǎn)以自組織或者多跳的方式構(gòu)成的無(wú)線網(wǎng)絡(luò)。2.Zigbee無(wú)線傳感器網(wǎng)絡(luò)是構(gòu)成物聯(lián)網(wǎng)感知層和網(wǎng)絡(luò)層的一部分,是物聯(lián)網(wǎng)的重要組成部分。3.傳感器負(fù)責(zé)在傳感器網(wǎng)絡(luò)中感知和采集數(shù)據(jù),它處于zigbee無(wú)線傳感器網(wǎng)絡(luò)的感知層,是識(shí)別物體、采集信息的設(shè)備。4.Zigbee無(wú)線傳感器網(wǎng)絡(luò)由傳感器節(jié)點(diǎn)、匯聚節(jié)點(diǎn)和任務(wù)管理節(jié)點(diǎn)等幾部分組成。5.Zigbee無(wú)線傳感器網(wǎng)絡(luò)的協(xié)議棧主要分為物理層、數(shù)據(jù)鏈路層(MAC)、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層5層。小結(jié)1.Zigbee無(wú)線傳感器網(wǎng)絡(luò)是大量的傳感器節(jié)點(diǎn)以自組織或者Thanks物聯(lián)網(wǎng)應(yīng)用的精彩未來(lái)有待你的參與Thanks物聯(lián)網(wǎng)應(yīng)用的精彩未來(lái)有待你的參與項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)棧數(shù)據(jù)通信項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)棧數(shù)據(jù)通信知識(shí)目標(biāo):1.掌握zigbee無(wú)線傳感器網(wǎng)絡(luò)的信道、網(wǎng)絡(luò)號(hào)、設(shè)備類型、地址分配等知識(shí)。2.了解zigbee無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)構(gòu)和傳輸流程。3.掌握zigbee無(wú)線傳感器網(wǎng)絡(luò)收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法。項(xiàng)目四ZigBee無(wú)線傳感器數(shù)據(jù)通信知識(shí)目標(biāo):項(xiàng)目四ZigBee無(wú)線傳感器數(shù)據(jù)通信技能目標(biāo):1.掌握zigbee無(wú)線傳感器網(wǎng)絡(luò)的組成及組網(wǎng)實(shí)現(xiàn)的方法。項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)通信技能目標(biāo):項(xiàng)目四ZigBee無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)通信①組網(wǎng):調(diào)用Z-Stack協(xié)議棧提供的網(wǎng)絡(luò)組建函數(shù)及網(wǎng)絡(luò)加入函數(shù),從而實(shí)現(xiàn)網(wǎng)絡(luò)的建立和節(jié)點(diǎn)的加入。②發(fā)送:當(dāng)需要進(jìn)行數(shù)據(jù)發(fā)送時(shí),調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)發(fā)送函數(shù),實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。③接收:當(dāng)有數(shù)據(jù)包到達(dá)時(shí),通過(guò)調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)接收函數(shù),實(shí)現(xiàn)數(shù)據(jù)的接收。。4.1ZigBee無(wú)線數(shù)據(jù)傳輸①組網(wǎng):調(diào)用Z-Stack協(xié)議棧提供的網(wǎng)絡(luò)組建函數(shù)及網(wǎng)絡(luò)加入4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型在zigbee無(wú)線傳感網(wǎng)絡(luò)中存在三種邏輯設(shè)備類型:協(xié)調(diào)器(Coordinator)、路由器(Router)和終端設(shè)備(End-Device)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型①協(xié)調(diào)器協(xié)調(diào)器是一個(gè)Zigbee網(wǎng)絡(luò)的第一個(gè)開(kāi)始的設(shè)備,或稱為zigbee網(wǎng)絡(luò)的啟動(dòng)或網(wǎng)絡(luò)的建立設(shè)備。協(xié)調(diào)器節(jié)點(diǎn)選擇一個(gè)信道和網(wǎng)絡(luò)標(biāo)志符,然后開(kāi)始建立一個(gè)網(wǎng)絡(luò)。協(xié)調(diào)器設(shè)備在網(wǎng)絡(luò)中還可以有其他作用,比如建立安全機(jī)制、網(wǎng)絡(luò)中的綁定的建立等等。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型②路由節(jié)點(diǎn)允許節(jié)點(diǎn)加入網(wǎng)絡(luò);負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)功能;一個(gè)路由節(jié)點(diǎn)可以與若干個(gè)路由節(jié)點(diǎn)或終端節(jié)點(diǎn)通信。Zigbee星型網(wǎng)絡(luò)不支持Zigbee路由。一般來(lái)說(shuō),路由器需要一直處于工作狀態(tài),功耗較高,所以需要穩(wěn)定連續(xù)的電源供電(區(qū)別于干電池供電)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型③終端節(jié)點(diǎn)只需要負(fù)責(zé)加入已建立的指定網(wǎng)絡(luò)即可,終端節(jié)點(diǎn)不具有網(wǎng)絡(luò)維護(hù)功能。它的存儲(chǔ)容量要求最少,所以它可以根據(jù)自己功能需要休眠或喚醒,因此為電池供電設(shè)備,其可以實(shí)現(xiàn)Zigbee低功耗設(shè)計(jì)。一般來(lái)說(shuō),該設(shè)備需要的內(nèi)存較少(特別是內(nèi)部RAM)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型協(xié)調(diào)節(jié)點(diǎn)啟動(dòng)時(shí),根據(jù)定義的搜索信道(DDEFAULT_CHANLIST)和PANID(DZDAPP_CONFIG_PAN_ID)建立網(wǎng)絡(luò);如果PANID定義為0xFFFF,則隨機(jī)產(chǎn)生PANID。路由節(jié)點(diǎn)和終端節(jié)點(diǎn)啟動(dòng)后,搜索指定的PANID(DZDAPP_CONFIG_PAN_ID)網(wǎng)絡(luò),并加入網(wǎng)絡(luò)。如果PANID定義為0xFFFF,則可加入其他網(wǎng)絡(luò)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)1.設(shè)備類型對(duì)每個(gè)節(jié)點(diǎn)有兩個(gè)任務(wù),具體如下。①執(zhí)行指定的網(wǎng)絡(luò)功能函數(shù)。②配置確定的參數(shù)到指定的值。網(wǎng)絡(luò)功能的設(shè)置確定了該節(jié)點(diǎn)的類型,參數(shù)配置和指定的值確定了堆棧的模式。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)2.堆棧模式需要被配置為指定值的堆棧參數(shù),連同這些值被稱為堆棧模式(StackProfile)。這些堆棧模式參數(shù)被Zigbee聯(lián)盟定義指定。在同一個(gè)網(wǎng)絡(luò)中的設(shè)備必須符合同一個(gè)堆棧模式(同一個(gè)網(wǎng)絡(luò)中所有設(shè)備的堆棧模式配置參數(shù)必須一致)。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)3.信道Chanel在zigbee標(biāo)準(zhǔn)協(xié)議中,2.4GHz的射頻頻段被分為16個(gè)獨(dú)立的信道。每一個(gè)設(shè)備都有一個(gè)-DEFAULT_CHANLIST的默認(rèn)信道集(0x0B~0x1A)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)3.信道Chanel4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)3.信道Chanel

f8w2530.cxl:該文件包含了CC2530單片機(jī)的鏈接控制指令,包括堆棧的大小、內(nèi)存分配等,一般情況下不需要修改。

f8wConfig.cfg:該文件包含了信道選擇、網(wǎng)絡(luò)ID號(hào)等有關(guān)的鏈接命令。每一個(gè)設(shè)備都有一個(gè)DEFFAULT_CHANLIST的默認(rèn)信道集。要選擇哪個(gè)信道,把前面的“//”注釋刪除,其余的保留即可。例如我們的信道默認(rèn)為-DDEFAULT_CHANLIST=0x00000800//11-0x0B,只需刪除前面“//”注釋符即可。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.PANIDPANID指網(wǎng)絡(luò)編號(hào),用于區(qū)分不同的Zigbee網(wǎng)絡(luò)。設(shè)備的PANID值由DZDAPP_CONFIG_PAN_ID來(lái)設(shè)置,如果DZDAPP_CONFIG_PAN_ID設(shè)置為0xFFFF,則協(xié)調(diào)器將產(chǎn)生一個(gè)隨機(jī)的PAN_ID。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.PANID設(shè)備的PANID值由DZDAPP_CONFIG_PAN_ID來(lái)設(shè)置,如果DZDAPP_CONFIG_PAN_ID設(shè)置為0xFFFF,則協(xié)調(diào)器將產(chǎn)生一個(gè)隨機(jī)的PAN_ID。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.PANID設(shè)備的PANID值由DZDAPP_CONFIG_PAN_ID來(lái)設(shè)置,如果DZDAPP_CONFIG_PAN_ID設(shè)置為0xFFFF,則協(xié)調(diào)器將產(chǎn)生一個(gè)隨機(jī)的PAN_ID。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)5.描述符Zigbee網(wǎng)絡(luò)中的所有設(shè)備都有一些描述符,用來(lái)描述設(shè)備類型和應(yīng)用方式。描述符包含節(jié)點(diǎn)描述符、電源描述符和默認(rèn)用戶描述符等,通過(guò)改變這些描述符可以定義自己的設(shè)備。描述符的定義和創(chuàng)建配置項(xiàng)在文件ZDOConfig.h和ZDOConfig.c中完成,描述符信息可以被網(wǎng)絡(luò)中的其他設(shè)備讀取。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.1開(kāi)發(fā)基礎(chǔ)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.2工作流程①調(diào)用協(xié)議棧提供的組網(wǎng)函數(shù)、加入網(wǎng)絡(luò)函數(shù),實(shí)現(xiàn)網(wǎng)絡(luò)的建立與節(jié)點(diǎn)的加入。②發(fā)送設(shè)備調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)發(fā)送函數(shù),實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。③接收設(shè)備調(diào)用協(xié)議棧提供的無(wú)線數(shù)據(jù)接收函數(shù),實(shí)現(xiàn)數(shù)據(jù)的接收。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.2工作流程4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送在Zigbee協(xié)議棧中進(jìn)行數(shù)據(jù)發(fā)送可以調(diào)用AF_DataRequest函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)調(diào)用協(xié)議棧里面與硬件相關(guān)的函數(shù)最終將數(shù)據(jù)通過(guò)無(wú)線發(fā)送出去。只需要掌握AF_DataRequest函數(shù)的使用方法即可。afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收當(dāng)協(xié)調(diào)器收到數(shù)據(jù)后,操作系統(tǒng)會(huì)將數(shù)據(jù)封裝成一個(gè)消息,然后放入消息隊(duì)列中,每個(gè)消息都有自己的消息ID,標(biāo)識(shí)接收到新數(shù)據(jù)的消息的ID是AF_INCOMING_MSG_CMD,其中AF_INCOMING_MSG_CMD的值是0x1A,這是在Zigbee協(xié)議棧中定義好的,用戶不可更改。Zigbee協(xié)議棧中AF_INCOMING_MSG_CMD宏的定義(在ZComDef.h文件中)4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收接收方接收成功,協(xié)議棧將觸發(fā)數(shù)據(jù)包接收事件:AF_INCOMING_MSG_CMD------>處理函數(shù)SampleApp_ProcessEvent()。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收①對(duì)方傳遞上來(lái)的是什么類型的數(shù)據(jù)?數(shù)據(jù)的事件類型(簇ID)由pkt->clusterId決定。②傳遞上來(lái)的數(shù)據(jù)內(nèi)容是什么?數(shù)據(jù)內(nèi)容由pkt->cmd.Data決定。4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無(wú)線數(shù)據(jù)傳輸4.2.1Zigbee數(shù)據(jù)包的結(jié)構(gòu)4.2ZigBee數(shù)據(jù)包4.2.1Zigbee數(shù)據(jù)包的結(jié)構(gòu)4.2ZigBee數(shù)4.2.2Zigbee數(shù)據(jù)傳輸流程在這里可以看出在網(wǎng)絡(luò)層管理實(shí)體一旦選擇了一個(gè)PAN標(biāo)識(shí)符,就會(huì)立刻選擇一個(gè)0x0000的16位網(wǎng)絡(luò)地址,并且設(shè)置MAC層的macShortAddressPIB屬性,使其等于所選擇的網(wǎng)絡(luò)地址。網(wǎng)絡(luò)層數(shù)據(jù)包中,體現(xiàn)了在網(wǎng)絡(luò)層中的數(shù)據(jù)以及格式,網(wǎng)絡(luò)層數(shù)據(jù)包如圖4.9所示。網(wǎng)絡(luò)層中也體現(xiàn)了源地址和目的地址與APS層基本相同。它們最大的不同是數(shù)據(jù)中加入了網(wǎng)絡(luò)層包,附加了網(wǎng)絡(luò)層數(shù)據(jù)。4.2ZigBee數(shù)據(jù)包4.2.2Zigbee數(shù)據(jù)傳輸流程4.2ZigBee數(shù)4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀PFY凈荷PHR凈荷SHR凈荷MAC幀MHRR凈荷MFRR凈荷MAC凈荷MHRR凈荷NWK凈荷AHRMIC凈荷APS凈荷輔助幀HDRNWK幀APS幀4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀P4.3.1串口概述1.通用異步收發(fā)器UART異步串行通信接口是嵌入式系統(tǒng)最常用的接口,可用來(lái)與上位機(jī)或其他外部設(shè)備進(jìn)行數(shù)據(jù)通信。UART是異步串行通信的總稱,它允許在串行鏈路上進(jìn)行全雙工的通信,輸入/輸出電平為TTL電平。一般來(lái)說(shuō),全雙工UART定義了一個(gè)串行發(fā)送引腳(TxD)和一個(gè)串行接收引腳(RxD),可以在同一時(shí)刻發(fā)送和接收數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述2.同步串行口SPI和I2C①串行外設(shè)端口(SerialPeripheralInterface,SPI)是一種同步串行外設(shè)端口,它與各種外圍設(shè)備以串行方式進(jìn)行通信、交換信息。SPI支持全雙工同步傳輸,可選擇以8或16位傳輸幀格式進(jìn)行傳輸,支持多種模式。②I2C總線是一個(gè)多主機(jī)的總線。這就是說(shuō)I2C總線可以連接多于一個(gè)能控制它的器件。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法①初始化串口,包括設(shè)置波特率、中斷等。②向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)或者從接收緩沖區(qū)讀取數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法①HalUARTOpen()函數(shù)原型:uint8HalUARTOpen(uint8port,halUARTCfg_t*config);功能描述:打開(kāi)串口,對(duì)串口進(jìn)行初始化。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法②HalUARTRead()函數(shù)原型:uint8HalUARTRead(uint8port,uint8*buf,uint16len);功能描述:從串口讀取數(shù)據(jù),并將其存放在buf數(shù)組中。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法③HalUARTWrite()函數(shù)原型:uint8HalUARTWrite(uint8port,uint8*buf,uintlen);功能描述:寫信息到串口。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實(shí)現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個(gè)步驟。1.串口初始。2.登記任務(wù)。3.串口發(fā)送。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個(gè)步驟。1.串口初始。我們打開(kāi)APP目錄下的OSAL_SampleApp.c文件,找到SampleApp_Init()任務(wù)函數(shù)進(jìn)行MT層串口初始化。添加MT_UartInit();語(yǔ)句。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個(gè)步驟。2.登記任務(wù)。就是把串口事件通過(guò)task_id登記在SampleApp_Init()里。MT_UartRegisterTaskID(task_id);//登記任務(wù)號(hào)4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作3.串口發(fā)送。我們?cè)趧倓偺砑映跏蓟a的后面加入一條上面提示HelloWorld的語(yǔ)句。HalUARTWrite(0,"HelloWorld\n",12);(串口0,‘字符’,字符個(gè)數(shù))。再在預(yù)編譯加入以下一些內(nèi)容。ZIGBEEPROZTOOL_P1MT_TASKMT_SYS_FUNCMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作提示:需要在SampleApp.c這個(gè)文件里加入#include"MT_UART.h"頭文件語(yǔ)句。如果不想要的可以在預(yù)編譯地方把MT相關(guān)內(nèi)容注釋,不再顯示亂碼。ZIGBEEPROZTOOL_P1xMT_TASKxMT_SYS_FUNCxMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)非易失性存儲(chǔ)器(NonVolatile,NV):即使系統(tǒng)斷電后,存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)也不會(huì)丟失。在Zigbee協(xié)議棧中NV存儲(chǔ)器主要用于保存網(wǎng)絡(luò)的配置參數(shù)(如網(wǎng)絡(luò)地址等)。非易失性存儲(chǔ)器是指能夠永久保存信息的存儲(chǔ)器,設(shè)備在意外復(fù)位或者斷電的情況下不會(huì)丟失信息。協(xié)議棧在OSAL文件夾下有OSAL_Nv.h和OSAL_Nv.c文件。4.4非易失性存儲(chǔ)器非易失性存儲(chǔ)器(NonVolatile,NV):即使系統(tǒng)斷4.4.1NV操作函數(shù)①osal_nv_item_init()函數(shù)原型:uintosal_nv_item_init(uint16id,uint16len,void*buf)功能描述:NV條目初始化函數(shù)。4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)4.4非易失性存儲(chǔ)器4.4.1NV操作函數(shù)②osal_nv_write()函數(shù)原型:uint8osal_nv_write(uint16id,uint16ndx,uint16len,void*buf)。功能描述:NV寫入函數(shù)。uint16id表示NV條目ID號(hào);uint16ndx距離

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論