2.3 数据传输模块的选择
数据传输模块采用NewMsg_RF905SE模块,该模块采用挪威NorDIC公司推出的单片射频收发器nRF905芯片开发而成。NewMsg RF905单片无线收发器工作电压为1.9~3.6 V,工作在433/868/915 MHz的ISM频段,最大数据速率为100 Kb/s。芯片内部由1个完全集成的频率调制器、1个带解调器的接收器、1个功率放大器、1个晶体振荡器和1个调节器组成。ShockBurst工作模式的特点是自动产生前导码和CRC可以很容易通过SPI接口进行编程配置电流消耗很低,在发射功率为+10 dBm时,发射电流为30 mA接收电流为12.5 mA。进入POWERDOWN模式可以很容易实现节电。nRF905是单工工作方式,且在待机模式、接收模式、发送模式之间切换需要延时,所以在无线通信过程中,通信软件应该有合理的时序。表1为nRF905的工作模式及相应功能。
3 系统的软件设计
系统软件选用德国Keil公司推出的Cx51编译器,在nVision 2集成开发环境下完成从源程序编辑、编译调试,直到生成最终可执行文件代码的全部过程。该系统的重点是控制nRF905的程序设计。首先应对nRF905进行初始配置,配置完成后按需要编写用户数据的发送和接收程序。
3.1 初始化配置
初始化配置分为以下3个部分:
(1)编写SPIWRITE和SPIREAD子函数,即通过软件为单片机配置SPI功能。
(2)初始化nRF905的射频配置寄存器。这些寄存器中有很多信息,必须根据实际情况进行配置。设计中nRF905外接16 MHz晶体,XOF应配置为01,PA2PWB为发射功率,RX2 RED2 PWB为接收灵敏度,可根据需要配置。另外还有发送地址、接收地址、发送数据和接收数据的长度,可根据实际应用配置。
(3)配置nRF905的发送地址,最多4 B发送端的发送地址应与接收端设备的接收地址相同。在实际工作中,nRF905可以自动滤除地址不相同的数据,只有地址匹配且校验正确的数据才会被接收,并存储在接收数据寄存器中。
3.2 发送数据
nRF905发送数据前,通过条用SPI写函数,在待机模式下先把待发数据填进发送数据寄存器。然后把nRF905的TRX_CE、TX_EN引脚都置为高电平,数据就会自动通过天线发送出去。为了数据可靠地传输,将射频配置寄存器中的自动重发位(AUTO_RE_TRAN)设为有效,这样在TRX_ CE被置高的时间内数据一直在重复不断的发送。程序中设计延时500 ms,之后拉低TRX_CE引脚,回到待机模式。
3.3 接收数据
STC89C52RC把nRF905的TRX_CE引脚置为高电平,TX_EN引脚置为低电平后,即开始接收数据。在设计中可设定在一定的时间内一直判断nRF905的DR引脚是否变高,若为高,则证明接收到了有效数据,可以退出接收模式;若一直没有接收到,待时间到也退出接收模式。退出后在待机模式,CPU把nRF905内部的接收数据寄存器中的数据读出,即接收到的有效数据。