版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1. Zigbee網(wǎng)絡(luò)節(jié)點類型Zigbee網(wǎng)絡(luò)有三類節(jié)點類型:即協(xié)調(diào)器Coordinator、路由器Router和終端設(shè)備EndDevice,其中協(xié)調(diào)器和路由器均為全功能設(shè)備,而終端設(shè)備選用精簡功能設(shè)備。2. Zigbee協(xié)議棧各層主要功能模塊3. Zigbee網(wǎng)絡(luò)節(jié)點地址Zigbee網(wǎng)絡(luò)協(xié)議的每一個節(jié)點皆有兩個地址:位的地址及位網(wǎng)絡(luò)地址EUI-64(64-bit extended unique identifier)1)64-bit地址,又稱為MAC地址或IEEE地址。每個ZigBee節(jié)點都應(yīng)該有全球唯一的64位IEEE地址。這個地址需要向IEEE組織申請才能使用。通信時,將待發(fā)送的數(shù)據(jù)包的
2、目的地址設(shè)為此64位IEEE地址,從而實現(xiàn)數(shù)據(jù)包的正確投遞。2)16-bit地址,即網(wǎng)絡(luò)地址,或稱為短地址。當一個ZigBee網(wǎng)絡(luò)形成后,ZigBee網(wǎng)絡(luò)內(nèi)的每個節(jié)點,都會分配到一個16位的網(wǎng)絡(luò)地址。通信時,將待發(fā)送的數(shù)據(jù)包的目的地址設(shè)為此16位網(wǎng)絡(luò)地址。4.Zigbee協(xié)議術(shù)語配置文件(profile):Zigbee協(xié)議的配置文件是對邏輯組件及其相關(guān)接口的描述,是面向某個應(yīng)用類別的公約、準則通常沒有程序代碼與配置文件相關(guān)聯(lián)屬性(attribute):設(shè)備之間通信的每一種數(shù)據(jù)像開關(guān)的狀態(tài)或溫度計值等皆可稱為屬性每個屬性可得到唯一的ID值簇(cluster):多個屬性的匯集形成了簇,每個簇也擁有
3、一個唯一的ID。雖然個體之間傳輸?shù)耐ǔJ菍傩孕畔?,但所謂的邏輯組件的接口指的卻是簇一級的操作,而非屬性一級終端(endpoint):每個支持一個或多個簇的代碼功能塊稱為終端。不同的設(shè)備通過它們的終端及所支持的簇來進行通信。PAN IDs:PAN IDs是用來在邏輯上分離在同一領(lǐng)域內(nèi)的多個節(jié)點組。這樣不同組之間節(jié)點通信就不會干擾,且可以在同一通道channel上(zigbee2007不行,因為它通信時可以改變頻率的)Pan id是16位,范圍是0x000003fff。當建立或加入網(wǎng)絡(luò)時沒有指定PAN ID的話,就會根據(jù)default PAN ID確定。它是個常量。Extended PAN ID:
4、zigbee 增加了一個8字節(jié)的擴展PAN ID,便于提供服務(wù)和PAN ID沖突檢測。5. Zigbee協(xié)議結(jié)構(gòu)物理層(PHY)物理層定義了物理無線信道和MAC子層之間的接口,提供物理層數(shù)據(jù)服務(wù)和物理層管理服務(wù)。物理層內(nèi)容: 1) ZigBee的激活;2)當前信道的能量檢測;3)接收鏈路服務(wù)質(zhì)量信息;4 )ZigBee信道接入方式;5)信道頻率選擇;6)數(shù)據(jù)傳輸和接收。介質(zhì)接入控制子層(MAC)MAC層負責處理所有的物理無線信道訪問,并產(chǎn)生網(wǎng)絡(luò)信號、同步信號;支持PAN連接和分離,提供兩個對等MAC實體之間可靠的鏈路。MAC層功能:1)網(wǎng)絡(luò)協(xié)調(diào)器產(chǎn)生信標;2)與信標同步;3)支持PAN (個域
5、網(wǎng))鏈路的建立和斷開;4)為設(shè)備的安全性提供支持;5)信道接入方式采用免沖突載波檢測多址接入(CSMA-CA)機制;6)處理和維護保護時隙(GTS)機制;7)在兩個對等的M AC實體之間提供一個可靠的通信鏈路。網(wǎng)絡(luò)層(NWK)ZigBee協(xié)議棧的核心部分在網(wǎng)絡(luò)層。網(wǎng)絡(luò)層主要實現(xiàn)節(jié)點加入或離開網(wǎng)絡(luò)、接收或拋棄其他節(jié)點、路由查找及傳送數(shù)據(jù)等功能。網(wǎng)絡(luò)層功能:1)網(wǎng)絡(luò)發(fā)現(xiàn);2)網(wǎng)絡(luò)形成;3)允許設(shè)備連接;4)路由器初始化;5)設(shè)備同網(wǎng)絡(luò)連接;6)直接將設(shè)備同網(wǎng)絡(luò)連接;7)斷開網(wǎng)絡(luò)連接;8)重新復(fù)位設(shè)備;9)接收機同步;10)信息庫維護。應(yīng)用層(APL)ZigBee應(yīng)用層框架包括應(yīng)用支持層(APS)、
6、ZigBee設(shè)備對象(ZDO)和制造商所定義的應(yīng)用對象。應(yīng)用支持層的功能包括:維持綁定表、在綁定的設(shè)備之間傳送消息。ZigBee設(shè)備對象的功能包括:定義設(shè)備在網(wǎng)絡(luò)中的角色(如ZigBee協(xié)調(diào)器和終端設(shè)備),發(fā)起和響應(yīng)綁定請求,在網(wǎng)絡(luò)設(shè)備之間建立安全機制。ZigBee 設(shè)備對象還負責發(fā)現(xiàn)網(wǎng)絡(luò)中的設(shè)備,并且決定向他們提供何種應(yīng)用服務(wù)。ZigBee應(yīng)用層除了提供一些必要函數(shù)以及為網(wǎng)絡(luò)層提供合適的服務(wù)接口外,一個重要的功能是應(yīng)用者可在這層定義自己的應(yīng)用對象。應(yīng)用程序框架(AF)運行在ZigBee協(xié)議棧上的應(yīng)用程序?qū)嶋H上就是廠商自定義的應(yīng)用對象,并且遵循規(guī)范(profile)運行在端點1-240上。在Z
7、igBee應(yīng)用中,提供2種標準服務(wù)類型:鍵值對(KVP)或報文(MSG)。Zigbee設(shè)備對象(ZDO)遠程設(shè)備通過ZDO請求描述符信息,接收到這些請求時,ZDO會調(diào)用配置對象獲取相應(yīng)描述符值。另外,ZDO提供綁定服務(wù)。6. Z-Stack軟件構(gòu)架Z-Stack由main()函數(shù)開始執(zhí)行,main()函數(shù)共做了2件事:一是系統(tǒng)初始化,另外一件是開始執(zhí)行輪轉(zhuǎn)查詢式操作系統(tǒng),如下圖所示:7. Z-Stack 系統(tǒng)運行流程圖8. Z-Stack在項目中的目錄結(jié)構(gòu)(1)App:應(yīng)用層目錄,這個目錄下的文件就是創(chuàng)建一個新項目時自己要添加的文件,(2)HAL:硬件層目錄,Common目錄下的文件是公用文件
8、,基本上與硬件無關(guān),其中hal_assert.c是斷言文件,用于調(diào)用,hal_drivers.c是驅(qū)動文件,抽象出與硬件無關(guān)的驅(qū)動函數(shù),包含有與硬件相關(guān)的配置和驅(qū)動及操作函數(shù)。Include目錄下主要包含各個硬件模塊的頭文件,而Target目錄下的文件是跟硬件平臺相關(guān)的,可能看到有兩個平臺,分別是Cc2430DB平臺和一個CC2430EB平臺。后面的DB和EB表示的是TI公司開發(fā)板的型號,其實還有一種類型是BB的,BB: Battery BoardDB: Development BoardEB: Evaluation Board分別對應(yīng)TI公司開發(fā)的三種板型,其功能按上順序依次變強。可以參看&
9、quot;Z-Stack User's Guide for CC2430"的圖片,可以獲得更直觀的認識。(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)絡(luò)層目錄,含有網(wǎng)絡(luò)層配置參數(shù)文件及網(wǎng)絡(luò)層庫的函數(shù)接口文件,及APS層庫的函數(shù)接口(6)OSAL:協(xié)議棧的操作系統(tǒng)抽象層目錄
10、(7)Profile:AF層目錄,Application Farmework 應(yīng)用框架,包含AF層處理函數(shù)接口文件。(8)Security:安全層目錄,包含安全層處理函數(shù)接口文件(9)Services:ZigBee和802.15.4設(shè)備地址處理函數(shù)目錄,包括地址模式的定義及地址處理函數(shù)(10)Tools:工作配置目錄,包括空間劃分及Z-Stack相關(guān)配置信息(11)ZDO:指ZigBee設(shè)備對象,可認為是一種公共的功能集,文件用戶用自定義的對象調(diào)用APS子層的服務(wù)和NWK層的服務(wù)(12)ZMAC:其中Zmac.c是Z-StackMAC導出層接口文件,zmac_cb.c是ZMAC需要調(diào)
11、用的網(wǎng)絡(luò)層函數(shù)(13)Zmain:Zmain.c主要包含了整個項目的入口函數(shù)main(),在OnBoard.c包含硬件開始平臺類外設(shè)進行控制的接口函數(shù)(14)Output:輸出文件目錄,這個是EW8051 IDE自動生成的9.Z-stack 中實現(xiàn)自己的任務(wù)在Zstack(TI的Zigbee協(xié)議棧)中,對于每個用戶自己新建立的任務(wù)通常需要兩個相關(guān)的處理函數(shù),包括:用于初始化的函數(shù)如:SampleApp_Init(),這個函數(shù)是在osalInitTasks( )這個osal(Zstack中自帶的小操作系統(tǒng))中去調(diào)用的,其目的就是把一些用戶自己寫的任務(wù)中的一些變量,網(wǎng)絡(luò)模式,網(wǎng)絡(luò)終端類型等進行初始
12、化;用于引起該任務(wù)狀態(tài)變化的事件發(fā)生后所需要執(zhí)行的事件處理函數(shù)如:SampleApp_ProcessEvent(),這個函數(shù)是首先const pTaskEventHandlerFntasksArr 中進行設(shè)置(綁定),然后在osalInitTasks()中如果發(fā)生事件進行調(diào)用綁定的事件處理函數(shù)。1)用戶自己設(shè)計的任務(wù)代碼在Zstack中的調(diào)用過程main( )執(zhí)行(在Zmain目錄中ZMain.c)-àosal_init_system( )(在OSAL目錄中的OSAL.c 中)-à調(diào)用osalInitTasks( )(在APP目錄中的OSAL_SerialApp.c)-
13、224;調(diào)用SerialApp_Init( ),(在APP目錄中的SerialApp.c中)。在osalInitTasks()中實現(xiàn)了多個任務(wù)初始化的設(shè)置,其中macTaskInit(taskID+)到ZDApp_Init(taskID+ )的幾行代碼表示對于幾個系統(tǒng)運行初始化任務(wù)的調(diào)用,而用戶自己實現(xiàn)的SampleApp_Init()在最后,這里taskID隨著任務(wù)的增加也隨之遞增.所以用戶自己實現(xiàn)的任務(wù)的初始化操作應(yīng)該在osalInitTasks()中增加。(在APP目錄中的OSAL_SerialApp.c中增加)。2)任務(wù)處理調(diào)用的重要數(shù)據(jù)結(jié)構(gòu)在Zstack里,對于同一個任務(wù)可能有多種事
14、件發(fā)生,那么需要執(zhí)行不同的事件處理,為了方便,對于每個任務(wù)的事件處理函數(shù)都統(tǒng)一在一個事件處理函數(shù)中實現(xiàn),然后根據(jù)任務(wù)的ID號(task_id)和該任務(wù)的具體事件(events)調(diào)用某個任務(wù)的事件處理函數(shù),進入了該任務(wù)的事件處理函數(shù)之后,再根據(jù) events 再來判別是該任務(wù)的哪一種事件發(fā)生,進而執(zhí)行相應(yīng)的事件處理。pTaskEventHandlerFn 是一個指向函數(shù)(事件處理函數(shù))的指針,這里實現(xiàn)的每一個數(shù)組元素各對應(yīng)于一個任務(wù)的事件處理函數(shù),比如SampleApp_ProcessEvent對于用戶自行實現(xiàn)的事件處理函數(shù) uint16 SampleApp_ProcessEvent( uint
15、8 task_id,uint16 events ),所以這里如果我們實現(xiàn)了一個任務(wù),還需要把實現(xiàn)的該任務(wù)的事件處理函數(shù)在這里添加。注意,tasksEvents(在APP目錄中的OSAL_SerialApp.c的osalInitTasks(void)函數(shù)中)和tasksArr(在APP中的OSAL_SerialApp.c中)里的順序是一一對應(yīng)的,tasksArr中的第i個事件處理函數(shù)對應(yīng)于tasksEvents中的第i個任務(wù)的事件。3)對于不同事件發(fā)生后的任務(wù)處理函數(shù)的調(diào)用osal_start_system()很重要,決定了當某個任務(wù)的事件發(fā)生后調(diào)用對應(yīng)的事件處理函數(shù)(在Zmain目錄中ZMai
16、n.c)。10.Z-stack 添加一個新的任務(wù)在osalInitTasks()和tasksArr添加相應(yīng)的項就可以了。osalInitTasks()為初始化系統(tǒng)的任務(wù),tasksArr 為任務(wù)處理事件矩陣。在 osalInitTasks()和 tasksArr添加相應(yīng)的項就可以。1)修改 osalInitTasks() void osalInitTasks( void ) OuhsApp_Init(taskID+ ); PhotoApp_Init(taskID); 2)修改 tasksArr const pTaskEventHandlerFn tasksArr = OuhsApp_Proce
17、ssEvent PhotoApp_ProcessEvent ;3)添加_Init( )和_ProcessEvent( )void PhotoApp_Init(uint8 task_id) PhotoApp_TaskID=task_id; PhotoInit(); RegisterForPhoto(PhotoApp_TaskID ); uint16 PhotoApp_ProcessEvent( uint8 task_id uint16 events ) afIncomingMSGPacket_t *MSGpkt; if ( events &SYS_EVENT_MSG ) MSGpkt =
18、 (afIncomingMSGPacket_t *)osal_msg_receive( PhotoApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt->hdr.event ) case PHOTO_CHANGE: HalLedblink( HAL_LED_1 3 30 300 ); /P0IE=1; break; / Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); / Next - if one is availableMSGpkt =(afIncomingMSGPacket_
19、t *)osal_msg_receive( PhotoApp_TaskID ); / return unprocessed events return (events SYS_EVENT_MSG); / Discard unknown events return 0; TI節(jié)點地址的獲得:NLME_GetShortAddr();/調(diào)用NLME_GetShortAddr()函數(shù),獲得16位短地址。(void)NLME_GetExtAddr(); / Load the saveExtAddr pointer/獲得64位的IEEE地址。實例分析一:Sample Applicat
20、ion工程:遠程按鍵無線控制燈實例分析二:按鍵處理硬件層對按鍵的處理:InitBoard-( HalKeyConfig(OnboardKeyIntEnable,OnBoard_KeyCallback);/按鍵配置,設(shè)置回調(diào)函數(shù)對按鍵進行處理-à HalDriverInit();/初始化外設(shè)-à HalKeyInit( )- àHalKeyConfig( )- /* Register the callback fucntion/注冊回調(diào)函數(shù) */pHalKeyProcessFunction = cback;/設(shè)置回調(diào)函數(shù)-à OnBoard_KeyCall
21、back()或如沒有使用中斷,osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE);/*Kickoffpolling-àuint16 Hal_ProcessEvent( uint8 task_id, uint16 events )對按鍵進行掃描-àHalKeyPoll();/檢查按鍵-àOnBoard_KeyCallback(uint8keys,uint8state)->OnBoard_SendKeys( keys, shift )-à osal_msg_send
22、( registeredKeysTaskID, (uint8 *)msgPtr ); /發(fā)送消息KEY_CHANGE應(yīng)用層對按鍵的處理:GenericApp_ProcessEvent( byte task_id, UINT16 events )-à在應(yīng)用層是通過消息來處理按鍵的。通過標識KEY_CHANGE來識別-à GenericApp_HandleKeys( (keyChange_t *)MSGpkt)->state, (keyChange_t *)MSGpkt)->keys )實例分析三:串口處理過程:SerialAPP工程Main( )-àHa
23、lDriverInit( )-HAL: hal_drivers.c-HalDriverInit-àHalUARTInit()-HAL:Target:hal_uart.c-HalUARTInit()-àHalUARTInitDMA()或HalUARTInitISR()-ZStack-cc2530-1.3.0componentshaltargetCC2530EB _hal_uart_isr.c: HalUARTInitISR(void)或ZStack-cc2530-1.3.0componentshaltargetCC2530EB_hal_uart_dma.c:HalUARTIn
24、itDMA(void)osal_init_system()-àosalInitTasks()-àSerialApp_Init( taskID )-APP-SerialApp.c: SerialApp_Init( taskID )-à HalUARTOpen()- -àHalUARTOpenISR(config)-à初始化及配置完成之后剩下的就是如何使用:SerialApp_ProcessEvent( uint8 task_id, UINT16 events ):收:case AF_INCOMING_MSG_CMD: SerialApp_Proc
25、essMSGCmd( MSGpkt ); break;發(fā): if ( events & SERIALAPP_SEND_EVT ) SerialApp_Send(); return ( events SERIALAPP_SEND_EVT ); SerialApp_Send();/發(fā)送數(shù)據(jù)-à AF_DataRequest(&SerialApp_TxAddr,(endPointDesc_t*)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, SerialApp_TxLen+1, SerialApp_TxBuf, &Seria
26、lApp_MsgID, 0, AF_DEFAULT_RADIUS)實例分析四:SimpleAPP測溫分析SimpleSensor:采集溫度值并發(fā)送:Mian( )-à 初始化HAL,在HAL目錄下的hal_board_cfg.h的HAL_BOARD_INIT()-à Initialize board I/O,在ZMain目錄下的OnBoard.c里 InitBoard( )-à 在HAL目錄下的hal_drivers.c里HalDriverInit()-à在OSAL目錄下的OSAL.C里osal_init_system()-à在APP目錄下的s
27、api.c里 osalInitTasks()-在APP目錄下的sapi.c里SAPI_Init(),同時設(shè)置了應(yīng)用開始事件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( 0xFFFE,
28、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-case AF_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ā)送到串口。實例分析五:無線串口透明傳輸typedef struct osal_event_hdr_t hdr; /* OS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版路基設(shè)計咨詢及技術(shù)支持服務(wù)合同4篇
- 2025年物流產(chǎn)業(yè)投資基金合作協(xié)議合同3篇
- 2025版零用錢消費習慣養(yǎng)成服務(wù)合同4篇
- 2025年度柴油發(fā)電機設(shè)備采購與能源審計服務(wù)協(xié)議4篇
- 二零二五年度酒店管理加盟代理合作協(xié)議書3篇
- 第10課《“印”出來的畫》(說課稿)-2023-2024學年一年級下冊綜合實踐活動人教版
- 2025版教育類網(wǎng)絡(luò)課程設(shè)計與制作服務(wù)合同協(xié)議3篇
- 2025年城市綠化帶更新改造工程合同4篇
- 2025年滬教新版共同必修2物理下冊月考試卷含答案
- 二零二五年度淋浴房產(chǎn)品進出口貿(mào)易合同范本4篇
- 三清三關(guān)消防知識
- 資本金管理制度文件模板
- 2025年生產(chǎn)主管年度工作計劃
- 2025年急診科護理工作計劃
- 高中家長會 高二寒假線上家長會課件
- 違規(guī)行為與處罰管理制度
- 個人教師述職報告錦集10篇
- 四川省等八省2025年普通高中學業(yè)水平選擇性考試適應(yīng)性演練歷史試題(含答案)
- 《內(nèi)部培訓師培訓》課件
- 《雷達原理》課件-3.3.3教學課件:相控陣雷達
- 西方史學史課件3教學
評論
0/150
提交評論