陳寶芬,王 喆
(內(nèi)蒙古化工職業(yè)學(xué)院,內(nèi)蒙古 呼和浩特 010070)
對于無線節(jié)點的設(shè)計而言,除了必不可少的硬件設(shè)計,還有一個重要的部分,那就是軟件設(shè)計,兩者相輔相成,相互依托,都在無線節(jié)點的設(shè)計中扮演了不可或缺的角色.本文針對“高校管網(wǎng)系統(tǒng)無線監(jiān)測網(wǎng)絡(luò)設(shè)計”這一課題的總體設(shè)計要求,從軟件開發(fā)及調(diào)試環(huán)境選擇到具體程序設(shè)計著手,對網(wǎng)絡(luò)中關(guān)鍵部分無線節(jié)點的軟件設(shè)計進行詳細的論述,并列舉了初始化程序的編寫.
MPLAB ICD2是Microchip公司生產(chǎn)的PIC系列單片機在線調(diào)試器.通過ICD2接口與目標(biāo)節(jié)點板相連,燒錄代碼到目標(biāo)單片機中并進行設(shè)置斷點和運行.
MPLAB IDE集成開發(fā)環(huán)境如圖1所示.
圖1 MPLAB IDE集成開發(fā)環(huán)境
MPLAB IDE開發(fā)工具源自美國Microchip公司,是Mcirochip公司推出的針對PIC系列單片機的軟件開發(fā)工具,MPLAB IDE包括MPLAB IDE集成開發(fā)環(huán)境和MPLAB C18編譯器.支持PIC系列單片機,可自動配置啟動代碼,強大的Simulation設(shè)備模擬,性能分析等功能.其中MPLAB C18編譯器是使用于PIC系列單片機的獨立并被優(yōu)化的ANSI C編譯器.此編譯器是一個32位Windows平臺應(yīng)用程序,與Microchip公司的MPLAB IDE完全兼容,它允許使用MPLAB ICE在線仿真器、MPLAB ICD2在線調(diào)試器或MPLAB SIM軟件模擬器進行源代碼調(diào)試.
MPLAB C18編譯器有以下特點:
(1)能集成到MPLAB IDE,便于進行項目管理和源代碼調(diào)試.
(2)MPLAB C18編譯器與由MPASM編譯器生成的目標(biāo)模塊兼容,允許在同一個項目中自由地進行匯編語言和C語言混合編程.
(3)對外部存儲器的讀/寫訪問是透明的.
(4)具有多級優(yōu)化的高效代碼生成引擎.1.3 ZENA無線網(wǎng)絡(luò)分析儀
ZENA無線網(wǎng)絡(luò)分析儀硬件如圖2所示,該分析儀通過USB電纜與PC機相連.在PC機上安裝ZENA3.0軟件后,便可以使用ZENA網(wǎng)絡(luò)分析儀幫助進行ZigBee協(xié)議應(yīng)用開發(fā).ZENA網(wǎng)絡(luò)分析儀軟件主窗口如圖3所示.
圖2 ZENA網(wǎng)絡(luò)分析儀的PCB
圖3 ZENA3.0界面
ZENA網(wǎng)絡(luò)分析儀主要功能:
(1)進行ZigBee協(xié)議和MiWi協(xié)議堆棧配置
zigbee.def:堆棧配置基本定義
myZigBee.c:寄存器初始化
zLink.lkr:工程鏈接腳本
(2)進行無線網(wǎng)絡(luò)通信狀況監(jiān)視
監(jiān)視網(wǎng)絡(luò)的拓撲結(jié)構(gòu)
監(jiān)視網(wǎng)絡(luò)通信數(shù)據(jù)傳輸狀況
本課題設(shè)計的無線節(jié)點共有3個按鍵,可根據(jù)需要進行自定義.各個按鍵功能定義如下:
MCLR按鍵:復(fù)位按鍵
RB5按鍵:轉(zhuǎn)換數(shù)據(jù)按鍵,終端檢測到按下協(xié)調(diào)器該鍵,則開始轉(zhuǎn)換數(shù)據(jù)以待發(fā)送.
RB4按鍵:未定義具體功能,可以根據(jù)需要定義該按鍵功能.
圖4和圖5分別為終端設(shè)備和協(xié)調(diào)器的主程序流程圖.協(xié)調(diào)器上電初始化之后,便開始啟動一個新網(wǎng)絡(luò),建立網(wǎng)絡(luò)成功之后,便允許終端節(jié)點加入.從節(jié)點上電之后開始查找存在的網(wǎng)絡(luò),并請求加入網(wǎng)絡(luò).確定成功加入網(wǎng)絡(luò)之后,開始檢測協(xié)調(diào)器的RB5鍵是否被按下,若按下,則開始轉(zhuǎn)換數(shù)據(jù),轉(zhuǎn)換后的數(shù)據(jù)根據(jù)非時隙CSMA/CA機制等待機會發(fā)送至協(xié)調(diào)器.協(xié)調(diào)器檢測空間中的ZigBee協(xié)議數(shù)據(jù),如果有數(shù)據(jù)則開始接收,接收到的數(shù)據(jù)存儲在協(xié)調(diào)器的FIFOs中,然后轉(zhuǎn)存到PC機中.協(xié)調(diào)器端發(fā)送數(shù)據(jù)到終端設(shè)備采用廣播的方式,只要在協(xié)調(diào)器輻射半徑內(nèi)的終端設(shè)備均可以接收數(shù)據(jù).
由于篇幅有限,下面僅列舉本課題軟件設(shè)計中對初始化程序的編寫如下:
void MRF24J40Init(void)
{
BYTE i;
WORD j;
/*place the device in hardware reset*/
圖4 終端程序流程圖
圖5 協(xié)調(diào)器程序流程
RESETn=0;
for(j=0;j<(WORD)300;j++){}
/*remove the device from hardware reset*/
RESETn=1;
for(j=0;j<(WORD)300;j++){}
/*reset the RF module*/
SetShortRAMAddr(RFCTL,0x04);
/*remove the RF module from reset*/
SetShortRAMAddr(RFCTL,0x00);
/*flush the RX fifo*/
SetShortRAMAddr(WRITE_RXFLUSH,0x01);
/*Program the short MAC Address,0xffff*/
SetShortRAMAddr(SADRL,0xFF);
SetShortRAMAddr(SADRH,0xFF);
SetShortRAMAddr(PANIDL,0xFF);
SetShortRAMAddr(PANIDH,0xFF);
/*Program Long MAC Address*/
for(i=0;i<(BYTE)8;i++)
{
SetShortRAMAddr(EADR0+i*2,myLongAddress[i]);
}
/*enable the RF-PLL*/
SetLongRAMAddr(RFCTRL2,0x80);
/*set TX for max output power*/
SetLongRAMAddr(RFCTRL3,0x00);
/*enabled TX filter control*/
SetLongRAMAddr(RFCTRL6,0x80);
SetLongRAMAddr(RFCTRL8,0b00010000);
/*Program CCA mode using RSSI*/
SetShortRAMAddr(BBREG2,0x78);
/*Enable the packet RSSI*/
SetShortRAMAddr(BBREG6,0x40);
/*Program CCA,RSSI threshold values*/
SetShortRAMAddr(RSSITHCCA,0x00);
SetLongRAMAddr(RFCTRL0,0x00);//channel 11
SetShortRAMAddr(RFCTL,0x04);//reset the RF module with new settings
SetShortRAMAddr(RFCTL,0x00);
}
綜述詳細介紹了無線節(jié)點的軟件設(shè)計.節(jié)點的軟件設(shè)計主要包括開發(fā)調(diào)試工具選擇和程序編寫兩大部分,無線節(jié)點的軟件設(shè)計比較難,尤其其中的程序編寫較復(fù)雜,需要豐富的軟件設(shè)計經(jīng)驗.
〔1〕M icrochip Technology Inc.MPLAB ICD 2 在線調(diào)試器用戶指南[Z].2004.
〔2〕李文仲,段朝玉.PIC單片機與ZigBee無線網(wǎng)絡(luò)實戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2007.
〔3〕宋建華.基于ARM的無線傳感節(jié)點設(shè)計[D].內(nèi)蒙古大學(xué),2008.1-4.
〔4〕李朝青.無線發(fā)送接收芯片及其數(shù)據(jù)通信技術(shù)選編(1)[M].北京:北京航空航天大學(xué)出版,2003.
〔5〕M icrochip Technology Inc.MRF24J40 Data Sheet[Z].2008.