ZigBee协议栈简介
文章目錄
- Zigbee協(xié)議棧簡介
- 如何理解Zigbee協(xié)議棧
- 如何使用Zigbee協(xié)議棧
Zigbee協(xié)議棧簡介
??Zigbee協(xié)議分為2部分:
??Zigbee協(xié)議棧就是將各個(gè)層定義的協(xié)議都集合在一起,以函數(shù)的形式實(shí)現(xiàn),并給用戶提供API,用戶可以直接調(diào)用。
如何理解Zigbee協(xié)議棧
??TI推出的ZigBee 2007協(xié)議棧也稱為Z-Stack,它是Chipcon推出其CC2430開發(fā)平臺(tái)時(shí),開發(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é)議棧
??以簡單的無線數(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ù)無線發(fā)送。
- 接收:接收節(jié)點(diǎn)調(diào)用協(xié)議棧的無線接收函數(shù),實(shí)現(xiàn)無線數(shù)據(jù)接收。
??由于協(xié)議棧都把這些函數(shù)都封裝好了,因此我們用起來比較方便。大家可以了解一下下面的關(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文件夾:打開文件夾,里面僅有一個(gè)名為CC2530_Software_Examples的PDF文檔,文檔的主要內(nèi)容是介紹Basic RF的特點(diǎn)、結(jié)構(gòu)及使用。從中我們可以知道,里面Basic RF包含三個(gè)實(shí)驗(yàn)例程:無線點(diǎn)燈、傳輸質(zhì)量檢測、譜分析應(yīng)用。
- Ide文件夾:打開文件夾后會(huì)有三個(gè)文件夾,以及一個(gè)cc2530_sw_examples.eww工程,這個(gè)工程是上面提及的三個(gè)實(shí)驗(yàn)例程工程的集合。在IAR環(huán)境中打開該工程,在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文件夾包含著Basic RF的應(yīng)用程序使用不同組件的源代碼。
??打開文件夾WeBee CC2530 BasicRF\ide\srf05_cc2530\iar路徑里面的工程light_switch.eww(無線點(diǎn)燈),我們的實(shí)驗(yàn)就是對它進(jìn)行修改的。在介紹Basic RF之前,來看看這個(gè)實(shí)驗(yàn)例程設(shè)計(jì)的大體結(jié)構(gòu)。
- Hardware layer:這是實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)幕A(chǔ)。
- Hardware Abstraction layer:它提供了一種接口來訪問TIMER、GPIO、UART、ADC等,這些接口都通過相應(yīng)的函數(shù)進(jìn)行實(shí)現(xiàn)。
- Basic RF layer:為雙向無線傳輸提供一種簡單的協(xié)議。
- Application layer:它是用戶應(yīng)用層,相當(dāng)于用戶使用Basic RF層和HAL的接口。我們通過在Application layer就可以使用到封裝好的Basic RF和HAL的函數(shù)。
??Basic RF由TI公司提供,它包含了IEEE 802.15.4標(biāo)準(zhǔn)的數(shù)據(jù)包的收發(fā)功能,但并沒有使用到協(xié)議棧,僅僅讓兩個(gè)結(jié)點(diǎn)進(jìn)行簡單的通信。也就是說,Basic RF僅僅是包含IEEE 802.15.4標(biāo)準(zhǔn)的一小部分。其主要特點(diǎn)有:
??Basic RF的工作過程有啟動(dòng)、發(fā)射和接收。使用Basic RF實(shí)現(xiàn)無線傳輸只要學(xué)會(huì)使用這些過程的相應(yīng)函數(shù)就可以了。
??啟動(dòng)的要求如下:
??1. 確保外圍器件沒有問題。
??2. 創(chuàng)建一個(gè)basicRfCfg_t的數(shù)據(jù)結(jié)構(gòu),并初始化其中的成員,在basic_rf.h代碼中可以找到:
??3. 調(diào)用basicRfInit函數(shù)進(jìn)行協(xié)議的初始化,在basic_rf.c代碼中可以找到:
uint8 basicRfInit ( basicRfCfg_t *pRfConfig );函數(shù)功能是對Basic RF的數(shù)據(jù)結(jié)構(gòu)初始化,設(shè)置模塊的傳輸通道、短地址和PAD ID。
??發(fā)送過程如下:
??1. 創(chuàng)建一個(gè)buffer,把payload放入其中,Payload不大于103個(gè)字節(jié)。
??2. 調(diào)用basicRfSendPacket函數(shù)發(fā)送,并查看其返回值。在basic_rf.c中可以找到:
參數(shù)destAddr是目的短地址,pPayload是指向發(fā)送緩沖區(qū)的指針,length是發(fā)送數(shù)據(jù)長度。函數(shù)功能是給目的短地址發(fā)送指定長度的數(shù)據(jù),發(fā)送成功剛返回SUCCESS,失敗則返回FAILED。
??接收過程如下:
??1. 上層通過basicRfPacketIsReady函數(shù)來檢查是否收到一個(gè)新數(shù)據(jù)包。在basic_rf.c中可以找到:
函數(shù)功能是檢查模塊是否已經(jīng)可以接收下一個(gè)數(shù)據(jù),如果準(zhǔn)備好了,則返回TRUE。
??2. 調(diào)用basicRfReceive函數(shù),把收到的數(shù)據(jù)復(fù)制到buffer中。代碼可以在basic_rf.c中找到:
函數(shù)功能是接收來自Basic RF層的數(shù)據(jù)包,并為所接收的數(shù)據(jù)和RSSI值配緩沖區(qū)。
總結(jié)
以上是生活随笔為你收集整理的ZigBee协议栈简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Protel99SE教程(二)——PCB
- 下一篇: c#图解教程和c#高级编程电子书链接