一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

一文讀懂zigbee技術(shù)的協(xié)議原理

電子設(shè)計 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-11-27 13:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一.前言

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

二.ZStack 體系架構(gòu)

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

ZStack 根據(jù)IEEE 802.15.4 和ZigBee 標準分為物理層,介質(zhì)接入控制層,網(wǎng)絡層,應用層。物理層提供了基礎(chǔ)的服務,數(shù)據(jù)傳輸和接收,網(wǎng)絡層提供了各個節(jié)點連入的服務,是zigbee網(wǎng)絡通信的關(guān)鍵,應用層是我們關(guān)注的重點,提供了應用的框架和ZDO。大家如果想了解體系結(jié)構(gòu)的具體內(nèi)容,可以自己去看說明文檔,下面我給大家介紹一下zigbee工作原理

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

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

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

三.代碼分析

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

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

void SampleApp_Init( uint8 task_id )

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

uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )

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

void SampleApp_HandleKeys( uint8 shift, uint8 keys )

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

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

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

void SampleApp_SendPeriodicMessage( void )

這個函數(shù),是一個周期性數(shù)據(jù)發(fā)送函數(shù),它是設(shè)備設(shè)置為周期性廣播的時候調(diào)用的,它是我們設(shè)置發(fā)送數(shù)據(jù)的地方。

void SampleApp_SendFlashMessage( uint16 flashTime )

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

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

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

    關(guān)注

    3

    文章

    115

    瀏覽量

    42982
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    讀懂ZigBee技術(shù)的前世今生

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

    讀懂zigbee通信技術(shù)的特點和性能

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

    TI_06版Zigbee協(xié)議棧學習_02 - Zigbee技術(shù) -

    TI_06版Zigbee協(xié)議棧學習_02 - Zigbee技術(shù) -
    發(fā)表于 08-12 23:53

    TI_06版Zigbee協(xié)議棧學習_03 - Zigbee技術(shù)

    TI_06版Zigbee協(xié)議棧學習_03 - Zigbee技術(shù)
    發(fā)表于 08-12 23:54

    TI_06版Zigbee協(xié)議棧學習_04 - Zigbee技術(shù)

    TI_06版Zigbee協(xié)議棧學習_04 - Zigbee技術(shù)
    發(fā)表于 08-12 23:57

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

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

    讀懂如何去優(yōu)化AC耦合電容?

    讀懂如何去優(yōu)化AC耦合電容?
    發(fā)表于 06-08 07:04

    讀懂ZigBee指的是什么

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

    讀懂什么是NEC協(xié)議

    讀懂什么是NEC協(xié)議?
    發(fā)表于 10-15 09:22

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

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

    zigbee技術(shù)_zigbee協(xié)議

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

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

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

    讀懂,什么是BLE?

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

    讀懂車規(guī)級AEC-Q認證

    讀懂車規(guī)級AEC-Q認證
    的頭像 發(fā)表于 12-04 16:45 ?1342次閱讀

    讀懂單燈控制器工作原理

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