




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1、協議棧工作流程和無線收發控制 LED1.實驗內容、ZigBee 協議棧簡介、如何使用 ZigBee 協議棧、ZigBee 協議棧的安裝、編譯與、協議棧無線收發控制 LED5)、協議棧工作流程2.實現現象:協調器、終端上電,組網成功后 D1 燈閃爍前言前面講了理論和實驗都是為這章做鋪墊的 ,整個學習中本章的實驗是重中之重,也是以后實際開 發中必須用到的。本套開發板以實戰為主,用戶 可非常簡單、方便的應用到實際產品,本公司開發產品也是基于此開發板開發的,去掉了一些華而不實的東西,如 五向按鍵等,用的開發板省去自己研究、裁剪沒用的資源和代碼 ,此項目工作涉及 到識,并非短時間就可調試好的。、硬件
2、、協議等知那些號稱兼容 TI 程序的開發板,其實需要的水平最低,直接用 TI 給的參考設計,制板出來就行了;但是真 正想應用到實際當中你就知道,自己裁剪的工作量是蠻大的。你說這年頭幾家公司用 5 向按鍵、黑白屏(而且是翻新的,他們沒修改 Lcd 驅動,只能用 TI 提供的驅動)。以上只是有感而發,不說了,只希望您使用后能對的工作認可,知足了。ZigBee 無線傳感器網絡涉及電子、電路、通信、射頻等多學科的知識,這對于入門級學習來說, 無形中增加了學習難度,很多讀者看協議、射頻電路學了半年甚至更長的時間,但是連基本的點對 點通信都無法實現,更別說 ZigBee 網絡應用了。基于此原因,本章采用一
3、種新學習思路,快速幫大家 理解、使用 ZigBee 協議棧。先進行 ZigBee 無線網絡通信的學習和實驗,有了感性認知后再看 ZigBee 協議棧、射頻、天線等知識,看完后再實驗一遍加深印象,用此1起到事半功倍的效果,經過多名初學者學習所積累總結出的經驗,希望對您有所幫助。技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!1.ZigBee 協議棧簡介ZigBee 協議棧呢?它和 ZigBee 協議關系呢?協議是一系列的通信標準,通信雙方 需要共同按照這一標準進行正常的數據發射和接收。協議 棧是協議的具體實現形式,通俗點來理解就 是協議棧是協議和用戶之間的一個接口,
4、開發的,進而實現無線 數據收發。通過使用協議棧來使用這個協議圖 1 展示了 ZigBee 無線網絡協議層的架構圖。ZigBee 的協議分為兩部分,IEEE 802.15.4定義了 PHY(物理層)和 MAC(介質層)技術規范;ZigBee定義了 NW K(網絡層)、APS(應 用程序支持子層)、APL(應 用層)技術規范。ZigBee 協議棧就是將各個層定義的協議都集合在一直,以函數的形式實現,并給用戶提供 API(應用層),用戶可以直接調用。圖 1 ZigBee 無線網絡協議層2.如何使用 ZigBee 協議棧協議棧是協議的實現,可以理解為代碼,函數庫,供上層應 用調用,協議較的層與應用是相
5、互獨 立的。商業化的協議棧就是給你寫好了底層的代碼,符合協議標準,提供給你一個功能模塊 給你調用。你需要關心的就是你的應用邏輯,數 據從哪里到哪里,怎么,處理;還有系 統里的設 備之間的通信順序什么的,當你的應用 需要數據通信時,調用組網函數給你組建你2技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!想要的網絡;當你 想從一個設備發數據到另一個設備時,調用無線數據發送函數;當然,接收端就調用接收函數;當你 的設備沒事干的時候 ,你就調用睡眠函數;要干活的時候就調用喚醒函數。所以當你做具體應用時, 不需要關心 協議棧是怎么寫的,里面的每條代碼是什么 意思。除非你要做
6、協議研究。每個廠商的協議 棧有區別,也就是函數名稱和參數可能有區別,這個要看具體的例子、說明文檔。怎么使用 ZigBee 協議棧?舉個例子,用戶實現一個簡單的無線數據通信時的一般步驟: 1、組網:調用協議棧的組網函數、加入網絡函數,實現網絡的建立與節點的加入。2、發送:發送節點調用協議棧的無線數據發送函數,實現無線數據發送。3、接收:接收節點調用協議棧的無線數據接收函數,實現無線數據接收。是不是看上去很簡單啊,其實協議棧很多都封裝好了,下面大概看看無線發送函數:1. afS.6.7.8.us_t AF_DataRequest( a fAddrType_t *dstAddr,end
7、PoDesc _t *srcEP,uu u u uu16 cID,16 len,8 *buf,8 *transI D,8 options ,8 radius )用戶調用該函數即可實現數據的無線數據的發送,此函數中有 8 個參數,用戶需要將每個參數的含義理解以后,才能熟練使用該函數進行無線數據通信的目的。現在只講其中最重要的兩個參數,其它參 數不需要死記硬背,以后用多了自然就記住了。3技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!uu16 len, / /發送數據的長度;8 *buf, / /指向存放發送數據的緩沖區的指針。至于調用該函數后,如何初始化硬件進行數據
8、發送等工作,用戶不需要關心,ZigBee 協議棧己經 將所需要的工作做好了,只需要調用相應的 API 函數即可,而不必關心具體實現細節。看起來是不 是很簡單呢,是不是有動手試試的沖動。先別急還要先安裝 ZigBee 協議棧才能進行開發調試呢,下面 就動手安裝 ZigBee 協議棧吧。3.ZigBee 協議棧的安裝、編譯與。解 壓 . Zigbee 開 發ZStack-CC2530-2.3.0-1.4.0 協 議 棧安裝文件.rar ; 解壓得到.exe 文件,雙擊進行安裝,路徑你可以選擇默認,同樣你也可以選擇你 想要安裝的位置 。也許有人就困惑了,裝完之后不是應該有個桌 面圖標的么?其實所謂的
9、安裝協議棧 只是把一些文件解壓到你安裝的目錄下。好了,協議棧是安裝好了,怎么用它呢? 裝了肯定要用啊是吧,別急,先來看看這個協議棧的目錄:Compon ents,顧名思義這個是放driver,hal, zcl 等庫的代碼的庫的文件夾,里面放了一些用到的 ZDO,s,這個不用說大家都知道是放 TI 的開檔的,里面很多都是講述協議棧的API 的 有空時Projec ts,這個文件夾放的是 TI 協議棧的例子程序,一個個例子程序都是以一個個 project的 形式給的,學好這些例子程序里面的一兩個,基本你能做事情了。Tools,這個文件夾是放 TI 的例子程序的一些上位機之類的程序,作為工具使用。好
10、了,基本明 白了基本架構之后,果比較好。以一個簡單的實驗開始 。先掌握一點必要的理論再實驗效4技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!4.協議棧無線收發控制 LED 。打開工程 :3.高級篇-zigbee協議棧應用與組網1.協議棧工作流程和無線收發控制LEDZStack-CC2530-2.3.0-1.4.0ProjectszstackSlesSleAppCC2530DB從開發專業角度講建議大家工程到非中文目錄,因為有些開發環境對中文路徑支持的不好, 雖然 IAR 支持但在實際工作中你想別人看到你的工程,認為你很專業就照著上面做吧。演示就不 修改,容易引起大
11、家誤會,打開工程如下圖:5技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!App:應用層目錄,這是用戶創建各種不同工程的區域,在這個目錄中包含了應用層的內容和這個項目的主要內容。HAL:硬件層目錄,包含有與硬件相關的配置和驅動及操作函數。MAC:MAC 層目錄,包含了 MAC 層的參數配 置文件及其 MAC 的 LIB 庫的函數接口文 件。MT:實現通過串口可控制各層,并與各層進 行直接交互NWK:網絡層目錄,包含網絡層配置參數文 件網絡層庫的函數接口文件及 APS 層庫的函數接口。OSAL:協議棧的操作系統。P rofile: Application frame
12、work 應用框架層目錄,包含 AF 層處理函數文件。應用框架層是應用程序和 APS 層的無線數據 接口。Security:安全層目錄,包含安全層處理函數,比如加密函數等Servi:地址處理函數目錄,包括地址模式的定義及地址處理函數。Tools:工程配置目錄,包括空間劃分及 Z-Stack 相關配置信息。ZDO:ZDO 目錄ZMac:MAC 層目錄,包括 MAC 層參數配置 及 MAC 層 LIB 庫函數回調處理函數。ZMain:主函數目錄,包括函數及硬件 配置文件。Output:輸出文件目錄,由 IAR IDE 自動生成。6技術工程師:2357481431公司:ht創造:http:/思索未來
13、科技共贏!帶協議棧的工程怎么這么多文件夾和文件,都著做實驗就行了,后面實驗接觸多了自然就懂了。用啊?現階段大家只要帶著這個疑問照1). 編譯協議器的程序,在 Workspace 下拉框中選擇“CoordinatorEB-Pro”,在工程名上點法。右鍵選擇”Rebuild All”,沒錯誤提示再到開發板當中。盡量教大家用一些快捷方2).編譯終端設備的程序選擇“EndDeviceEB-Pro”編譯即可。兩個 zigbee 節點都好后,分別上電看效果吧。協調器、終端上電,組網成功后 D1 燈閃爍。看完后是不是在想怎么實現的?下面我就帶著大家分析協議棧工作流程:7技術工程師:2357481431公司:
14、ht創造:http:/思索未來科技共贏!1).zigbee 工作流程:看源碼大家使用 Source_Insight,十分強大的工具,從事必備,除非你想做菜鳥, 具體使用請參考相關資料與Zigbee 參考資料 Source Insight 使用.pdf。下面對源碼也進行注列出實驗中 涉及到比較重要的函數進行詳解,由于是帶協議 棧第一個實驗,釋,方 便看源碼的學習。我建議大家先的文章,再閱讀一次源碼加深印象,后面 的例子結構基本相 同,所以學好此實驗,再做后 面的實驗就得心應手了。用戶自己添加的應用任務程序在 Zstack 中的 。調用過程: main()- osal_init_system()-
15、 osalInitTasks()- SleApp_Init()下面就先從 main()函數開始吧。提示:如果你第一次接觸 ZStack,第一個實驗的代碼看注釋只須大概知道它們是做什么的,有點印象 就行了,后面實驗會漸進,慢慢帶領大家搞懂整個流程和代碼的。如果剛開始就啃代碼,不但效率 低而且信心受損。2) 打開 ZMain.c 找到 main 函數main( void )8技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!osal_disable(S_ALL ); /關閉所有中斷HAL_BOARD_INIT(); /初始化系統時鐘zmain_vdd_check();
16、/檢查電壓是否正常InitBoard( OB_COLD ); /初始化 I/O ,LED 、Timer 等HalDriverInit(); /初始化各硬件模塊osal_nv_init( NULL ); /初始化 FlashZMacInit(); /初始化 MAC 層 zmain_ext_addr(); /確定 IEEE 64 位地址 zgInit(); /初始化非易失變量#ifndef NONWK / Since the AF isn afInit();#endifosal_in it_system(); /初始化操作系統器ask, call its initialization routin
17、eosal_enable(S_ALL ); /使能全部中斷InitBoard( OB_READY ); /最終板載初始化zmain_dev_info(); /顯示設備信息 #ifdef LCD_SUPPORTEDzmain_lcd_init(); /初始化 LCD #endif#ifdef WDT_IN_PM1 /* If WDT is used, this is a good place to enable it. */ WatchDogEnable( WDTIMX );#endifosal_st art_system();/ No Re turn from here 執行操作系統,進去后不
18、會返回 return 0; / Shouldnt get here. / main()看了上面的代碼后,可能感覺很多函數不認識。沒關系剛開始大概了解流程即可,main 函數 先執行初始化工作,包括硬件、網絡層、任務等的初始化。然后執行 osal_start_system(); 操作系統。進去后可不會回來了。在這里,重點了解 2 個函數:初始化操作系統 osal_i nit_system();9技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!運行操作系統 osal_s tart_system();3) 先來看 osal_init_system();系統初始化函 數,
19、進入函數。如果用 IAR 看代碼可在函數名上單擊右鍵 go to definitio n of,便可以進入函數。發現里面有 6 個初始化函數,這里只關心 osalInitTasks(); 任務初始化函數,繼續由該函數進入。void osalIn itTasks( void )u8 taskID = 0; / 分配內存,返回指向緩沖區的指針tasksEvents = (u16 *)osal_mem_alloc( sizeof( u16 ) *t);/ 設置所分配的內存空間單元值為 0osal_memset( tasksEvents, 0, (sizeof( u16 ) *t);/ 任務優先 級由
20、高向低依次排列,高優先級對應 taskID 的值反而小makInit( taskID+ ); /makInit(0) ,用戶不需考慮nwk_init( taskID+ ); /nwk_ init(1),用戶不需考慮Hal_Init( taskID+ ); /Hal_I nit(2) ,用戶需考慮#if defined( MT_TASK ) /如果定義 MT_TASK 則調用 MT_TaskIn it() MT_TaskInit( taskID+ );#endifAPS_Init( taskID+ ); /APS_I nit(3) ,用戶不需考慮#if defined ( ZIGBEE_FRAG
21、MENAPSF_Init( taskID+ );ION )#endif ZDApp_Init( taskID+ ); /ZDApp _Init(4) ,用戶需考慮#if defined ( ZIGBEE_FREQ_AGILITY ) | defined ( ZIGBEE_PANID_ ZDNwkMgr_Init( taskID+ );#endif /用戶 創建的任務)SleA pp_Init( taskID ); / SleApp_Init _Init (5),用戶需考慮。重要!函數對 taskID 進行初始化,每初始化一個,taskI D+。大家看到了注釋后面有些寫著用戶需要考慮, 有些 則
22、寫著用戶不需考慮。沒錯,需要考慮的用戶可 以根據自己的硬件或者其他設置,而寫著不需考慮 的也是不能修改的。10技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!TI 公司協議棧已完成。SleApp_Init()是應 用 協 議 棧 例 程 的 必 要 函數 , 用 戶 通 常 在 這 里 初 始 化 自 己 的 東 西 。 至 此 ,osal_i nit_system();大概了解完畢。4) 接下來看第二個函數 osal_start_system( );運行操作系統。同樣用 go todefinition 的 方法進入該函數。void osal_st art_sys
23、tem( void )#if !defined ( ZBIT ) & !defined ( UBIT ) for(;) / Forever Loop#endifu8 idx = 0;osalTimeUpdate(); /掃描哪個事 件被觸發了,然后置相應的標志位Hal_ProsPoll(); /輪詢 TIMER 與 UARTdo if (tasksEventsidx) / Task is highest priorit ybreak; /得到待處理 的最高優先級任務索引號 idxt is ready. while (+idx t);if (idx hdr.event )/ Received w
24、hen a key is pressedcase KEY_CHANGE:/按鍵事件SleApp_HandleKeys( (keyChange_t *)MSGpkt)-se,(keyChange_t *)MSGpkt)-keys );break;/ Received when a messages is received (OTA) for this endpocaseING_MSG_CMD:/接收數據事件,調用函數 AF_DataRequest()接收數據SleApp_MessageMSGCB( MSGpkt );/調用回調函數對收到的數據進行處理break;/ Received whenev
25、er the device changes sehe networkcase ZDO_SE_CHANGE:/只要網絡狀態發生改變,就通過 ZDO_S務。同時 完成對協調器,路由器,終端的設置E_CHANGE 事件通知所有的任SleApp_NwkSe = (devSes_t)(MSGpkt-hdr.sus);/if ( (SleApp_NwkSe = DEV_ZB_COORD)/實驗中協調器只接收數據所以取消發送事件if ( (SleApp_NwkSe = DEV_ROUTER) | (SleApp_NwkSe= DEV_END_DEVICE) )/這個定時器只是為發送周期信息開啟的,設備啟動初
26、始化后從這里開始觸發第一個周期信息的發送,然后周而復始下去。15技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!osal_start_timerEx( SleApp_TaskID,SSelseLEAPP_SEND_PERIODIC_MSG_EVT,LEAPP_SEND_PERIODIC_MSG_TIMEOUT );/ Device is no longerhe networkbreak; default:break;/ Release the memory/事件處理完了,消息占用的內存osal_msg_deallocate( (u8 *)MSGpkt );/指針指
27、向下一個放在緩沖區的待處理的事件,返回 while ( MSGpkt )重新處理事件,直到緩沖區沒有等MSGpkt = (*)osal_msg_receive( S/ return unpro待處理事件為止ingMSGPacket_tleApp_TaskID );sed events /返回未處理的事件return (events SYS_EVENT_MSG); / Send a message out - This event is generated by a timer/ (setup in Sif ( events & SleApp_Init().LEAPP_SEND_PERIODIC
28、_MSG_EVT )/處理周期性事件,利用 SleApp_SendPeriodicMessage()處理完當前的周期性事件,然后啟動定時器 開啟下一個周期性事情,這樣一種循環下去,也即是上面說的周期性事件了,可以做為傳感器定時、上傳任務SleApp_SendPeriodicMessage();/ Setup to send message again in normal period (+ a little jitter)16技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!osal_start_timerEx(SleApp_TaskID,SLEAPP_SEND_P
29、ERIODIC_MSG_EVT,(SLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0 x00FF) );/ return unproreturn (events Ssed events 返回未處理的事件LEAPP_SEND_PERIODIC_MSG_EVT); / Discard unknown eventsreturn 0;7) 分析接收數據 函數 SleApp_MessageMSGCB/接收數據,參數為接收到的數據void SleApp_MessageMSGCB(ingMSGPacket_t *pkt )u16 flashTime;byt
30、e buf3;switch ( pkt-clusterId )/判斷簇 ID case SLEAPP_PERIODIC_CLUSTERID:/收到廣播數據osal_memset(buf, 0 , 3);osal_memcpy(buf, pkt-cmd.Data, 2);/數據到緩沖區中if(buf0=D & buf1=1)/判斷收到的數據是否為“D1”HalLedBlink(HAL_LED_1, 0, 50, 500);/如果是則 Led1 間隔 500ms 閃爍17技術工程師:2357481431公司:ht創造:http:/思索未來科技共贏!#if defined(ZDO_COORDINATOR)/協調器收到D1后,返回D1給終端,讓終端 Led1 也閃爍SleApp_SendPeriodicMessage();#endifelseHalLedSebreak;case SL_LED_1, HAL_LED_MODE_ON);LEAPP_FLASH_CLUSTERID: /收到組播數據flashTime = BUILD_U16(pkt-cmd.Data1, pkt-cmd.Data2 );HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );break;8) 分析發送周期信息 SleApp_SendPerio dicMessa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書包購貨合同標準文本
- 會計培訓協議合同標準文本
- 耐堿短切玻璃纖維企業數字化轉型與智慧升級戰略研究報告
- 脫錠起重機企業數字化轉型與智慧升級戰略研究報告
- 采礦服務企業ESG實踐與創新戰略研究報告
- 發酵、提取設備企業縣域市場拓展與下沉戰略研究報告
- 出讓資本投資合同樣本
- 共同購買地皮合同標準文本
- 經濟作物高效智能控制裝備企業縣域市場拓展與下沉戰略研究報告
- 石棉摩擦材料企業縣域市場拓展與下沉戰略研究報告
- DB37∕T 5164-2020 建筑施工現場管理標準
- 上海市長寧區2022年高考英語一模試卷(含答案)
- 勞務派遣公司介紹ppt課件(PPT 35頁)
- 47頁數字孿生人臉識別軌跡分析電子圍欄智慧工地解決方案.pptx (2)
- 全國中小學美術教師基本功比賽理論知識測試試卷
- 16起觸電事故案例分析
- 各種配電箱接線系統圖25024
- 呆滯物料的管理規定
- 喜來登酒店設施及面積分配表
- 商業地產-租金測算表950354217
- 童年歌詞拼音版
評論
0/150
提交評論