日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ZigBee协议栈简介

發(fā)布時(shí)間:2024/8/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZigBee协议栈简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • Zigbee協(xié)議棧簡(jiǎn)介
  • 如何理解Zigbee協(xié)議棧
  • 如何使用Zigbee協(xié)議棧

Zigbee協(xié)議棧簡(jiǎn)介

??Zigbee協(xié)議分為2部分:

  • IEEE 802.15.4定義了PHY(物理層)和MAC(介質(zhì)訪問(wèn)層)技術(shù)規(guī)范。
  • Zigbee聯(lián)盟定義了NWK(網(wǎng)絡(luò)層)、APS(應(yīng)用程序支持層)、APL(應(yīng)用層)技術(shù)規(guī)范。
  • ??Zigbee協(xié)議棧就是將各個(gè)層定義的協(xié)議都集合在一起,以函數(shù)的形式實(shí)現(xiàn),并給用戶提供API,用戶可以直接調(diào)用。

    如何理解Zigbee協(xié)議棧

    ??TI推出的ZigBee 2007協(xié)議棧也稱為Z-Stack,它是Chipcon推出其CC2430開(kāi)發(fā)平臺(tái)時(shí),開(kāi)發(fā)的一款商業(yè)級(jí)協(xié)議棧軟件。
    ??Chipcon公司為自己設(shè)計(jì)的Z-Stack協(xié)議棧中提供了一個(gè)名為操作系統(tǒng)抽象層OSAL的協(xié)議棧調(diào)度程序。
    ??下圖是TI公司的基于ZigBee 2007的協(xié)議棧Z-Stack-CC2530-2.3.0,所有文件目錄如紅色框所示,我們可以把它看做一個(gè)小型的操作系統(tǒng),采用任務(wù)輪詢的方法運(yùn)行。

    如何使用Zigbee協(xié)議棧

    ??以簡(jiǎn)單的無(wú)線數(shù)據(jù)通信為例,其一般步驟為:

    • 組網(wǎng):調(diào)用協(xié)議棧組網(wǎng)函數(shù)、加入網(wǎng)絡(luò)函數(shù),實(shí)現(xiàn)網(wǎng)絡(luò)的建立和節(jié)點(diǎn)的加入。
    • 發(fā)送:發(fā)送節(jié)點(diǎn)調(diào)用協(xié)議棧的發(fā)送函數(shù),實(shí)現(xiàn)數(shù)據(jù)無(wú)線發(fā)送。
    • 接收:接收節(jié)點(diǎn)調(diào)用協(xié)議棧的無(wú)線接收函數(shù),實(shí)現(xiàn)無(wú)線數(shù)據(jù)接收。

    ??由于協(xié)議棧都把這些函數(shù)都封裝好了,因此我們用起來(lái)比較方便。大家可以了解一下下面的關(guān)鍵字:

    • CCM:Counter with CBC-MAC(Mode of Operation)
    • HAL:Hardware Abstraction Layer(硬件抽象層)
    • PAN:Personal Area Network(個(gè)人局域網(wǎng))
    • RF:Radio Frequency(射頻)
    • RSSI:Received Signal Strength Indicator(接收信號(hào)強(qiáng)度指示)

    ??CC2530 BasicRF文件夾結(jié)構(gòu)如下圖:

    • docs文件夾:打開(kāi)文件夾,里面僅有一個(gè)名為CC2530_Software_Examples的PDF文檔,文檔的主要內(nèi)容是介紹Basic RF的特點(diǎn)、結(jié)構(gòu)及使用。從中我們可以知道,里面Basic RF包含三個(gè)實(shí)驗(yàn)例程:無(wú)線點(diǎn)燈、傳輸質(zhì)量檢測(cè)、譜分析應(yīng)用。
    • Ide文件夾:打開(kāi)文件夾后會(huì)有三個(gè)文件夾,以及一個(gè)cc2530_sw_examples.eww工程,這個(gè)工程是上面提及的三個(gè)實(shí)驗(yàn)例程工程的集合。在IAR環(huán)境中打開(kāi)該工程,在workspace看到如下文件夾:Ide\Settings文件夾是在每個(gè)基礎(chǔ)實(shí)驗(yàn)的文件夾里都會(huì)有的,它用于保存讀者自己的IAR環(huán)境設(shè)置;Ide\srf05_CC2530文件夾里面放有三個(gè)工程,即light_switch.eww、per_test.eww和spectrum_analyzer.eww。
    • Source文件夾:該文件夾里面有apps文件夾和components文件夾。Source\apps文件夾存放Basic RF三個(gè)實(shí)驗(yàn)的應(yīng)用實(shí)現(xiàn)的源代碼;Source\components文件夾包含著B(niǎo)asic RF的應(yīng)用程序使用不同組件的源代碼。

    ??打開(kāi)文件夾WeBee CC2530 BasicRF\ide\srf05_cc2530\iar路徑里面的工程light_switch.eww(無(wú)線點(diǎn)燈),我們的實(shí)驗(yàn)就是對(duì)它進(jìn)行修改的。在介紹Basic RF之前,來(lái)看看這個(gè)實(shí)驗(yàn)例程設(shè)計(jì)的大體結(jié)構(gòu)。

    • Hardware layer:這是實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)幕A(chǔ)。
    • Hardware Abstraction layer:它提供了一種接口來(lái)訪問(wèn)TIMER、GPIO、UART、ADC等,這些接口都通過(guò)相應(yīng)的函數(shù)進(jìn)行實(shí)現(xiàn)。
    • Basic RF layer:為雙向無(wú)線傳輸提供一種簡(jiǎn)單的協(xié)議。
    • Application layer:它是用戶應(yīng)用層,相當(dāng)于用戶使用Basic RF層和HAL的接口。我們通過(guò)在Application layer就可以使用到封裝好的Basic RF和HAL的函數(shù)。

    ??Basic RF由TI公司提供,它包含了IEEE 802.15.4標(biāo)準(zhǔn)的數(shù)據(jù)包的收發(fā)功能,但并沒(méi)有使用到協(xié)議棧,僅僅讓兩個(gè)結(jié)點(diǎn)進(jìn)行簡(jiǎn)單的通信。也就是說(shuō),Basic RF僅僅是包含IEEE 802.15.4標(biāo)準(zhǔn)的一小部分。其主要特點(diǎn)有:

  • 不會(huì)自動(dòng)加入?yún)f(xié)議,也不會(huì)自動(dòng)掃描其他節(jié)點(diǎn)也沒(méi)有組網(wǎng)指示燈(LED3)。
  • 沒(méi)有協(xié)議棧里面所說(shuō)的協(xié)調(diào)器、路由器或者終端的區(qū)分,節(jié)點(diǎn)的地位都是相等的。
  • 沒(méi)有自動(dòng)重發(fā)的功能。
  • ??Basic RF的工作過(guò)程有啟動(dòng)、發(fā)射和接收。使用Basic RF實(shí)現(xiàn)無(wú)線傳輸只要學(xué)會(huì)使用這些過(guò)程的相應(yīng)函數(shù)就可以了。
    ??啟動(dòng)的要求如下:
    ??1. 確保外圍器件沒(méi)有問(wèn)題。
    ??2. 創(chuàng)建一個(gè)basicRfCfg_t的數(shù)據(jù)結(jié)構(gòu),并初始化其中的成員,在basic_rf.h代碼中可以找到:

    typedef struct {uint16 myAddr; /* 16位的短地址(就是節(jié)點(diǎn)的地址) */uint16 panId; /* 節(jié)點(diǎn)的“PAN ID” */uint8 channel; /* RF通道(必須在11至26之間 */uint8 ackRequest; /* 目標(biāo)確認(rèn)就置為true */ #ifdef SECURITY_CCM /* 是否加密,預(yù)定義里取消了加密 */uint8 *securityKey;uint8 *securityNonce; #endif } basicRfCfg_t;

    ??3. 調(diào)用basicRfInit函數(shù)進(jìn)行協(xié)議的初始化,在basic_rf.c代碼中可以找到:

    uint8 basicRfInit ( basicRfCfg_t *pRfConfig );

    函數(shù)功能是對(duì)Basic RF的數(shù)據(jù)結(jié)構(gòu)初始化,設(shè)置模塊的傳輸通道、短地址和PAD ID。
    ??發(fā)送過(guò)程如下:
    ??1. 創(chuàng)建一個(gè)buffer,把payload放入其中,Payload不大于103個(gè)字節(jié)。
    ??2. 調(diào)用basicRfSendPacket函數(shù)發(fā)送,并查看其返回值。在basic_rf.c中可以找到:

    uint8 basicRfSendPacket ( uint16 destAddr, uint8 *pPayload, uint8 length )

    參數(shù)destAddr是目的短地址,pPayload是指向發(fā)送緩沖區(qū)的指針,length是發(fā)送數(shù)據(jù)長(zhǎng)度。函數(shù)功能是給目的短地址發(fā)送指定長(zhǎng)度的數(shù)據(jù),發(fā)送成功剛返回SUCCESS,失敗則返回FAILED。
    ??接收過(guò)程如下:
    ??1. 上層通過(guò)basicRfPacketIsReady函數(shù)來(lái)檢查是否收到一個(gè)新數(shù)據(jù)包。在basic_rf.c中可以找到:

    uint8 basicRfPacketIsReady ( void );

    函數(shù)功能是檢查模塊是否已經(jīng)可以接收下一個(gè)數(shù)據(jù),如果準(zhǔn)備好了,則返回TRUE。
    ??2. 調(diào)用basicRfReceive函數(shù),把收到的數(shù)據(jù)復(fù)制到buffer中。代碼可以在basic_rf.c中找到:

    uint8 basicRfReceive ( uint8 *pRxData, uint8 len, int16 *pRssi );

    函數(shù)功能是接收來(lái)自Basic RF層的數(shù)據(jù)包,并為所接收的數(shù)據(jù)和RSSI值配緩沖區(qū)。

    總結(jié)

    以上是生活随笔為你收集整理的ZigBee协议栈简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。