基于CC2420的Zigbee無(wú)線網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要:Zigbee是專(zhuān)為低速率傳感器和控制網(wǎng)絡(luò)設(shè)計(jì)的無(wú)線網(wǎng)絡(luò)協(xié)議。本文介紹了基于IEEE 802.15.4的無(wú)線網(wǎng)絡(luò)協(xié)議Zigbee的主要特征和應(yīng)用領(lǐng)域,并且根據(jù)其特點(diǎn),利用單片機(jī)和Chipcon公司的CC2420實(shí)現(xiàn)了基于Zigbee的無(wú)線網(wǎng)絡(luò)應(yīng)用。
關(guān)鍵詞:IEEE 802.15.4 無(wú)線網(wǎng)絡(luò)協(xié)議 Zigbee CC2420
Zigbee是為低速率控制網(wǎng)絡(luò)設(shè)計(jì)的標(biāo)準(zhǔn)無(wú)線網(wǎng)絡(luò)協(xié)議。Zigbee協(xié)議的一些應(yīng)用包括建筑自動(dòng)化網(wǎng)絡(luò)、建筑安防系統(tǒng)、工業(yè)控制網(wǎng)絡(luò)、遠(yuǎn)程抄表以及PC外設(shè)。與其他無(wú)線協(xié)議相比,Zigbee無(wú)線協(xié)議提供了低復(fù)雜性、縮減的資源要求,最重要的是它提供了一組標(biāo)準(zhǔn)的規(guī)范,并提供了三個(gè)工作頻帶,以及一些網(wǎng)絡(luò)配置和可選的安全功能。
1 Zigbee協(xié)議概述
1.1 IEEE 802.15.4
Zigbee協(xié)議使用IEEE 802.15.4規(guī)范作為介質(zhì)訪問(wèn)層(MAC)和物理層(PHY)。IEEE 802.15.4總共定義了3個(gè)頻帶:2.4GHz、915MHz和868MHz。每個(gè)頻帶提供固定數(shù)量的信道。例如,2.4GHz頻帶有16個(gè)信道(信道11-26)、915MHz頻帶提供10個(gè)信道(信道1-10)而868MHz頻帶提供1個(gè)信道(信道0)。
協(xié)議的比特率由所選擇的工作頻率決定。2.4GHz頻帶提供的數(shù)據(jù)速率為250kpbs,915MHz頻帶提供的數(shù)據(jù)速率為20kbps。由于數(shù)據(jù)包開(kāi)銷(xiāo)和處理延遲,實(shí)際的數(shù)據(jù)吞吐量會(huì)小于規(guī)定的比特率。
IEEE 802.15.4 MAC數(shù)據(jù)包的最大長(zhǎng)度為127字節(jié)。每個(gè)數(shù)據(jù)包都由頭字節(jié)和16位CRC值組成。16位CRC值驗(yàn)證幀的完整性。此外,IEEE 802.15.4還可以選擇使用應(yīng)答數(shù)據(jù)傳輸機(jī)制。使用這種方法,所有特殊ACK標(biāo)志位置1的幀均會(huì)被它們的接收器應(yīng)答。這就可以確定幀實(shí)際上已經(jīng)被傳遞了。如果發(fā)送幀的時(shí)候置位了ACK 標(biāo)志位而且在一定的超時(shí)期限內(nèi)沒(méi)有收到應(yīng)答,發(fā)送器將重復(fù)進(jìn)行固定次數(shù)的發(fā)送,如仍無(wú)應(yīng)答就宣布發(fā)生錯(cuò)誤。注意接收到應(yīng)答僅僅表示幀被MAC層正確接收,而不表示幀被正確處理,這是非常重要的。接收節(jié)點(diǎn)的MAC 層可能正確地接收并應(yīng)答了一個(gè)幀,但是由于缺乏處理資源,該幀可能被上層丟棄。因此,很多上層和應(yīng)用程序要求其他的應(yīng)答響應(yīng)。
1.2 網(wǎng)絡(luò)配置
Zigbee無(wú)線網(wǎng)絡(luò)可采用多種類(lèi)型的配置。
星型網(wǎng)絡(luò)配置由一個(gè)協(xié)調(diào)器節(jié)點(diǎn)(主設(shè)備)和一個(gè)或多個(gè)終端設(shè)備(從設(shè)備)組成。協(xié)調(diào)器是實(shí)現(xiàn)了一組很多Zigbee服務(wù)的一種特殊的全功能設(shè)備(FFD)。終端設(shè)備可能是FFD或簡(jiǎn)化功能設(shè)備(RFD)。RFD是最小而且最簡(jiǎn)單的Zigbee節(jié)點(diǎn)。它只實(shí)現(xiàn)了一組最小的Zigbee服務(wù)。在星型網(wǎng)絡(luò)中,所有的終端設(shè)備都只與協(xié)調(diào)器通信。如果某個(gè)終端設(shè)備需要傳輸數(shù)據(jù)到另一個(gè)終端設(shè)備,它會(huì)把數(shù)據(jù)發(fā)送給協(xié)調(diào)器,然后協(xié)調(diào)器依次將數(shù)據(jù)轉(zhuǎn)發(fā)到目標(biāo)接收器終端設(shè)備。星型拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
群集網(wǎng)絡(luò)配置也是Zigbee使用的一種網(wǎng)絡(luò)配置結(jié)構(gòu)。在群集網(wǎng)絡(luò)中,終端設(shè)備既可以選擇和協(xié)調(diào)器通信,也可以和路由器(router)通信。路由器有兩個(gè)功能:一是增加網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù)量,二是擴(kuò)大網(wǎng)絡(luò)的物理范圍。有了路由器后,終端設(shè)備就不必安裝在協(xié)調(diào)器的有效射頻范圍內(nèi)。群集網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 群集網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
和任何網(wǎng)絡(luò)一樣,Zigbee網(wǎng)絡(luò)也是多點(diǎn)接入網(wǎng)絡(luò),這意味著網(wǎng)絡(luò)中的所有節(jié)點(diǎn)對(duì)通信介質(zhì)的訪問(wèn)是同等的。有兩種類(lèi)型的多點(diǎn)接入機(jī)制。在沒(méi)有使能信標(biāo)的網(wǎng)絡(luò)中,只有信道是空閑的,在任何時(shí)候都允許所有節(jié)點(diǎn)發(fā)送。在使能了信標(biāo)的網(wǎng)絡(luò)中,僅允許節(jié)點(diǎn)在預(yù)定義的時(shí)隙內(nèi)進(jìn)行發(fā)送。協(xié)調(diào)器會(huì)定期以一個(gè)標(biāo)知為信標(biāo)幀的超級(jí)幀開(kāi)始發(fā)送,并且希望網(wǎng)絡(luò)中的所有節(jié)點(diǎn)與此幀同步。在這個(gè)超級(jí)幀中為每個(gè)節(jié)點(diǎn)分配了一個(gè)特定的時(shí)隙,在該時(shí)隙內(nèi)允許節(jié)點(diǎn)發(fā)送和接收數(shù)據(jù)。超級(jí)幀可能還含有一個(gè)公共時(shí)隙,在此時(shí)隙內(nèi)所有節(jié)點(diǎn)競(jìng)爭(zhēng)接入信道。
1.3 數(shù)據(jù)傳輸機(jī)制
傳輸數(shù)據(jù)到終端設(shè)備和從終端設(shè)備傳輸數(shù)據(jù)的確切機(jī)制隨網(wǎng)絡(luò)類(lèi)型的不同而有所不同。在無(wú)信標(biāo)的星型網(wǎng)絡(luò)中,當(dāng)終端設(shè)備想要發(fā)送數(shù)據(jù)幀時(shí),它只需等待信道變?yōu)榭臻e。在檢測(cè)到空閑信道條件時(shí),它將幀發(fā)送到協(xié)調(diào)器。如果協(xié)調(diào)器想要將此數(shù)據(jù)發(fā)送到終端設(shè)備,它會(huì)將數(shù)據(jù)幀保存在其發(fā)送緩沖器中,直到目標(biāo)終端設(shè)備明確地來(lái)查詢(xún)?cè)摂?shù)據(jù)為止。此方法確保終端設(shè)備的接收器是被開(kāi)啟的,而且可從協(xié)調(diào)器接收數(shù)據(jù)。
在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)必須一直保持它們的接收器為開(kāi)啟狀態(tài)或者同意在一個(gè)時(shí)間段內(nèi)開(kāi)啟它們的接收器。這將允許節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀并確保數(shù)據(jù)幀會(huì)被其它節(jié)點(diǎn)接收。
2 RF收發(fā)芯片CC2420
CC2420是Chipcon公司推出的首款符合2.4GHz IEEE 802.15.4標(biāo)準(zhǔn)的射頻收發(fā)器。該器件是第一款適用于Zigbee產(chǎn)品的RF器件。它基于Chipcon公司的SmartRF 03技術(shù),以0.18um CMOS工藝制成,只需極少外部元器件,性能穩(wěn)定且功耗極低。CC2420的選擇性和敏感性指數(shù)超過(guò)了IEEE 802.15.4標(biāo)準(zhǔn)的要求,可確保短距離通信的有效性和可靠性。利用此芯片開(kāi)發(fā)的無(wú)線通信設(shè)備支持?jǐn)?shù)據(jù)傳輸率高達(dá)250kbps,可以實(shí)現(xiàn)多點(diǎn)對(duì)多點(diǎn)的快速組網(wǎng)。
CC2420只需要極少的外圍元器件,其典型應(yīng)用電路如圖3所示。
圖3 CC2420典型應(yīng)用電路圖
它的外圍電路包括晶振時(shí)鐘電路、射頻輸入/輸出匹配電路和微控制器接口電路三個(gè)部分。芯片本振信號(hào)既可由外部有源晶體提供,也可由內(nèi)部電路提供。由內(nèi)部電路提供時(shí)需外加晶體振蕩器和兩個(gè)負(fù)載電容,電容的大小取決于晶體的頻率及輸入容抗等參數(shù)。
射頻輸入/輸出匹配電路主要用來(lái)匹配芯片的輸入輸出阻抗,使其輸入輸出阻抗為50Ω,同時(shí)為芯片內(nèi)部的PA及LAN提供直流偏置。CC2420可以通過(guò)4線SPI總線(SI、SO、SCLK、CSn)設(shè)置芯片的工作模式,并實(shí)現(xiàn)讀/寫(xiě)緩存數(shù)據(jù),讀/寫(xiě)狀態(tài)寄存器等。通過(guò)控制FIFO和FIFOP管腳接口的狀態(tài)可設(shè)置發(fā)射/接收緩存器。注意:在SPI總線接口上進(jìn)行的地址和數(shù)據(jù)傳輸大多是MSB優(yōu)先的。CC2420片內(nèi)有33個(gè)16比特狀態(tài)設(shè)置寄存器,在每個(gè)寄存器的讀/寫(xiě)周期中,SI總線上共有24比特?cái)?shù)據(jù),分別為:1比特RAM/寄存器選擇位(0:寄存器,1:RAM),1比特讀/寫(xiě)控制位(0:寫(xiě),1:讀),6比特地址選擇位、16比特?cái)?shù)據(jù)位。在數(shù)據(jù)傳輸過(guò)程中CSn必須始終保持低電平。另外,通過(guò)CCA管腳狀態(tài)的設(shè)置可以控制清除通道估計(jì),通過(guò)SFD管腳狀態(tài)的設(shè)置可以控制時(shí)鐘/定時(shí)信息的輸入。這些接口必須與微處理器的相應(yīng)管腳相連來(lái)實(shí)現(xiàn)系統(tǒng)射頻功能的控制與管理。
如前所述,CC2420是一款符合IEEE802.15.4標(biāo)準(zhǔn)的RF收發(fā)芯片。CC2420硬件支持一部分IEEE802.15.4數(shù)據(jù)幀格式。數(shù)據(jù)幀格式示如表1所示。
表1 數(shù)據(jù)通信幀格式
同步頭包括前導(dǎo)序列和開(kāi)始幀分隔符。在CC2420中,前導(dǎo)序列長(zhǎng)度和開(kāi)始幀分隔符是可以配置的。默認(rèn)值4字節(jié)和1字節(jié)是符合IEEE802.15.4協(xié)議的。物理頭為1字節(jié),幀控制和序列號(hào)分別為2字節(jié)和1字節(jié),地址包括個(gè)人區(qū)域網(wǎng)身份識(shí)別號(hào)碼、目的地址和源地址共6字節(jié),待發(fā)數(shù)據(jù)段長(zhǎng)度為幀長(zhǎng)度減去地址和幀校驗(yàn)序列。當(dāng)MODEMCTRL0.AUTOCRC控制位置位時(shí),這個(gè)幀校驗(yàn)序列自動(dòng)產(chǎn)生2字節(jié),并由CC2420硬件自動(dòng)插入。
3 配置寄存器
實(shí)際系統(tǒng)需要做以下配置:
(1)CC2420內(nèi)部寄存器的設(shè)置:CC2420內(nèi)部有33個(gè)16位結(jié)構(gòu)寄存器和15個(gè)命令脈沖寄存器以及2個(gè)8位訪問(wèn)獨(dú)立的發(fā)射和接收緩沖器的RXFIFO、TXFIFO寄存器。這些寄存器在芯片復(fù)位時(shí)都已設(shè)置了一些初始值。例如:MDMCTRL0.AUTOCRC自動(dòng)循環(huán)冗余校驗(yàn);IOCFG0.FIFOP_THR設(shè)置RXFIFO緩沖器中字節(jié)門(mén)限值;BATTMON.BATTMON_E電池監(jiān)控使能;TXCTRL.PA_LEVEL輸出功率編程(輸出功率單位為dBm);IN0.XOSC16M_BYPASS使能外部晶體振蕩器等。實(shí)際使用時(shí),應(yīng)根據(jù)需要對(duì)初始值進(jìn)行修改。
(2)初始化:定義信息包傳輸?shù)幕靖袷?;定義單片機(jī)和CC2420的端口;打開(kāi)電壓調(diào)節(jié)器,復(fù)位CC2420,開(kāi)啟晶體振蕩器,寫(xiě)入所有必須的寄存器和地址識(shí)別(為自動(dòng)地址識(shí)別準(zhǔn)備),注意晶體振蕩器應(yīng)該一直處于工作狀態(tài)。寄存器設(shè)置如下:SXOSCON打開(kāi)晶體振蕩器;MDMCTRL0=0x0AF2打開(kāi)自動(dòng)應(yīng)答;MDMCTRL1=0x0500;設(shè)置關(guān)聯(lián)門(mén)限值為20;IOCFG0=0x007F設(shè)置FIFOP門(mén)限至最大值128;SECCTRL0=0x01C4關(guān)閉安全使能。
(3)緩沖發(fā)送模式:使用IEEE802.15.4媒介訪問(wèn)控制層數(shù)字格式和短地址發(fā)送一個(gè)信息包。使能發(fā)送,當(dāng)信道評(píng)估顯示信道空閑時(shí),使能校準(zhǔn)然后發(fā)送;當(dāng)沒(méi)有字節(jié)寫(xiě)入,TXFIFO緩沖器發(fā)出下溢指示狀態(tài)位和下溢脈沖,發(fā)送自動(dòng)停止。CTRL1.TX_MODE=0;STXON使能發(fā)送;STXONCCA信道估計(jì)顯示信道空閑,使能校準(zhǔn)然后發(fā)送;SFLUSHTX當(dāng)沒(méi)有字節(jié)寫(xiě)入,TXFIFO緩沖器發(fā)出下溢脈沖;TXCTL=0xA0FF發(fā)射最大電流為1.72mA。
(4)緩沖接收模式:先使能信息包接收和FIFOP中斷,通過(guò)FIFOP中斷服務(wù)程序接收信息包,其中RXFIFO緩沖器溢出和不合法信息包格式都有中斷服務(wù)程序處理,信息包接收采用CC2420自動(dòng)應(yīng)答。寄存器設(shè)置如下:DMCTRL1.RX_MODE=0;SRXON使能接收;SFLUSHRXRXFIFO緩沖器溢出,復(fù)位解調(diào)器;RXCTRL0=0x12E5低噪聲放大器增益中等。
4 結(jié)論
筆者在實(shí)現(xiàn)此系統(tǒng)的過(guò)程中發(fā)現(xiàn),無(wú)線網(wǎng)絡(luò)的鏈路層、應(yīng)用層協(xié)議的性能是制約無(wú)線傳感網(wǎng)絡(luò)的關(guān)鍵因素。另外,制作電路板時(shí),應(yīng)采用四層板,外圍器件盡量小(采用0402封裝),耦合電容盡量靠近芯片,以提高系統(tǒng)性能。
參考文獻(xiàn)
[1] 孫利民,李建中,陳渝,朱紅松.無(wú)線傳感器網(wǎng)絡(luò)[M].清華大學(xué)出版社,2005.2.
[2] 牟連佳,牟連泳.無(wú)線傳感網(wǎng)絡(luò)及其在工業(yè)領(lǐng)域應(yīng)用研究.工業(yè)控制計(jì)算機(jī),2005,18(1):3~5
[3] 鄭霖,曾志民,萬(wàn)濟(jì)萍,王建明.基于 IEEE802.15.4 標(biāo)準(zhǔn)的無(wú)線傳感器網(wǎng)絡(luò)[J].傳感器技術(shù),2005.24(7):86-88
[4] IEEE802.15.4: Wireless Medium Access Control(MAC) and Physcial Layer(PHY) specifications for Low-rate Wireless PersonalArea Networks(LR-WPANs)[S].
[5] Chipcon AS SmartRF CC2420 Preliminary Datasheet(rev1.2),2004.6.9.