nRF905传输数据方式Word格式文档下载.docx
《nRF905传输数据方式Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《nRF905传输数据方式Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

PA_PWR为发射功率、RX_RED_PWR为接收灵敏度,可根据需要配置;
另外还有发送地址、接收地址、发送数据和接收数据的长度(字节数),可根据实际应用配置。
注意这组寄存器中还有接收时的实际地址,而发送地址在其他单独寄存器中。
配置nRF905的发送地址
在实际工作中,nRF905可以自动滤除地址不相同的数据,只有地址匹配且校验正确的数据才会被接收,并存储在接收数据寄存器中。
本设计中配置最多4个字节(32位),发送端的发送地址应与接收端设备的接收地址相同。
用户程序
根据系统的硬件设计方案,分为发送端和接收端两个部分,软件系统的整体数据处理流程如图3所示。
软件系统分为5个模块:
温湿度采集模块、外部设备模块、RF发送模块、RF接收模块、中央监控系统报表统计分析模块。
通信协议
系统结构为有多个发送端向1个接收端单向发送温湿度数据,同时要求接收端能够根据接收的数据内容判断信号来自哪一个发送模块;
接收端根据温湿度数据是否越界从而驱动前端外部设备。
为此,将系统通信协议设置为如下格式:
Preamble为引导字节,Add为接收机地址,Payload为有效加载数据(包括接收显示单元识别码Rid、源发送单元识别码Sid及Data字——在接收时Data字高八位内容即为温度数据,低八位内容即为湿度数据;
发送控制命令即为外部设备控制字,长度为2字节),CRC为校验码。
nRF905处于发射模式时,Add和Payload由微控制器按顺序送入射频模块nRF905,Preamble和CRC由nRF905自动加载。
接收时,nRF905先接收一个数据包,分别验证Preamble、Add和CRC正确后,再将Payload数据送入微控制器处理;
当接收显示单元微处理器判断Payload中的Rid和本机识别码一致时,继续处理后继数据,并通过Sid来判断收到的数据来自哪一个监测点,保存至中央监控系统数据库供后期数据分析处理。
3硬件设计
单片机选用ATMEL公司生产的AT89LV51单片机。
它具有低功耗、低电压(与nRF905共用同一电压)的特性,它既适合结构比较简单的应用系统,也适合于比较复杂的实时系统。
单片机主要完成两个方面的工作,一方面完成对射频芯片通信过程的控制,另一方面通过RS-232总线与上位机相连。
由于AT89LV51内部没有集成SPI接口,因此通过软件模拟的方法来实现与nRF905的SPI通信。
硬件连接上,由P2口、P3.2、P3.3、P3.5连接到nRF905模块的连接器相应的引脚上。
电路如图1所示。
4软件设计
4.1发射子程序
(1)当单片机有数据需要发往规定节点时,接收节点的地址(TX_address)和有效数据(TX_payload)通过SPI接口传送给nRF905,单片机设置接口速度。
(2)单片机设置TRX_CE,TX_EN为高电平来启动传输。
(3)nRF905内部处理:
无线系统自动上电;
数据包完成(加前导码和CRC校验码);
数据包发送(5Ok,GFSK,曼彻斯特编码)。
(4)如果AUTO_RETURN被设置为高电平,nRF905将连续的发送数据包,直到TRX_CE被设置为低。
(5)当TRX_CE被设置为低时,nRF905结束数据传输并将自己设置成待机模式。
发送程序流程图如图2所示。
4.2接收子程序
(1)通过设置TRX_CE高,TX_EN低来选择RX模式。
(2)650us后,nRF905监测空中的信息;
(3)当nRF905发现和接收频率相同的载波时,载波检测(CD)被置高;
(4)当nRF905接收到有效的地址时,地址匹配(AM)被置高;
(5)当nRF905接收到有效的数据包(CRC校验正确)时,nRF905去掉前导码,地址和CRC位,数据准备就绪(DR)被置高;
(6)单片机设置TRX_CE低,进入待机模式;
(7)单片机以合适的速率通过SPI接口读出有效数据。
接收程序流程图如图3所示。
nRF905模块和SPI接口的点对点无线通信
[日期:
2010-03-23]
[来源:
本站编辑作者:
admin]
[字体:
大中小]
(投递新闻)
采用一般的无线传输方式时可能因为环境噪声大,干扰信号强而导致接收数据的准确性很低。
针对这种情况,设计一种低成本、高准确率的无线数据传输系统——基于PIC16F876的SPI和nRF905模块的点对点无线通信系统。
利用PIC16F876和nRF905模块直接进行SPI数据交换,时序同步性好,程序编写简单。
PIC16F876通过相应的I/O口连接到编程器,可直接进行在线调试。
鉴于无线通信环境中噪声大,信号干扰大的特点,采用的nRF905模块引入自动重发,高抗干扰GFSK调制和最高16位CRC校验机制,确保了数据传输的可靠性。
1硬件电路规划
PIC16F876、nRF905模块及编程器连接头J1之间的电路连接,220V一5V电路实现,5V一3V电压转换电路如图1、图2、图3所示。
图1PIC16F876、nRF905模块及编程器之间的电路连接
①本系统所用的nRF905模块系指迅通科技公司的一个nRF905无线通信模块。
此模块在与单片机P1C16F876相连时,只用了核心芯片nRF905的14个引脚(见图1)。
在图1中,单片机PIC16F876输入输出口与nRF905模块相应接口连接情况:
RC7~nRF905模块时钟分频输出,RC6~nRF905模块地址匹配输出AM,RC5~MISO,RC4~MOSI,RC3~SCK,RC2~CSN,RB7RB6&
RB3~J1编程器连接线,RB5~nRF905模块数据就绪输出DR,RB2~PWR,RB1~TXEN,RB0~TRX_CE。
单片机通过RB7、RB6和RB3与编程器相连,可进行在线编程;
由RC5输出数据到nRF905模块,由RC4从nRF905模块输入数据。
由一个4MHz陶瓷晶体振荡器为单片机提供时钟输入。
16F876的工作电压是4.5~5.5V,通过图2中的DBA元件实现从220V市电到5V电压的转换。
由于nRF905模块的工作电压是1.9~3.6V,需从5V电压转换得到一个符合nRF905模块正常工作的稳定电压。
考虑使用分压电阻与3V稳压管串联分压,从稳压管两端可得到一个稳定的3V电压输出,如图3所示。
2软件设计
考虑到nRF905模块内置完整的通信协议和CRC,软件设计工作主要集中在如何实现对nRF905模块的有效初始配置,以及16F876与nRF905模块之间SPI通信的实现。
其中须保证16F876与nRF905模块时序的一致,并充分考虑nRF905模块对时序的要求。
SPI时序如图4所示。
对应程序设计:
MOVLWB'
11000000'
;
bit7=smp=1
MOVWFSSPSTAT;
在输出数据的末尾采样输入数据
;
bit6=cke=1,ckp=0时上升沿
发送数据
00000001'
;
bit2~bito设置晶振/16,SPI主控方式
MOVWFSSPCON;
bit4=CKP=0空闲时钟低电平
nRF905模块存在4种工作模式:
掉电和SPI编程模式、待机和SPI编程模式、发射模式、接收模式。
BSFPORTB,2;
待机和SPI编程方式
BCFPORTB,0;
PWR_UP=1,TRX_EN=0,TX_EN=0
BCFPORTB,1
BSFPORTB,0;
往芯片中写数据操作完毕,转换到发射模式
BSFPORTB,1
往芯片中写数据操作完毕,转换到接收模式
RB0_TRX_CE=1,RB1_TXEN=0
通过对16F876相应输出口高低电平的转换,可控制nRF905模块工作模式的变化。
将单片机的SPI接口与nRF905模块的相应SPI口互连,实现16F876与nRF905模块之间的数据传递或实现16F876向nRF905模块发出控制命令;
在编程模式下,可将预配置的命令或数据送入单片机收发缓冲器SSPBUF中,以16F876作为主控模式,并提供SPI通信必需的SCK时钟,nRF905模块作为从动模式,在SCK上升沿,双方进行数据传递,启动SCK后可将单片机数据逐位移人nRF905模块中,以完成对其初始配置。
参照nRF905模块数据手册进行初始配置:
nRF905模块的发射功率,工作频段,发送数据宽度,发送数据地址,接收数据宽度,接收数据地址,CRC校验等。
若该nRF905模块作为发射部分,则将已采集并存储在单片机中的数据送入nRF905模块,以备发射。
MOVLW58H
BIT7=CRC_MODE=1,8位CRC校验位
BIT6=CRC_EN=1,CRC校验允许
BIT[5:
3]=XOF[2:
0]=000,晶振4MHz
BIT2=UP_CLK_EN=0外部时钟信号禁止
BIT[1:
0]=UP_CLK_FREQ[1:
0]=11,500kHz
001001100'
BIT5=AUTO_RETRAN=0不重发数据
输出功率为-10dBm,
BIT4=RX_RED_PWR=0正常工作模式
BIT1=HEREQ_PLL=0.433MHz频段
CH_NO[8]=0
设计一个SPI通信模块程序进行循环调用,以简化程序设计,提高可读性。
SPI通信子程序
OUT_IN
BSFSSPCON,SSPEN;
允许SPI模式
MOVWFSSPBUF;
数据送给SSPBUF后开始发送LP2
BCFSTATUS,RP1;
选择RAM体1
RSFSTATUS.RP0
BTFSSSSPSTAT,BF;
查询发送/接收完否
GOTOLP2;
否,继续查询
BCFSTATUS,RP0;
是,选择RAM体0
MOVFSSPBUF,W;
从缓冲器取出数据
RETURN;
子程序返回
程序流程如图5所示。
系统设计
无线通信系统,由两个部分组成:
发送终端,接收终端。
数据的发送和接收显示是借助于串口来实现的,通过PC机串口给发送终端送数据,然后发送终端通过nRF905把数据发送出去;
接收终端通过nRF905接收数据,然后把接收到的数据通过串口传给PC机。
系统框图如图1所示。
图1
无线系统的硬软件设计
系统的硬件设计
本系统采用的射频收发器为Nordic
VLSI公司的nRF905,
工作电压为1.9~3.6V,工作于433/868/915MHz三个ISM频段,频段之间的转换时间小于650us。
nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器。
高抗扰GFSK调制,数据速率为50kbps,独特的载波监测输出,地址匹配输出,数据就绪输出。
ShockBurstTM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。
此外,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。
nRF905的硬件连接电路图如图2所示。
采用的微处理器为TI公司的MSP430F149,它是一种超低功耗的混合信号控制器,具有16位RISC结构,CPU中的16个寄存器和常数产生器使MSP430能达到最高的代码效率。
单片机通过采用不同的时钟源工作可以使器件满足不同功耗要求,适当选择时钟源,可以让器件的功耗达到最小。
外设主要有存储器、时钟模块、定时器、USART和A/D转换器等。
此次设计主要用到了MSP430F149两个串口通信模块USART0和USART1,USART0作为UART使用,提供异步通信,通过MAX3232电平转换芯片提供RS-232接口和PC机进行通信,USART1作为SPI使用,提供同步通信,主要是和nRF905之间进行命令和数据通信。
把MSP430F149的P2口作为一般引脚使用,与nRF905的其他引脚相连。
对MSP430F149提供双晶振系统,低频晶振为32.768K,与微控制的XIN和XOUT相连,为RS-232接口提供频率支持,高频晶振为8M,和微控制器的XT2相连,为系统运行的主时钟。
系统的整体设计相对较为简单,不过在此基础上可以实现遥测,无线抄表,工业数据采集,机器人控制等。
发送和接收的硬件电路是一样的,系统设计主要硬件电路图如图3所示。
系统的软件设计
系统软件设计包括下位机软件设计和PC机软件设计。
前者主要是微控制器通过SPI口对nRF905的控制以及微控制器串口通讯的设计,后者包括串口通讯模块、主界面和数据库设计。
}RFConfig;
RFConfig
RxTxConf=
{
10,
0x01,
0x0c,
0x44,
0x20,
0xcc,
0xcc,
0x58
};
nRF905提供SPI口的读写指令,当CSN为低时,SPI接口开始等待一条指令,任何一条新指令均由CSN的由高到底的转换开始。
下面主要介绍nRF905的发送流程和接收流程。
发送流程:
A.当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给nRF905,SPI接口的速率在通信协议和器件配置时确定;
B.微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式;
C.nRF905的ShockBurstTM发送:
射频寄存器自动开启;
数据打包(加字头和CRC校验码);
发送数据包;
当数据发送完成,数据准备好引脚被置高;
D.当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。
ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。
只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
接收流程:
A.当TRX_CE为高、TX_EN为低时,nRF905进入ShockBurstTM接收模式;
B.650us后,nRF905不断监测,等待接收数据;
C.当nRF905检测到同一频段的载波时,载波检测引脚被置高;
D.当接收到一个相匹配的地址,地址匹配引脚被置高;
E.当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高
F.微控制器把TRX_CE置低,nRF905进入空闲模式;
G.微控制器通过SPI口,以一定的速率把数据移到微控制器内;
H.当所有的数据接收完毕,nRF905把数据准备好引脚和地址匹配引脚置低;
I.nRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。
MSP430F149的串口通讯程序设计,主要是设定传输的速率为4800bps,数据传输为8位数,1个停止位,无奇偶校验。
根据相应的发送端和接收端来设定发送模块和接收模块使能,发送中断和接收中断使能。
在PC机软件设计中,串口通信模块负责PC机与下位机之间的数据通信。
而主界面和数据库设计主要是方便对接收的数据进行管理。
实验测试分析
在发送和接收时利用示波器和万用表对nRF905的相关引脚进行测量分析如下:
发射时nRF905的分析情况如表1所示。
接收时nRF905的分析情况如表2所示。
1.2电源模块
本设计需要3.3
V电压。
故可用三端可调输出集成稳压器LM317来产生3.3
图2所示是用LM317产生3.3
V电源电压的电路原理图。
2系统软件设计
本系统中的无线数据传输主要由无线数据收发器nRF905、ATMEGA
16单片机和显示部分组成。
nRF905收发器与单片机ATMEGA16L间通过SPI口进行通信。
因此,软件设计过程中的重点是nRF905数据的发送和接收过程。
2.1
nRF905的数据发送过程
发送数据时的工作流程如图5所示。
当MCU有遥控数据节点时,接收点的地址(TX-address)和有效数据(Tx-payload)将通过SPI接口传送给nRF905。
设计时应使用协议或MCU来设置接口速度。
可用MCU设置TRX-CE,并使TX-EN为高电平来激活nRF905的ShockBurst传输。
通过nRF905的ShockBurst可使无线系统自动上电,并完成数据包(应加前导码和CRC校验码)的数据码发送(100
kbps,GFSK,曼切斯特编码)。
如果AUTO-RETRAN被设置为高电平,那么,nRF905将连续地发送数据包,直到TRX-CE被设置为低电平为止;
而当TRX-CE被设置为低电平时,nRF905则结束数据传输,并将自己设置为standby模式。
2.2
nRF905的数据接收过程
当系统接收数据时,其接收数据流程图如图6所示。
系统的工作过程如下:
首先,在650μs以后,nRF905将不断监测空中的信息;
当nRF905发现有和接收频率相同的载波时,其载波检测(CD)被置为高电平;
此后,当nRF905接收到有效地址时,地址匹配(AM)被置为高电平;
在这之后,当nRF905接收到有效的地址包(CRC校验正确)时,nRF905将去掉前导码、地址和CRC位,同时将数据准备就绪位(DR)置为高电平,并用MCU设置TRX-CN为低电平,以进入standby模式,从而使MCU能够以合适的速率通过SPI接口读出有效的数据;
当所有的数据读出后,nRF905将AM和DR设置为低电平,以便使nRF905准备进入ShockBurst
RX、ShockBurst
TX或Powerdown模式。
连接说明