陈宝芬,王 喆
(内蒙古化工职业学院,内蒙古 呼和浩特 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.