ZigBee协议栈简介
文章目錄
- Zigbee協議棧簡介
- 如何理解Zigbee協議棧
- 如何使用Zigbee協議棧
Zigbee協議棧簡介
??Zigbee協議分為2部分:
??Zigbee協議棧就是將各個層定義的協議都集合在一起,以函數的形式實現,并給用戶提供API,用戶可以直接調用。
如何理解Zigbee協議棧
??TI推出的ZigBee 2007協議棧也稱為Z-Stack,它是Chipcon推出其CC2430開發平臺時,開發的一款商業級協議棧軟件。
??Chipcon公司為自己設計的Z-Stack協議棧中提供了一個名為操作系統抽象層OSAL的協議棧調度程序。
??下圖是TI公司的基于ZigBee 2007的協議棧Z-Stack-CC2530-2.3.0,所有文件目錄如紅色框所示,我們可以把它看做一個小型的操作系統,采用任務輪詢的方法運行。
如何使用Zigbee協議棧
??以簡單的無線數據通信為例,其一般步驟為:
- 組網:調用協議棧組網函數、加入網絡函數,實現網絡的建立和節點的加入。
- 發送:發送節點調用協議棧的發送函數,實現數據無線發送。
- 接收:接收節點調用協議棧的無線接收函數,實現無線數據接收。
??由于協議棧都把這些函數都封裝好了,因此我們用起來比較方便。大家可以了解一下下面的關鍵字:
- CCM:Counter with CBC-MAC(Mode of Operation)
- HAL:Hardware Abstraction Layer(硬件抽象層)
- PAN:Personal Area Network(個人局域網)
- RF:Radio Frequency(射頻)
- RSSI:Received Signal Strength Indicator(接收信號強度指示)
??CC2530 BasicRF文件夾結構如下圖:
- docs文件夾:打開文件夾,里面僅有一個名為CC2530_Software_Examples的PDF文檔,文檔的主要內容是介紹Basic RF的特點、結構及使用。從中我們可以知道,里面Basic RF包含三個實驗例程:無線點燈、傳輸質量檢測、譜分析應用。
- Ide文件夾:打開文件夾后會有三個文件夾,以及一個cc2530_sw_examples.eww工程,這個工程是上面提及的三個實驗例程工程的集合。在IAR環境中打開該工程,在workspace看到如下文件夾:Ide\Settings文件夾是在每個基礎實驗的文件夾里都會有的,它用于保存讀者自己的IAR環境設置;Ide\srf05_CC2530文件夾里面放有三個工程,即light_switch.eww、per_test.eww和spectrum_analyzer.eww。
- Source文件夾:該文件夾里面有apps文件夾和components文件夾。Source\apps文件夾存放Basic RF三個實驗的應用實現的源代碼;Source\components文件夾包含著Basic RF的應用程序使用不同組件的源代碼。
??打開文件夾WeBee CC2530 BasicRF\ide\srf05_cc2530\iar路徑里面的工程light_switch.eww(無線點燈),我們的實驗就是對它進行修改的。在介紹Basic RF之前,來看看這個實驗例程設計的大體結構。
- Hardware layer:這是實現數據傳輸的基礎。
- Hardware Abstraction layer:它提供了一種接口來訪問TIMER、GPIO、UART、ADC等,這些接口都通過相應的函數進行實現。
- Basic RF layer:為雙向無線傳輸提供一種簡單的協議。
- Application layer:它是用戶應用層,相當于用戶使用Basic RF層和HAL的接口。我們通過在Application layer就可以使用到封裝好的Basic RF和HAL的函數。
??Basic RF由TI公司提供,它包含了IEEE 802.15.4標準的數據包的收發功能,但并沒有使用到協議棧,僅僅讓兩個結點進行簡單的通信。也就是說,Basic RF僅僅是包含IEEE 802.15.4標準的一小部分。其主要特點有:
??Basic RF的工作過程有啟動、發射和接收。使用Basic RF實現無線傳輸只要學會使用這些過程的相應函數就可以了。
??啟動的要求如下:
??1. 確保外圍器件沒有問題。
??2. 創建一個basicRfCfg_t的數據結構,并初始化其中的成員,在basic_rf.h代碼中可以找到:
??3. 調用basicRfInit函數進行協議的初始化,在basic_rf.c代碼中可以找到:
uint8 basicRfInit ( basicRfCfg_t *pRfConfig );函數功能是對Basic RF的數據結構初始化,設置模塊的傳輸通道、短地址和PAD ID。
??發送過程如下:
??1. 創建一個buffer,把payload放入其中,Payload不大于103個字節。
??2. 調用basicRfSendPacket函數發送,并查看其返回值。在basic_rf.c中可以找到:
參數destAddr是目的短地址,pPayload是指向發送緩沖區的指針,length是發送數據長度。函數功能是給目的短地址發送指定長度的數據,發送成功剛返回SUCCESS,失敗則返回FAILED。
??接收過程如下:
??1. 上層通過basicRfPacketIsReady函數來檢查是否收到一個新數據包。在basic_rf.c中可以找到:
函數功能是檢查模塊是否已經可以接收下一個數據,如果準備好了,則返回TRUE。
??2. 調用basicRfReceive函數,把收到的數據復制到buffer中。代碼可以在basic_rf.c中找到:
函數功能是接收來自Basic RF層的數據包,并為所接收的數據和RSSI值配緩沖區。
總結
以上是生活随笔為你收集整理的ZigBee协议栈简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Protel99SE教程(二)——PCB
- 下一篇: 基于stm32单片机外文文献_关于单片机