陳寶芬,王 喆
(內蒙古化工職業學院,內蒙古 呼和浩特 010070)
對于無線節點的設計而言,除了必不可少的硬件設計,還有一個重要的部分,那就是軟件設計,兩者相輔相成,相互依托,都在無線節點的設計中扮演了不可或缺的角色.本文針對“高校管網系統無線監測網絡設計”這一課題的總體設計要求,從軟件開發及調試環境選擇到具體程序設計著手,對網絡中關鍵部分無線節點的軟件設計進行詳細的論述,并列舉了初始化程序的編寫.
MPLAB ICD2是Microchip公司生產的PIC系列單片機在線調試器.通過ICD2接口與目標節點板相連,燒錄代碼到目標單片機中并進行設置斷點和運行.
MPLAB IDE集成開發環境如圖1所示.

圖1 MPLAB IDE集成開發環境
MPLAB IDE開發工具源自美國Microchip公司,是Mcirochip公司推出的針對PIC系列單片機的軟件開發工具,MPLAB IDE包括MPLAB IDE集成開發環境和MPLAB C18編譯器.支持PIC系列單片機,可自動配置啟動代碼,強大的Simulation設備模擬,性能分析等功能.其中MPLAB C18編譯器是使用于PIC系列單片機的獨立并被優化的ANSI C編譯器.此編譯器是一個32位Windows平臺應用程序,與Microchip公司的MPLAB IDE完全兼容,它允許使用MPLAB ICE在線仿真器、MPLAB ICD2在線調試器或MPLAB SIM軟件模擬器進行源代碼調試.
MPLAB C18編譯器有以下特點:
(1)能集成到MPLAB IDE,便于進行項目管理和源代碼調試.
(2)MPLAB C18編譯器與由MPASM編譯器生成的目標模塊兼容,允許在同一個項目中自由地進行匯編語言和C語言混合編程.
(3)對外部存儲器的讀/寫訪問是透明的.
(4)具有多級優化的高效代碼生成引擎.1.3 ZENA無線網絡分析儀
ZENA無線網絡分析儀硬件如圖2所示,該分析儀通過USB電纜與PC機相連.在PC機上安裝ZENA3.0軟件后,便可以使用ZENA網絡分析儀幫助進行ZigBee協議應用開發.ZENA網絡分析儀軟件主窗口如圖3所示.

圖2 ZENA網絡分析儀的PCB

圖3 ZENA3.0界面
ZENA網絡分析儀主要功能:
(1)進行ZigBee協議和MiWi協議堆棧配置
zigbee.def:堆棧配置基本定義
myZigBee.c:寄存器初始化
zLink.lkr:工程鏈接腳本
(2)進行無線網絡通信狀況監視
監視網絡的拓撲結構
監視網絡通信數據傳輸狀況
本課題設計的無線節點共有3個按鍵,可根據需要進行自定義.各個按鍵功能定義如下:
MCLR按鍵:復位按鍵
RB5按鍵:轉換數據按鍵,終端檢測到按下協調器該鍵,則開始轉換數據以待發送.
RB4按鍵:未定義具體功能,可以根據需要定義該按鍵功能.
圖4和圖5分別為終端設備和協調器的主程序流程圖.協調器上電初始化之后,便開始啟動一個新網絡,建立網絡成功之后,便允許終端節點加入.從節點上電之后開始查找存在的網絡,并請求加入網絡.確定成功加入網絡之后,開始檢測協調器的RB5鍵是否被按下,若按下,則開始轉換數據,轉換后的數據根據非時隙CSMA/CA機制等待機會發送至協調器.協調器檢測空間中的ZigBee協議數據,如果有數據則開始接收,接收到的數據存儲在協調器的FIFOs中,然后轉存到PC機中.協調器端發送數據到終端設備采用廣播的方式,只要在協調器輻射半徑內的終端設備均可以接收數據.
由于篇幅有限,下面僅列舉本課題軟件設計中對初始化程序的編寫如下:
void MRF24J40Init(void)
{
BYTE i;
WORD j;
/*place the device in hardware reset*/

圖4 終端程序流程圖

圖5 協調器程序流程
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);
}
綜述詳細介紹了無線節點的軟件設計.節點的軟件設計主要包括開發調試工具選擇和程序編寫兩大部分,無線節點的軟件設計比較難,尤其其中的程序編寫較復雜,需要豐富的軟件設計經驗.
〔1〕M icrochip Technology Inc.MPLAB ICD 2 在線調試器用戶指南[Z].2004.
〔2〕李文仲,段朝玉.PIC單片機與ZigBee無線網絡實戰[M].北京:北京航空航天大學出版社,2007.
〔3〕宋建華.基于ARM的無線傳感節點設計[D].內蒙古大學,2008.1-4.
〔4〕李朝青.無線發送接收芯片及其數據通信技術選編(1)[M].北京:北京航空航天大學出版,2003.
〔5〕M icrochip Technology Inc.MRF24J40 Data Sheet[Z].2008.