基于NRF905无线收发电路的设计之无线收发系统发送控制设计Word下载.docx
《基于NRF905无线收发电路的设计之无线收发系统发送控制设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于NRF905无线收发电路的设计之无线收发系统发送控制设计Word下载.docx(33页珍藏版)》请在冰点文库上搜索。
无线数据传输的特点是使用RF来发送和接收数据包。
无线数据传输主要由无线数据终端、主接收器和主监控器组成,主监控器PC与主接收器PC间用并行口通信。
整个系统的各个部分都是服务于无线数据传输这个目的。
所以,在整个系统的软件设计中,无线数据的传输为最主要部分。
在本毕业设计中,PC机通过并口通讯控制无线收发模块实现发送接收数据的功能。
当代科学技术日益向高速化、智能化、信息化、网络化发展,各种各样的制造业和通信业设备除了可以与计算机联机外,还可以互相联机,而实现设备间相互联机的最具发展潜力的方式就是无线通信。
与有线通信方式相比,无线通信具有一系列优点,特别适用于手持现场设备、电池供电设备、遥控遥测设备、水文气象监控设备、生物信号采集系统、工业数据采集系统等。
在上述无线通信技术应用实际中,无线通信协议起着至关重要的作用,直接关系到无线通信系统的安全性和误码率以及系统运行的速度。
本文基于挪威Nordic
VLSI公司最新推出的单片无线收发一体芯片nRF905设计出多功能无线数传模块:
具有标准RS232C和RS485接口通信模块,设计的多功能无线数传模块由基于nRF905的高频头和标准通信接口模块组成。
nRF905适用于无线数据通信、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域[1]。
本课题主要研究使用并口通讯控制基于NRF905的无线收发模块,这种收发系统它能应用于PC机短距离无线收发数据,省去了网线等物理连接设备。
无线系统安装方便、可固定可移动,没有接线,不用改变原有室内装饰。
一、NRF905芯片及其应用电路的介绍
nRF905是挪威NordicVLSI公司推出的单片射频收发器,工作电压为1.9~3.6V,32引脚QFN封装(5×
5mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650us。
芯片结构:
nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。
nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成[2],不需外加声表滤波器,ShockBurstTM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。
此外,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。
NRF905结构框图如下图(1-1)[3]:
图(1-1)NRF905结构框图
NRF905快速参考数据请见附录中表
(1)。
封装的NRF905芯片管脚视图请见附录中图
(1)。
NRF905极限参数请见附录中表
(2)。
NRF905常用术语表请见附录中表(3)。
NRF905管脚说明如下图(1-2):
图(1-2)NRF905管脚说明
由于基于NRF905的无线收发应用电路已比较成熟,我们更关注于nRF905芯片外围环形天线的设计。
无线环形天线的工作原理[4]:
环形天线和人体非常相似,有普通的单极或多级天线功能。
再加上小型环形天线的体积小、高可靠性和低成本,使其成为微小型通信产品的理想天线。
典型的环形天线由电路板上的铜走线组成的电回路构成,也可能是一段制作成环形的导线。
其等效电路相当于两个串连电阻与一个电感的串连。
在经过天线等效电路的电阻值,损耗电阻值,电感值等参数计算后,我们进行了电路设计,本设计使用天线在900Mhz左右的频率上工作。
本设计采用的是ASK方式。
采用的芯片是nRF905,为了使天线达到发射电磁波的目的,必须对其参数进行匹配,使天线回路发生震荡。
在回路中加入电容,使得天线回路阻抗值最小[2]。
在计算电容值和品质因素后,天线结构大概如下图(1-3):
图(1-3)天线结构图
二、PC并口模拟SPI控制无线收发模块
(一)无线收发模块接口、寄存器以及工作模式的介绍
由nRF905组成的高频头用户接口即无线收发模块,该接口由10个数字输入/输出I/O组成,按照工作可分为三组,如图(2-1)[5]
图(2-1)无线收发模块接口图
NRF905芯片有两种工作模式和两种节能模式。
节能模式有掉电和SPI编程模式,待机和SPI编程模式;
工作模式有发射模式,接收模式。
由TRX_CE、TXEN、PWR三个模式控制接口控制这4种模式,如下表(2-1):
表(2-1)工作模式表
SPI接口由SCK、MISO、MOSI以及CSN组成。
(1)在配置模式下单片机通过SPI接口配置高频头的工作参数;
(2)在发射/接收模式下单片机SPI接口发送和接收数据。
3个状态输出接口:
提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。
器件配置:
NRF905的所有配置都通过SPI接口进行。
SPI接口由5个寄存器组成,一条SPI指令用来决定进行什么操作。
SPI接口只有在掉电模式和待机模式是激活的。
SPI寄存器配置:
SPI接口由5个内部寄存器组成。
执行寄存器的回读模式来确认
寄存器的内容。
见图(2-2)
图(2-2)SPI接口和内部寄存器图
状态寄存器(Status-Register):
此寄存器包含数据就绪(DR)和地址匹配(AM)状态。
RF配置寄存器(RF-ConfigurationRegister):
此寄存器包含收发器的频率,输出功率等配置信息。
发送地址寄存器(TX-Address):
此寄存器包含目标器件地址,字节长度由配置寄存器设置。
发送有效数据寄存器(TX-Payload):
此寄存器包含发送的有效ShockBurst数据包数据,字节长度由配置寄存器设置。
接受有效数据寄存器(TX-Payload):
寄存器包含接受到的有效ShockBurst数据包数据,字节长度由配置寄存器设置。
在寄存器中的有效数据由数据准备就绪(DR)指示。
SPI指令设置:
用于SPI接口的有用命令如下表(2-2)。
当CSN为低时,SPI接口开始等待一条指令,任何一条新指令均由CSN的由高到低的转换开始。
表(2-2)SPI串行接口指令
SPI读操作时序如下图(2-3)
图(2-3)SPI读操作时序图
SPI写操作时序如下图(2-4)
图(2-4)SPI写操作时序图
RF配置寄存器说明如下表(2-3)和表(2-4):
表(2-3)配置寄存器表
表(2-4)配置寄存器表
各寄存器的内容见下表(2-5)表(2-6)
表(2-5)各寄存器内容表
表(2-6)各寄存器内容表
所有寄存器的长度都是固定的。
可是,用在ShockBurstRX/TX模式TX_PAYLOAD,RX_PAYLOAD,TX_ADDRESS,RX_ADDRESS中的字节数在配置寄存器中设置。
寄存器中的内容在进入任何一种节电模式时均不丢失。
器件的模式切换时间如下表(2-7)
表(2-7)模式切换时间表
ShockBurstTX模式时序如下图(2-5)
图(2-5)TX模式时序图
当一个数据包传输完成时,器件自动进入待机模式,并等待下一个TRX_CE脉冲。
如果自动重发功能被允许,数据包江连续不断地传输,直到TRX_CE变低。
ShockBurstRX模式时序如下图(2-6)
图(2-6)RX模式时序图
数据就绪(DR)信号被置高后,一个有效的数据包已经存在于接收寄存器中。
数据包可以在接收模式、待机模式或掉电模式下被读出。
数据包被读出后,数据就绪(DR)信号和地址匹配信号(AM)被复位为低。
(二)无线收发模块收发流程
发射模式:
当PC有数据需要发往规定节点时,接收节点的地址(TX-address)和有效数据(TX-payload)通过SPI接口传送给高频头。
应用协议或PC设置接口速度。
PC设置TRX_CE,TXEN为高来启动传输。
高频头内部处理:
(1)无线系统自动上电;
(2)数据包完成(加前导码和CRC校验码);
(3)数据包发送(100kbps,GFSK,曼切斯特编码);
如果AUTO_RETRAN被设置为高,高频头将连续地发送数据包,直到TRX_CE被设置为低。
当TRX_CE被设置为低时,高频头结束数据传输并将自己设置成待机模式。
ShockBurst工作模式确保一个传输包发送开始后,总是能够完成;
不管在发送过程中TRX_CE,TRX_EN如何被设置。
当发送结束后,新的模式被激活。
为了测试,如天线调谐和测量发射功率,可以让发射机发射不变的载波。
为此,必须让TRX_CE保持为高,而不是一个脉冲。
另外,自动重发必须禁止。
当数据脉冲被发射完成后,发射机将连续发射未调制的载波。
发射模式流程图见图(2-7)
图(2-7)发射模式流程图
接收模式:
通过设置TRX_CE高,TXEN低来选择RX模式。
650us以后,高频头监测空中的信息。
当高频头发现和接收频率相同的载波时,载波检测(CD)被置高。
当高频头接收到有效的地址时,地址匹配(AM)被置高。
当高频头接收到有效的数据包(CRC校验正确)时,高频头去掉前导码,地址和CRC位,数据准备就绪(DR)被置高。
PC设置TRX_CE低,进入standby模式(待机模式)。
PC可以以合适的速率通过SPI接口读出有效数据。
当所有的有效数据被读出后,高频头将AM和DR置低。
NRF905将准备进入ShockBurstRX,ShockBurstTX或Powerdown模式。
如果在引入数据时TRX_CE或TRX_EN的状态改变,NRF905将立刻改变模式,并且数据包丢失。
尽管如此,如果PC已经感觉到AM信号,PC就知道NRF905正在接收数据,然后决定是等待DR信号还是改变模式
接收模式流程图见图(2-8)
图(2-8)接收模式流程图
电脑并口25针,形状作用详见表(2-8)[6]:
表(2-8)25针并口功能表
D0-D7为数据线,S0-S7为状态线,但是S0,S1,S2是看不见的(从图中你也可以看出),状态线是用来读取数据的,但S0却不同,它是超时标志位,其他的状态线从第10-11-12-13-15针是用来发送数据的(可以看出是5位).那么我们怎么能得到这些数据端口呢?
很简单:
每一个并口都有一个地址.在Windows2000中,你可以在打印机端口(LPT1)的属性中看到他们.比如:
我的是0378-037F,如果是10进制,那么就是888.同样你也可以看到你的COM端口的地址.让我以打印机为例解释一下这些针位的意义:
S0:
在EPP(增强的串口)模式下,如果超时的话,这位置1。
S1:
没用(估计是装饰)。
S2:
大多数情况下没有使用.
S3:
如果打印机发生了错误则置0。
它通常被叫做nError或者nFault。
S4:
如果数据达到,则置1.我们通常叫做Select.
S5:
如果没有打印纸了则置1.通常叫做PaperEnd或者PaperEmpty或者Perror。
S6:
如果打印机得到了一个字节的数据则此位置0,通常叫做nAck或者nAcknowledge。
S7:
如果打印机处于繁忙的状态则此位置0,通常叫做Busy。
控制线:
这些线通常用来输出,但有时也可以用于输入。
他们占用C0-C7(如图),但是在接口上C4,C5,C6,C7是不可见,他们占用的端口地址是0x37A。
C0:
这一针脚是保留的.他发送命令去读取端口上的数据(D0-D7)。
当计算机启动的时候,这一位被置1,通常叫做nStrobe。
C1:
保留.通过他发送命令给打印机,可以得到下一条打印线。
(LF)
C2:
重置打印机并且清空数据缓冲区。
(nInitialize)
C3:
保留.置高电平打开数据输入.启动计算机时置0。
(nSelectIn)
地线:
从G0-G7的针是接地用的,他们一般是用来完善电路的。
综上所述,在我的应用程序里使用数据线而不是具有保留位的控制线或者状态线作为数据传输。
原因显而易见:
我们可以发送任何数据到数据线上,比如00000000,这样8根针就没有任何电压(0伏特);
当然也可以发送11111111(255),这样每根针都有+5伏特的电压。
但是如果我们使用控制线,他有C0,C1和C3是保留,当我们发送0000000的时候,他却只能是0100,所以这样数据就不正确了。
表(2-8)中带*号的管脚,当管脚的电平为低时,相应的寄存器中bit的值为1。
表(2-8)中带n号的管脚是低有效,意味着通常情况下,它们的值为高电平,当它们需要发送一些指示时它们的值为低。
默认状态下,数据端口是作为输出端口,要想打开端口双向的属性,我们需要把控制寄存器的第五位C3置高。
一般数据,控制,地址这三个寄存器在电脑中有其相应的地址,我们在编程中会用到这些地址,见表(2-9)
表(2-9)端口地址表
基于nRF905的高频头的无线通信软件设计:
由于与RF协议相关的高速信号处理部分已经嵌入在模块内部,高频头可与各种低成本单片机配合使用,也可以与DSP等高速处理器配合使用;
高频头提供一个SPI接口,速率由微控制器自己设定的接口速度决定。
在RX模式中,地址匹配(AM)和数据准备就绪(DR)信号通知PC一个有效的地址和数据包已经各自接收完成,微控制器即可通过SPI读取接收的数据。
在TX模式中,高频头自动产生前导码和CRC校验码,数据准备就绪(DR)信号通知PC数据传输已经完成。
这意味着降低PC的存储器需求也就是降低PC成本,同时缩短软件开发时间。
配置编程:
上电以后PC首先配置高频头模块。
先将PWR、TXEN、TRX_CE设为配置模式,PC通过SPI将配置数据移入高频头模块;
在掉电和待机模式工作后,配置内容仍然有效。
配置数据只有当电源撤除后才会丢失。
根据无线收发模块的四个SPI口(SCK,CSN,MOSI,TRX_CE)存在时钟、使能控制,需要同步进行传输数据的特点,我们不能再用传统常见的串口通讯进行控制,考虑到并口八根数据线传输数据同步的特点,我选用了并口通讯来控制此无线收发模块。
根据以上两节关于基于NRF905无线收发模块的工作流程的介绍,本次毕业设计决定采用VC软件来进行编程,通过并口来模拟SPI通讯。
根据并口的特性,本次毕设中决定选用pin2,pin3,pin4这3根数据线与SPI接口的CSN(使能端),SCK(时钟,对应图(2-10)中CLK端口),MOSI(数据输入,对应图(2-10)的DIN端口)三个相连,而pin5与TRX_CE相连,pin6代表TXEN与高电平相连,芯片的PWR端口接稳压电源,这四对对应端口不能直接相连,其间还需加如图(2-10)[7]所示的电平转换电路和整形电容。
如图(2-9)所示为数字输入脚和数字输出脚所要求的电压值,其中VDD为芯片电源电压3V。
这个电路中当pin2(与pin3,pin4相连的接口情况与此相同)为低电平时,考虑到接口内部的CMOS电路[9],根据两个电阻560和4700的比值,可以得到此时SCK时钟接口的电平为低,但此低电平值比pin2处低电平值略高,当pin2处为高电平时,SCK接口的电平为高,且值介于V+与pin2处电压值之间。
图(2-9)数字输入输出要求电压值图
图(2-10)电平转换电路图
在编程前,我们需要了解自己PC机上并口寄存器的存储地址,我们可以通过以下方法查看寄存器地址:
右键“我的电脑”,进入“属性”性选项,选择“硬件”中“设备管理器”选项,此时会出现一个关于设备的树状图,找到“Ports(Com1&
LPT)”选项,双击“LPT1”,此时你能得到LPT1端口的细节。
确定“使用这个设备(启用)”被选择。
然后进入“资源”这一栏,你可以看到端口的地址范围[8]。
本毕业设计中建立一个对话框形式的控制界面,其中DATA复选框有八个,分别对应着并口的2到9脚这8个数据口,STATUS状态复选框5个,分别对应着并口的相应端口,CONTROL控制复选框4个,分别对应着并口的相应端口,但在本次毕设中,只用到pin2,pin3,pin4,pin5,pin6五个端口即可实现并口控制无线收发模块进行发送操作。
下面介绍VC并口控制发送模块的具体编程步骤:
首先,我们打开VC,新建一个“MFCAppWizard(exe)”的工程,取名为ParallelPort,然后选择“基本对话框”模式,然后进入所建的工程,往对话框上添加17复选框和3个SET按钮以及一个start发送按钮,如图(2-11)所示
图(2-11)发送对话框图
然后在每个复选框和按钮的属性选项中,给它们设置好相应的标题和ID,如pin2复选框的ID就叫IDC_Pin2,标题叫pin2,然后在“建立类向导”中为每个ID设置好对应的一个BOOL型的变量,如pin2的变量名叫m_pin2,然后在CparallelPortDlg类中添加成员函数和代码,现添加一个voidUpdatePins()的函数具体代码如下:
voidCParallelPortDlg:
:
UpdatePins()
{
intreg;
reg=_inp(STATUS);
if((reg&
0x40)==0)m_pin10=0;
elsem_pin10=1;
0x80)==0)m_pin11=0;
elsem_pin11=1;
0x20)==0)m_pin12=0;
elsem_pin12=1;
if((reg&
0x10)==0)m_pin13=0;
elsem_pin13=1;
0x08)==0)m_pin15=0;
elsem_pin15=1;
//////////
reg=_inp(DATA);
0x01)==0)m_pin2=0;
elsem_pin2=1;
0x02)==0)m_pin3=0;
elsem_pin3=1;
0x04)==0)m_pin4=0;
elsem_pin4=1;
0x08)==0)m_pin5=0;
elsem_pin5=1;
0x10)==0)m_pin6=0;
elsem_pin6=1;
0x20)==0)m_pin7=0;
elsem_pin7=2;
0x40)==0)m_pin8=0;
elsem_pin8=1;
0x80)==0)m_pin9=0;
elsem_pin9=1;
reg=_inp(CONTROL);
0x01)==0)m_pin1=0;
elsem_pin1=1;
0x02)==0)m_pin14=0;
elsem_pin14=1;
0x04)==0)m_pin16=0;
elsem_pin16=1;
0x08)==0)m_pin17=0;
elsem_pin17=1;
UpdateData(FALSE);
}
并在CparallelPortDlg类定义的顶部添加LPT端口地址的宏定义,代码如下:
#defineDATA0x378
#defineSTATUS0x379
#defineCONTROL0x37a
其中函数_inp(PORT)的作用是返回参数所代表的端口处当前的数据,相反地,_outp(PORT,DATA)函数的作用事把数据DATA发送到相应的PORT端口上。
函数void