- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于MSP430和NRF2401的WSN节点设计
2 软件设计
软件开发以IAR Workbench V3.1为平台,采用C语言编写,软件编程的基本思路是:先对SPI、nRF2401控制端口初始化;使能SPI、UART端口,使能ADC,对nRF2401芯片初始化;开启接收机后,就可以运行任务程序了,以实现接收或发送数据,对nRF2401操作流程如下:
nRF2401有4种工作模式:收发模式、配置模式、空闲模式和关机模式。nRF2401的工作模式由PWR_UP、CE、TX_EN和CS三个引脚决定。对nRF2401的操作主要是配置其工作方式和读写数据,所有配置命令字和数据都是通过同步串行口的CLK和DATA两个引脚完成的。要将nRF2401设置于ShockBurstTM方式,首先使PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401,CLK下降沿锁定数据。配置命令字发送完后,在CS的下降沿按新配置字的设置开始工作。使用nRF2401进行发送数据时,采用以下的步骤:1)CE置高,使nRF2401开始工作;2)逐位写入接收机的地址;3)逐位写入要传送的数据;4)CE置低,激发nRF2401进行ShockBurstTM发射。nRF2401的ShockBurstTM发射过程是:给射频前端供电,射频数据打包(加字头、CRC校验码),高速发射数据包,发射完成,nRF2401进入空闲状态。nRF2401的接口模块引脚包括CE、DR1、CLK1和DATA(接收通道1),接收端依照以下流程进行数的接收:1)配置本机地址和即将接收的数据包大小;2)进入接收状态,CE置高;3)200μs后,nRF2401进入监视状态,等待数据包的到来;4)当接收到正确的数据包时,nRF2401自动除去字头、地址和CRC;5)nRF2401通过把DR1(可用作中断信号)置高来通知微控制器;6)微控制器把数据从nRF2401逐位移出;7)所有数据移完,nRF2401把DR1置低,此时如果CE为高,则等待下一个数据包,如果CE为低,开始其他工作流程。
程序中用到的部分代码如下:
/*invariable*/
unsigned char Comm_ok_flag;/*主从机连接OK标志*/
unsigned char DR1_flag;/*DR1为高标志*/
unsigned char Nrf_on_flag;/*2401开关标志*/
unsigned char Shake_hand_flag;//握手成功标志
unsigned char Config_word[W_CFGWORD];/*存储配置字15字节*/
unsigned char Shock_word[W_SHOCKWORD];/*存储一帧协议数据30字节*/
unsigned char Rxdata_buffer[W_PAYLOAD];/*存储接收数据按协议26字节*/
unsigned char Txdata_buffer[N_DATA];/*存储发送数据暂定10字节*/
unsigned char Order;/*提取数据帧功能码*/
unsigned char Frq_set_value;/*频道设置数据*/
/*function*/
void Buildspiword(void);
void Spinrf2401(void);
void Shockburst(void);
void Receiveshock(void);
void Dospiclk(void);
void Nrf2401_on(void);
void Nrf2401_off(void);
void Set_config(void);
void Set_standby(void);
void Set_tx(void);
void Set_rx(void);
void Clr_Payload(void);
void Soft_delay_01ms(int iUs);
void Set_address(void);
void Clr_shock_word(void);
考虑到点对多点通信的可靠性,数据在底层无线传输中需要增加必要的协议规范。设计中对有效数据进行打包,格式为:前导码、地址、有效数据载荷、校验码。
3 结束语
基于MSP430和NRF2401的无线传感器网络节点设计在实验中表现出比较好的效果,可以实现监测区域内信号的采集传输与处理。但是由于射频芯片本身的原因,传输距离会受到障碍物的影响和设置频率而有变化,这些问题都有待更深入的研究。随着无线网络技术的成熟无线传感器网络的应用必将广泛深入环境监测、目标追踪、工业自动化等各领域。
作者:刘志平 河南理工大学 来源:国外电子测量技术
上一篇:三种3G技术的优势分别是什么?
下一篇:M2M企业发展搭乘的快车