精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文讀懂zigbee技術的協議原理

電子設計 ? 來源:互聯網 ? 作者:佚名 ? 2017-11-27 13:59 ? 次閱讀

一.前言

從今天開始,我們要正式開始進行zigbee相關的通信實驗了,我所使用的協議棧是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以從TI的官網上直接下載TI公司為cc2530寫的協議棧代碼,畢竟,我們作為初學者,應該先不要去深究協議棧是怎么用代碼編寫的,畢竟zigbee已經相當成熟了,我們應該先學會使用zigbee協議棧進行通信,并能應用于實際項目中,比如說智能家具,不知道大家是不是有同感,所以下面我就先給大家介紹一下zigbee通信的原理以及體系架構。

二.ZStack 體系架構

ZStack 的體系結構由稱為層的各模塊組成。每一層為其上層提供特定的服務:即由數據服務實體提供數據傳輸服務;管理實體提供所有的其他管理服務。每個服務實體通過相應的服務接入點(SAP) 為其上層提供一個接口,每個服務接入點通過服務原語來完成所對應的功能。

ZStack 根據IEEE 802.15.4 和ZigBee 標準分為物理層,介質接入控制層,網絡層,應用層。物理層提供了基礎的服務,數據傳輸和接收,網絡層提供了各個節點連入的服務,是zigbee網絡通信的關鍵,應用層是我們關注的重點,提供了應用的框架和ZDO。大家如果想了解體系結構的具體內容,可以自己去看說明文檔,下面我給大家介紹一下zigbee工作原理

ZStack 采用操作系統的思想來構建,采用事件輪循機制,而且有一個專門的Timer2 來負責定時。從CC2530 工作開始,Timer2 周而復始地計時,有采集、發送、接收、
顯示…等任務要執行時就執行。當各層初始化之后,系統進入低功耗模式,當事件發生時,喚醒系統,開始進入中斷處理事件,結束后繼續進入低功耗模式。如果同時有幾個事件發生,判斷優先級,逐次處理事件。這種軟件構架可以極大地降級系統的功耗。

整個ZStack 的主要工作流程,如圖所示,大致分為以下6 步:
(1) 關閉所有中斷;
(2) 芯片外部(板載外設)初始化;
(3) 芯片內部初始化;
(4) 初始化操作系統;
(5) 打開所有中斷;
(6) 執行操作系統。

這就是zigbee處理任務的大致過程。

三.代碼分析

協議棧的代碼很多,而且很復雜,上圖就明白了。。。

這還只是一部分,所以我們先不用太過于專注于協議棧的編寫,而是要學會如何用,我們主要學習和配置的就是圖中SampleApp.c這個文件,它主要就是應用于應用的,我們面對不同的應用,只要修改它和底層的配置文件就行了。它里面有6個非常重要的函數,這6 個函數,有關于初始化用戶功能
的;有關于所有事件的 處理的;有按鍵服務功能編寫的;有接收數據的處理的;有數據發送函數的編寫的。下面我們就對這6 個函數進行分析:

void SampleApp_Init( uint8 task_id )

這是一個用戶用于初始化任務的函數,它是在系統初始化階段被調用的,而且,在調用它的時候,它里面應該有相應任務的初始化(也就是說,用戶有什么初始化,都是放在這個函數里),比如:硬件初始化、數據表初始化、電源初始化等等。

uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )

這是一個事件處理函數(所有事件都是它管理),當有已登記的事件發生時,它就被主函數調用來對事件進行處理,這些事件包括:定時器、消息、以及用戶定義的事件等
等。
這個函數的功能包括:按鍵處理,數據接收,數據發送。當然,用戶可以自己添加其它事件,我們就在這個函數添加自己的串口事件。

void SampleApp_HandleKeys( uint8 shift, uint8 keys )

這個函數是給SampleApp_ProcessEvent( uint8 task_id, uint16 events )調用的:當按鍵按下后,就會執行SampleApp_ProcessEvent 函數里的case KEY_CHANGE ,這個case 的服務函數就是SampleApp_HandleKeys( uint8 shift, uint8 keys ),我們可以在這個函數里添加按鍵判斷,判斷哪個按鍵,然后執行相關任務。

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

