摘要:基于TI公司的CC2530實現了IEEE 802.15.4(ZigBee)的無線傳感器網絡(Wireless Sensor Network,WSN)協議;在分析CSMA-CA算法的基礎上,重點討論了片內集成的命令選通/CSMA-CA處理器的工作機制,同時組建了一個小型星狀網絡。測試結果表明,在節點通信范圍內,節點收發的成功率和正確率均達到了100%。
0 引言
基于IEEE 802.15.4的無線傳感器網絡(Wireless Sensor Network,WSN)是綜合了傳感器技術、信息處理技術和無線通信技術,采用大量的節點覆蓋監測區域,形成一個自組織網絡系統,目前已在自動控制、環境監測等領域得到廣泛的應用。在對無線傳感器網絡MAC層深入研究的基礎上,結合TI公司SoC芯片CC2530,實現了節點間的點對點通信功能,為研究上層協議打下了基礎。
1 CC2530芯片簡介
CC2530是TI公司針對2.4GHz ISM頻帶推出的第二代支持ZigBee/IEEE 802.15.4協議的片上集成芯片。其內部集成了高性能射頻收發器、工業標準增強型8051MCU內核、256KB Flash ROM和8KB RAM。其主要特性:具有2個USART、8位和16位定時器、看門狗定時器、8路輸入可配置的12位ADC、21個GPIO、AES128協同處理器,硬件支持CSMA-CA、數字化的RSSI/LQI和強大的DMA功能,具備電池監測和溫度感測功能;支持5種工作模式,且轉換時間短,可以較好地滿足超低功耗系統的要求;在接收和發送模式下,電流損耗分別為24mA和29mA。由于其硬件設計簡單,封裝小,功耗低,在無線傳感器網絡中得到了越來越廣泛的應用。
2 CSMA-CA機制
IEEE 802.15.4協議中采用CSMA-CA機制來避免數據沖突。根據是否采用信標,網絡分為非信標網絡和信標網絡兩種。非信標模式下,節點使用CSMA-CA機制競爭信道:節點隨機退避一段時間,執行CCA(空閑信道評估),若信道IDLE則傳送數據,若信道BUSY則重新等待一段隨機時間后執行CCA。
在信標網絡中,將超幀劃分了16個時隙,因此執行的退避時間都是以時隙為單位,CCA在退避周期的邊界處開始執行。圖1是IEEE 802.15.4標準規定的CSMA-CA算法流程。

每個節點在每次嘗試傳輸時都需要維護3個變量:后退次數NB、競爭窗口CW和后退指數BE。變量NB是嘗試當前幀發送過程中CSMA-CA算法執行隨機退避的次數,每個新的傳輸嘗試之前NB應初始化為0。在IEEE802.15.4中,定義NB的最大值為4,如果節點經過4次信道忙碌退避后仍然無法接入進行數據傳送,則放棄數據傳送,并向上層報告。變量CW是競爭窗口的長度,它表示允許發送前要求信道連續空閑的時間,只用于時隙CSMA-CA算法,可以給處理器處理不同時隙留有時間保護帶,以免數據幀沖突。BE值的大小影響節點接入信道的能力,若設置得過小,起不到降低沖突的作用;設置得過大,延時作用不明顯。IEEE 802.15.4推薦的默認值為3,最大值為5。當BE設為0時,則只進行一次碰撞檢測。
3 命令選通協處理器
CC2530片上集成的命令選通協處理器(CSP)提供了MCU和無線電之間的接口,有立即選通命令和程序執行兩種模式,可以處理MCU發出的命令。同時還有一個24字節的程序存儲器,配合MAC定時器自動執行CSMA-CA算法,充當MCU的協處理器。CSP復位后,指令寫指針復位到位置0,在每次RFST寫入期間指令寫指針累加1,直到程序存儲器的終點。另外,CSP還有4個寄存器:CSPT、CSPX、CSPY和CSPZ。MCU可以對它們讀寫,設置CSP運行所需的參數。程序執行模式下運行一個CSP的流程如圖2所示。

4 節點通信實現
4.1 通信機制
CC2530是通過寄存器TXFIFO和RXFIFO來實現數據收發的。發送數據時,往TXFIFO中寫入數據,無線電模塊自動添加PHY層同步頭和FCS,通過選通命令STXON或STXONCCA發送數據;數據接收完成時,產生RXPKTDONE中斷,在中斷服務程序中通過讀取RXFIFO即可。
本文根據IEEE 802.15.4協議,定義了精簡的MAC層幀格式,如圖3所示。

幀控制域占一個字節。其中,幀類型占2位,00表示同步幀,01表示數據幀,10表示確認幀,11表示命令幀;確認請求占1位,1表示接收設備在接收到數據幀或命令幀時如果判斷其為有效幀就要向發送設備反饋一個確認幀,0表示該接收設備不需要反饋確認幀。幀序號唯一標識各個幀,用于確認幀和數據幀或命令幀的匹配。目標地址和源地址分別用2個字節表示。由于IEEE 802.15.4規范中定義了物理服務數據單元(PSDU)的最大長度為127字節,而其中的8字節已經被使用,因此有效負載(pay-load)的字節長度為1~119字節。
數據發送有3種模式:非CSMA-CA、時隙CSMA-CA和非時隙CSMA-CA。待數據按上述格式寫入TXFIFC)后,執行“RFST—ISTXON”啟動CSP程序。
以下為基于時隙CSMA-CA模式的CSP程序代碼:

4.2 實驗結果
本網絡是由一個中心節點及10個終端節點組成的星狀網。硬件采用由CC2530制作的傳感器板,測試數據由片內自帶的溫度傳感器提供。
如圖4所示,中心節點采用輪詢的方式采集終端數據,通過串口顯示到上位機軟件上。其中,a代表中心節點發送的命令幀;b為上傳的數據幀;c為中心節點發送的確認幀。終端節點采用非時隙CSMA-CA的方式發送數據。

圖5所示測試結果表明:在節點通信半徑內,當輪詢時間大于等于15.36ms時,節點間通信未丟失任何數據包,且沒有誤碼現象。隨著節點距離增大,節點丟包率逐漸上升。周期時間隨著節點的增多而增大,延時積累明顯。

5 結語
本文設計了基于CC2530的無線傳感器網絡節點,并詳細介紹了兩個節點之間點對點通信的實現,同時對CSMA-CA算法進行了詳細說明。實驗結果表明節點能夠正常通信。
本文為進一步的上層通信協議設計提供了基礎,具有一定的參考價值。