无线收发.docx
- 文档编号:8008197
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:31
- 大小:142.38KB
无线收发.docx
《无线收发.docx》由会员分享,可在线阅读,更多相关《无线收发.docx(31页珍藏版)》请在冰豆网上搜索。
无线收发
图2—5按键
2.2.4无线收发电路设计
无线收发电路主要由nRF905与外围器件构成,其主要部分是天线。
简而言之,就是一个特定形状的导体,它可以将电流转化为射频能量并以电波形式发射出去,或将无线电波接收进来[5]。
任何一个无线系统都有天线,天线设计的好坏直接影响无线系统的收发能力。
nRF905单端的匹配网络连接的50Ω天线图如图2—6所示[6]。
图2—6nRF905单端的匹配网络连接的50Ω天线图
nRF905是挪威NordicVLSI公司推出的单片射频收发器。
该芯片接收/发送功能合一,收发完成中断标志;32引脚QFN封装(5×5mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频段;采用FSK调制解调技术,频道之间的切换时间小于650μs;由一个完全集成的频率调制器、一个带解调器的接收器、一个功率放大器、一个晶体振荡器和一个调制器组成,工作频率稳定可靠,外围元器件少,不需外加声表滤波器;内置硬件8/16位CRC校验,能自动产生前导码和CRC(循环冗余码校验);内置SPI接口,也可通过I/O口模拟SPI实现,最高SPI时钟可达10M,使用SPI接口与微控制器通信,配置非常方便;抗干扰性能强,具有很强的障碍穿透性能,发射功率可以调整,最小为-10dBm,最大为+10dBm;可软件设置发送/接收缓冲区大小为1/2/4/8/16/32字节,每次最多可发送/接收32字节;功耗低,工作电压为+1.9~+3.6V,待机模式仅2.5uA,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能,适合便携式产品的设计[6]。
nRF905适用于无线数据通信、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域。
2.2.5接收数据显示模块
LED数码管显示器及其接口电路,采用共阳接法,如图2—7所示[7]。
图2—7数码管显示电路
3系统软件设计
nRF905与单片机AT89S52之间通过SPI口进行通信[8]。
因此,软件设计的重点是nRF905数据的发送和接收过程。
nRF905有四种工作模式[6],由TRX_CE、TX_EN、PWR_UP设定,如表3—1所示,其工作模式切换时间如表3—2所示。
PWR_UP
TRX_CE
TX_EN
工作模式
0
X
X
掉电和SPI编程模式
1
0
X
Standby和SPI编程模式
1
1
0
ShockBurstRX模式
1
1
1
ShockBurstTX模式
表3—1nRF905工作模式
表3—2nRF905模式切换时间
nRF905timing
Max
PWR_DWN→STBYmode
3ms
STBY→TXShockBurstTM
650us
STBY→RXShockBurstTM
650us
RXShockBurstTM→TXShockBurstTM
550us
TXShockBurstTM→RXShockBurstTM
550us
ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。
与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:
尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。
ShockBurstTM技术同时也减小了整个系统的平均工作电流。
3.1nRF905的数据发送过程
发送数据时的工作流程如图3—1所示[9]。
图3—1发送数据流程图
发送流程分以下几步:
A.当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给nRF905,SPI接口的速率在通信协议和器件配置时确定;
B.微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式;
C.nRF905的ShockBurstTM发送:
(1)射频寄存器自动开启;
(2)数据打包(自动加上前导码和CRC校验码);
(3)发送数据包(100kbps,GFSK,曼切斯特编码);
(4)当数据发送完成,数据准备好引脚被置高;
D.AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;
E.当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。
注:
ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。
只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
当发送结束后,新的模式被激活。
3.2nRF905的数据接收过程
系统接收数据时,首先,在650μs以后,nRF905将不断监测空中的信息;当nRF905发现有和接收频率相同的载波时,其载波检测(CD)被置为高电平;此后,当nRF905接收到有效地址时,地址匹配(AM)被置为高电平;在这之后,当nRF905接收到有效的地址包(CRC校验正确)时,nRF905将去掉前导码、地址和CRC位,同时将数据准备就绪位(DR)置为高电平,并用MCU设置TRX_CN为低电平,以进入standby模式,从而使MCU能够以合适的速率通过SPI接口读出有效的数据;当所有的数据读出后,nRF905将AM和DR设置为低电平,以便使nRF905准备进入ShockBurstRX、ShockBurstTX或Powerdown模式。
其工作流程图如图3—2所示[9]。
图3—2接收数据流程图
接收流程分以下几步:
A.当TRX_CE为高、TX_EN为低时,nRF905进入ShockBurstTM接收模式;
B.650us后,nRF905不断监测,等待接收数据;
C.当nRF905检测到同一频段的载波时,载波检测引脚被置高;
D.当接收到一个相匹配的地址,AM引脚被置高;
E.当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把DR引脚置高;
F.微控制器把TRX_CE置低,nRF905进入空闲模式;
G.微控制器通过SPI口,以一定的速率把数据移到微控制器内;
H.当所有的数据接收完毕,nRF905把DR引脚和AM引脚置低;
I.nRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。
注:
当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,nRF905立即把其工作模式改变,数据包则丢失。
当微处理器接到AM引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。
3.3功能软件的设计
本功能软件的设计目的是实现无线比赛计分牌。
其基本工作流程如图3—3所示。
图3—3无线比赛计分牌组成框图
发送端预设2个按钮,按钮1表示发送信息:
甲队加2分;按钮2表示发送信息:
乙队加3分,接收端接收后进行分类处理,并由4位数码管显示两对比分值,通过该设计可以基本掌握无线计分牌的工作流程和实现方案,在实际应用中只要增加相应功能键值,并扩展数码显示效果,结合不同应用场合采用LED大屏幕、LCD来达到更好的显示效果,完全可以替代传统有线计分数据传输,具有免去布线麻烦,降低工程成本,维护更加简单等优点。
以下对部分程序设计(源代码参见附录[10])进行解析[11]:
一、nRF905配置寄存器
表3—3nRF905配置寄存器
RF-Configuration-Register(R/W)
字节#
内容位[7:
0],MSB=BIT[7]
初始化值
0
Bit[7:
0],CH_NO[7:
0]
0110_1100
1
Bit[7:
6]没用,AUTO_RETRAN,RX_RED_PWR,PA_PWR[1:
0],HFREQ_PLL,
CH_NO[8]
0000_0000
2
Bit[7]没用,TX_AFW[2:
0],Bit[3]没用,RX_AFW[2:
0]
0100_0100
3
Bit[7:
6]没用,RX_PWR[5:
0]
0010_0000
4
Bit[7:
6]没用,TX_PWR[5:
0]
0010_0000
5
RX地址0字节
E7
6
RX地址1字节
E7
7
RX地址2字节
E7
8
RX地址3字节
E7
9
CRC_模式,CRC检验允许,XOF[2:
0],UP_CLK_EN,UP_CLK_FREQ[1:
0]
1110_0111
字节0:
[7:
0]CH_NO[7:
0]:
连同字节1的CH_NO[8]和HFREQ_PLL控制905的载波频段
参考设置:
OperatingFrequencyHFREQ_PLLCH_NO
430.0MHz[0][001001100]
433.1MHz[0][001101011]
433.2MHz[0][001101100]
434.7MHz[0][001111011]
载波频率的计算公式:
fop=(422.4+(CH_NO/10))·(1+HFREQ_PLL)MHz
字节1:
[0]CH_NO[8]:
参见字节0
[1]HFREQ_PLL:
0:
器件工作在433MHZ频段;1:
期间工作在868/915MHZ频段
[3:
2]PA_PWR:
输出功率
00:
-10dBm(默认)
01:
-2dBm
10:
+6dBm
11:
+10dBm
[4]RX_RED_PWR:
降低接收模式电流消耗至1.6mA,灵敏度降低
0:
正常模式(默认);1:
低功耗模式
[5]AUTO_RETRAN:
自动重发TX寄存器中的数据包,如果TRX_CE和TX_EN被设置为高
0:
不重发数据包(默认);1:
自动重发数据包
[7:
6]保留
字节2
[2:
0]RX_AWF[2:
0]:
RX地址宽度
001:
1字节RX地址宽度(默认);100:
4字节RX地址宽度
[3]保留
[6:
4]TX_AWF[2:
0]:
TX地址宽度
001:
1字节TX地址宽度;100:
4字节TX地址宽度
[7]保留
字节3
[5:
0]RX_PW[5:
0]:
RX接收有效数据宽度
000001:
1字节RX有效数据宽度
000010:
2字节RX有效数据宽度
……
100000:
32字节RX有效数据宽度
[7:
6]保留
字节4
[5:
0]TX_PW[5:
0]:
TX发送有效数据宽度
000001:
1字节TX有效数据宽度
000010:
2字节TX有效数据宽度
……
100000:
32字节TX有效数据宽度
[7:
6]保留
字节5:
RX地址0字节
字节6:
RX地址1字节
字节7:
RX地址2字节
字节8:
RX地址3字节
字节9
[1:
0]UP_CLK_FREQ[1:
0]:
输出时钟频率
00:
4MHz
01:
2MHz
10:
1MHz
11:
500KHz
[2]UP_CLK_EN:
输出时钟使能
0:
没有外部时钟;1:
外部时钟信号使能(默认)
[5:
3]XOF[2:
0]:
晶体振荡器频率,必须依据外部晶体的标称频率设置(无线模块上905芯片外接晶振的频率)
000:
4MHz
001:
8MHz
010:
12MHz
011:
16MHz
100:
20MHz(默认)
[6]CRC_EN:
CRC校验允许
0:
不允许;1:
允许(默认)
[7]CRC_MODE:
CRC模式
0:
8位CRC校验位;1:
16位CRC校验位(默认)
//nRF905寄存器配置//
unsignedcharidataRFConf[11]=
{
0x00,//配置命令
0x4C,//CH_NO,配置频段在430MHz
0x0C,//输出功率为10dBm,不重发,节电为正常模式
0x44,//地址宽度设置,为4字节
0x04,0x04,//接收发送有效数据长度为4字节
0xCC,0xCC,0xCC,0xCC,//接收地址
0x58,//CRC允许,8位CRC校验,外部时钟信号不使能,16M晶振
};
RFConf[11]中数据对应字节0~字节9,具体内容可参考寄存器配置。
注:
对于频段设置参数CH_NO,程序中CH_NO[7:
0]的值为0x4C。
不建议使用其他数值,因为模块在硬件上只适应430MHz左右的频率,为了达到最好的效果,软件参数上应当与硬件匹配,否则会影响通讯距离。
二、通过SPI接口向nRF905配置寄存器读写配置信息[12]
SPI外围串行接口由四条线构成:
MOSI主机输出从机输入(主机写操作);MISO主机输入从机输出(主机读操作);SCK-SPI时钟信号,由主机控制;CSN片选信号,低电平有效。
//SPI写操作代码
voidSpiWrite(unsignedcharsend)
{
unsignedchari;
DATA_BUF=send;//将需要发送的数据写入缓存
for(i=0;i<8;i++)//循环8次发送一个字节的数据
{
if(DATA7)//总是发送最高位
MOSI=1;
else
MOSI=0;
SCK=1;//SCK高电平
DATA_BUF=DATA_BUF<<1;//左移一位,为下一位的发送做准备
SCK=0;//SCK低电平
}
}
步骤一:
MOSI线准备好需要发送的数据位;
步骤二:
SCK置高,器件读取MOSI线上的数据;
步骤三:
SCK置低,准备发送数据的下一位;
以上步骤循环执行8次,通过SPI向器件发送数据完成!
注:
数据的传输时,高位在前,低位在后。
//SPI读操作代码
unsignedcharSpiRead(void)
{
unsignedcharj;
for(j=0;j<8;j++)//循环8次发送一个字节的数据
{
DATA_BUF=DATA_BUF<<1;//左移一位,准备接收下一位数据
SCK=1;//SCK高电平
if(MISO)
flag1=1;//flag1=DATA_BUF^0;
else
flag1=0;
SCK=0;//SCK低电平
}
returnDATA_BUF;//DATA_BUF为接收到的完整数据
}
步骤一:
MISO线准备好需要发送的数据位;
步骤二:
SCK置高,主机读取MISO线上的数据;
步骤三:
SCK置低,准备接收数据的下一位;
以上步骤循环执行8次,通过SPI从器件上读数据完成!
注:
数据的传输时,高位在前,低位在后。
//主机通过SPI接口向905配置寄存器写入信息
voidConfig905(void)
{
uchari;
CSN=0;//CSN片选信号,SPI使能
SpiWrite(WC);//向905芯片写配置命令
for(i=0;i { SpiWrite(RxTxConf.buf[i]);//RxTxConf保存预先设置好的配置信息 } CSN=1;//结束SPI数据传输 } 步骤一: CSN置低电平,SPI接口开始等待第一条指令 步骤二: 调用SpiWrite函数,向器件发送WC信号,准备写入配置信息 步骤三: 反复调用SpiWrite函数,向器件配置寄存器写入配置信息 步骤四: CSN置高电平,结束SPI通讯。 nRF905配置完成! 代码中nRF905SPI接口指令的宏定义如下: //(以下操作全部从对应寄存器的字节0开始) #defineWC0x00//写配置寄存器(RF-ConfigurationRegister) #defineRC0x10//读配置寄存器(RF-ConfigurationRegister) #defineWTP0x20//向TX-Payload寄存器写入发送有效数据 #defineRTP0x21//从TX-Payload寄存器读取发送有效数据 #defineWTA0x22//向TX-Address寄存器写入发送地址 #defineRTA0x23//从TX-Address寄存器读取发送地址 #defineRRP0x24//从RX-Payload寄存器读取接收到的有效数据 //使用nRF905发送数据 voidTxPacket(void) { uchari; CSN=0; SpiWrite(WTP);//Writepayloadcommand for(i=0;i<32;i++) { SpiWrite(TxBuf[i]);//写入32字节发送数据 } CSN=1;//关闭SPI,保存写入的数据 Delay (1); CSN=0;//SPI使能,准备写入地址信息 SpiWrite(WTA);//写数据至地址寄存器 for(i=0;i<4;i++)//写入4字节地址 { SpiWrite(RxTxConf.buf[i+5]); } CSN=1;//关闭SPI TRX_CE=1;//进入发送模式,启动射频发送 Delay (1);//进入ShockBurs发送模式后,芯片保证数据发送完成后返回STANDBY模式 TRX_CE=0; } 步骤一: 通过SpiWrite函数发送WTP命令,准备写入TX有效数据; 步骤二: 循环调用SpiWrite向TX-Payload寄存器写入TX有效数据(中间夹有CSN电平变化); 步骤三: 延时; 步骤四: 通过SpiWrite函数发送WTA命令,准备写入TX地址; 步骤五: 循环调用SpiWrite向TX-Address寄存器写入TX地址; 步骤六: TRX_CE=1;开始发送数据; 步骤六: 延时,nRF905数据发送完成;当nRF905接收到一条完成的信息时,会将DR引脚置高。 //这段代码和附录中提供的有所不同,做了较大的简化,只留下必要的部分 voidRxPacket(void) { uchari; TRX_CE=0;//设置905进入待机模式 CSN=0;//使能SPI SpiWrite(RRP);//准备读取接收到的数据 for(i=0;i<32;i++) { RxBuf[i]=SpiRead();//通过SPI接口从905芯片读取数据 } CSN=1;//禁用SPI while(DR||AM); TRX_CE=1; } 步骤一: TRX_CE=0;必须将此引脚置低,使905进入standby模式; 步骤二: 发送RRP指令; 步骤三: 循环调用SpiRead函数,读取接收到的数据; 步骤四: 等待DR和AM引脚复位为低电平(中间夹有CSN电平变化),数据包接收完成! 注: AM—地址匹配,接收到有效地址,被置高;DR—接收到有效数据包,并解码后,被置高;当所有有效数据被读取后,nRF905将AM和DR置低。 最后设置器件的发送/接收模式才能保证有效的数据发送接收: //设置器件为发送模式 voidSetTxMode(void) { TX_EN=1; TRX_CE=0; Delay (1);//delayformodechange(>=650us) } //设置器件为接收模式 voidSetRxMode(void) { TX_EN=0; TRX_CE=1; Delay (1);//delayformodechange(>=650us) } 4系统功能增强 4.1无线232通信应用 为了扩展系统的功能,可以增加串口,目的是实现单片机与PC机的串口数据通信。 在硬件电路上不须对原电路进行任何改动,只增加一个串口模块即可,因此,在硬件电路的实现上非常简单和方便,同时针对该电路进行相关的软件设计,可以大大增强系统的功能。 串口电路模块如图4—1所示[12]。 图4—1串口通信模块 5结束语 无线射频收发芯片nRF905简单、稳定、可靠、实用,内置有天线,同时内部集成有调制、解调、编码、解码等功能,故在通信过程中能自动生成前导码和CRC校验,而不需要“接入”网络就能享受通信服务。 本设计根据nRF905的特点设计的无线数据收发系统,经过多次实验证明,其发射端能正确地将数据传送出去;同时,经nRF905发射后,接收端也能正确接收并显示数据,在空旷的地方其有效通信距离大于200米,可以达到300米。 在有障碍物体的混凝土结构的建筑内测试,其有效直线通信距离大于50米。 此外,该系统采用了比较完善的软件、硬件设计以及抗干扰措施,这样,就可以保证系统工作的安全性和可靠性,并具有通用性,便于投入实际应用,而且稍作改动就可以应用到小区传呼、工业数据采集、生物信号采集,无线遥控等其它一些短距离无线通信领域,以实现无线数据的双向传输,具有较好的市场应用价值。 6感谢 在论文即将完成之际,回顾紧张但又充实的学习和开发过程,在此向所有给予我关心以及帮助的老师和同学们致以最真诚的感谢。 在本次毕业设计中,魏武老师的帮助和支持使我能在有限的时间内完成了设计任务并加深了对单片机、编程、电子等知识的理解,魏老师认真负责的态度和深厚的专业知识水平都使我受益匪浅,在此感谢他的悉心指导。 参考文献 [1]杨素行.模拟电子技术基础简明教程[M].北京: 高等教育出版社,1998: 492—565. [2]AT89S52中文资料[EB/OL]. [3]孙育才、王荣兴、孙华芳.ATMEL新型AT89S52系列单片机及其应用[M].北京: 清华大学出版社,2005.1: 1—4. [4]王彦平、任延群、危胜军等.Protel电路设计指南[M].北京: 清华大学出版社,2000: 23—84. [5]严国萍、龙占超.通信电子线路[M].北京: 科学出版社,2005: 2—6. [6]单片射频收发器nRF905及其应用[EB/OL]. [7]顾滨、赵伟军、王泰、鲍可进、李铁香.单片微计算机原理、开发及应用[M].北京: 高等教育出版社,2000.8: 190—194. [8]黄智伟.无线数字收发电路设计[M].北京: 电子工业出版社,2003.5: 270—278. [9]李文仲、段朝玉等.短距离无线数据通信入门与实践[M].北京: 北京航空航天大学出版社,2006.12: 50—83. [10]求是科技.8051系列单片机C程序设计完全手册[M].北京: 人民邮电出版社,2006.4: 152—208. [11]谭浩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 收发