這個函數管理所有接收到的數據,至于數據來自哪個設備,它是根據簇ID 來分辨的。
函數里面就是一個switch 語句,關鍵是case 及其后面的服務函數。用戶可以根據不同的功能,定義不同的簇ID(在SampleApp.h 里進行),然后在這個switch 語句里添加一個以簇ID 來命名的case,并在case 里面編寫自己的應用程序。

void SampleApp_SendPeriodicMessage( void )

這個函數,是一個周期性數據發送函數,它是設備設置為周期性廣播的時候調用的,它是我們設置發送數據的地方。

void SampleApp_SendFlashMessage( uint16 flashTime )

這個函數是void SampleApp_HandleKeys( uint8 shift, uint8 keys )函數的一個服務函數,我們也是極少用到這個函數的,故不作詳解。

上述就是常用的6個函數,對于初學者,會使用zigbee協議進行應用就夠了,先對驅動進行移植,在進行硬件進行初始化,在修改這6個函數,就可以對zigbee進行簡單的應用了,今天就先寫到這里了,協議棧代碼太多了我就不貼出來了,需要的朋友聯系我,大家相互學習,這只是我的一點體會。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ZigBee技術
    +關注

    關注

    3

    文章

    115

    瀏覽量

    42376
收藏 人收藏

    評論

    相關推薦

    讀懂ZigBee技術的前世今生

    下文采用問答形式向你詳細地介紹了方方面面,不夸口的說,你所需要知道的關于 ZigBee切,在這里基本可以了解到!
    發表于 06-14 15:19 ?5221次閱讀

    讀懂zigbee通信技術的特點和性能

    | 傳感器技術(WW_CGQJS)ZigBee技術被認為是最有可能像WiFi、藍牙樣改變我們現在生活的
    的頭像 發表于 11-23 07:46 ?2.9w次閱讀

    TI_06版Zigbee協議棧學習_02 - Zigbee技術 -

    TI_06版Zigbee協議棧學習_02 - Zigbee技術 -
    發表于 08-12 23:53

    TI_06版Zigbee協議棧學習_03 - Zigbee技術

    TI_06版Zigbee協議棧學習_03 - Zigbee技術
    發表于 08-12 23:54

    TI_06版Zigbee協議棧學習_04 - Zigbee技術

    TI_06版Zigbee協議棧學習_04 - Zigbee技術
    發表于 08-12 23:57

    讀懂接口模塊的組合應用有哪些?

    讀懂接口模塊的組合應用有哪些?
    發表于 05-17 07:15

    讀懂如何去優化AC耦合電容?

    讀懂如何去優化AC耦合電容?
    發表于 06-08 07:04

    讀懂ZigBee指的是什么

    ZigBee指的是什么?ZigBee網絡的般特性有哪些?ZigBee網絡的硬件和軟件有哪些?
    發表于 09-24 13:31

    讀懂什么是NEC協議

    讀懂什么是NEC協議
    發表于 10-15 09:22

    讀懂中斷方式和輪詢操作有什么區別嗎

    讀懂中斷方式和輪詢操作有什么區別嗎?
    發表于 12-10 06:00

    zigbee技術_zigbee協議

    Zigbee是IEEE 802.15.4協議的代名詞。根據這個協議規定的技術種短距離、低功耗的無線通信
    發表于 09-07 16:22 ?4484次閱讀
    <b class='flag-5'>zigbee</b><b class='flag-5'>技術</b>_<b class='flag-5'>zigbee</b><b class='flag-5'>協議</b>

    讀懂MCU的特點、功能及如何編寫

    讀懂MCU的特點、功能及如何編寫
    發表于 12-05 09:51 ?24次下載
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>MCU的特點、功能及如何編寫

    讀懂,什么是BLE?

    讀懂,什么是BLE?
    的頭像 發表于 11-27 17:11 ?2198次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>,什么是BLE?

    讀懂車規級AEC-Q認證

    讀懂車規級AEC-Q認證
    的頭像 發表于 12-04 16:45 ?886次閱讀

    讀懂單燈控制器工作原理

    讀懂單燈控制器工作原理
    的頭像 發表于 11-11 13:13 ?132次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>單燈控制器工作原理