一種無線傳感器網絡CSMA協議的設計與實現
CSMA協議是網絡中運用得最為廣泛的競爭協議,因此無線傳感器網絡的MAC層大多使用CSMA機制來提供競爭信道的功能。隨著IEEE 802.15.4標準的制定,各射頻芯片廠家也紛紛推出了性能更好、功能更強的射頻芯片。TI公司(原Chipcon)推出CC2420來替代原來無線傳感器網絡使用最多的射頻芯片CC1000。由于各射頻芯片特性功能各不相同,為了使CSMA協議達到更好的性能,根據射頻芯片的具體特性來重新優化設計CSMA機制也就變得很有必要。
本文使用TI公司的MSP4301611超低功耗MCU,以及CC2420射頻芯片作為硬件實驗平臺,充分利用CC2420部分IEEE 802.15.4協議MAC封裝的特性,設計并實現了一個全新的、靈活的CSMA協議。
1 信道監測的設計
實現CSMA協議的最基本的條件就是物理層必須提供可靠、實用的信道監測手段,因此首先要了解射頻芯片的一些特性。
1.1 CC2420的相關特性
CC2420是TI公司推出的2.4 GHz射頻芯片,其硬件封裝支持部分IEEE 802.15.4的MAC層協議規定。CC2420的功能結構如圖1所示,CC2420的數字接口具有自動CRC校驗、自動加密的功能,并維護兩個緩沖區(一個接收FIFO,一個發送FIFO)。數字接口通過SPI通信接口與微處理器相連。CC2420是以數據包為單位的射頻芯片,即必須從微處理器收滿一個數據包,才會發送該數據包。數字接口收滿一整包后,自動添加CRC校驗,并送入調制模塊進行數據調制和整形,最后發送出去。當監測到信道有數據時,將數據經過模/數轉換后送入數字解調器中進行幀同步;如果同步就將數據填入接收緩沖區中,最后填充當前信道內的RSSI(Receive Signal Strength Indicator,接收信號強度指示器)信息。
圖1 CC2420功能結構圖
CC2420提供一個讀取RSSI值的命令,開發者可以調用該命令來得到當前信道的信號強度值,并通過對該值的解析來判定當前信道是空閑還是繁忙。另外,CC2420在接收到數據包時,可以自動在數據包的倒數第二個字節里填充當前接收數據包時的RSSI值。這種特性對于信號強度閾值的更新維護十分有用。
1.2 信道監測的設計
CC2420提供了一項CSMACA的功能,稱為CCA(Clear Channel Assessment,空閑信道評估),它使用一個寄存器來設置閾值。當CC2420收到CCA命令后,就開始采樣RSSI值,只有采樣到的RSSI值小于寄存器中的閾值時才允許發送數據。CCA雖然實現了信道監測的基本功能,但是也有其自身的缺點: 不夠靈活且開放程度不夠,只能進行一次完整的通道監測,并不能設置采樣次數。這就限制了它在其他協議中的使用,例如在LPL(Low Power Listening,低功耗偵聽)協議中,只需要進行一次采樣作為偵聽。另外,它的判定機制并不夠完善,只有一個閾值,因而開發者難以找到合適的閾值。
評論