找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1405|回复: 0
打印 上一主题 下一主题
收起左侧

无线遥控设计资料

[复制链接]
跳转到指定楼层
楼主
ID:195285 发表于 2017-5-1 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
无线遥控设计
一、总体概述
本系统有六大部分组成分PS/2电脑键盘控制部分、双单片机控制部分、无线数字收发部分、摄相头采集部分、高频放大发射部分、电视观察接收信号图像部分。
二、       题目分析及方案论证:
本题中要求发射大于10米,且多通道。所以可采用高频无线数字收发模块。如NRF 系列数字收发模块。可选用单片机给数字模块进行控制和配置寄存器,及用SPI给数字模块发送数据。
1 NRF系列数字收发模块选择方案论证
1.1  NRF401可以达到题目要求
           所设计的无线数传模块由单片射频收发芯片nRF401、AT89C52微控制器和MAX3316接口芯片构成,工作在433.92/434.33MHz频段;
  nRF401是北欧集成电路公司(NORDIC)的产品,是一个为433MHz ISM频段设计的真正单片UHF无线收发芯片,满足欧洲电信工业标准(ETSI)EN300200-1 V1.2.1。它采用FSK调制解调技术,最高工作速率可以达到20K,发射功率可以调整,最大发射功率是+10dBm。nRF401的天线接口设计为差分天线,以便于使用低成本的PCB天线。它要求非常少的外围元件(约10个),无需声表滤波器、变容管等昂贵的元件,只需要便宜且易于获得的4MHz晶体,收发天线合一。无需进行初始化和配置,不需要对数据进行曼彻斯特编码,有两个工作频宽(433.92/434.33MHz),工作电压范围可以从2.7-5V,还具有待机模式,可以更省电和高效。
   
  nRF401无线收发芯片的结构框图如图1所示:内部结构可分为发射电路、接收电路、模式和低功耗控制逻辑电路及串行接口几部分。发射电路包含有:射频功率放大器、锁相环(PLL),压控振荡器(VCO),频率合成器等电路。基准振荡器采用外接晶体振荡器,产生电路所需的基准频率。
   
   其主要特性如下:
   ●工作频率为国际通用的数传频段
   ●FSK调制,抗干扰能力强,特别适合工业控制场合;
   ●采用PLL频率合成技术,频率稳定性极好;
   ●灵敏度高,达到-105dBm(nRF401);
  ●功耗小,接收状态250 A,待机状态仅为8 A(nRF401);
   ●最大发射功率达 +10dBm ;
   ●低工作电压(2.7V),可满足低功耗设备的要求;
   ●具有多个频道,可方便地切换工作频率 ;
   ●工作速率最高可达20Kbit/s(RF401);
   ●仅外接一个晶体和几个阻容、电感元件,基本无需调试;
   ●因采用了低发射功率、高接收灵敏度的设计,使用无需申请许可证,开阔地的使用距离最远可达1000米 (与具体使用环境及元件参数有关)。
TX与RX之间的切换
   
   当从RX切换到TX模式时,数据输入脚(DIN)必须保持为高至少1ms才能收发数据。当从TX切换到RX时,数据输出脚(DOUT)要至少3ms以后有数据输出。
   
  Standby与RX之间的切换
   
   从待机模式到接收模式,当PWR_UP输入设成1时,经过tSR时间后,DOUT脚输出数据才有效。对 nRF401来说,tST最长的时间是3ms。
   从待机模式到发射模式,所需稳定的最大时间是tST。
   
  Power Up与TX间的切换
   
   从加电到发射模式过程中,为了避免开机时产生干扰和辐射,在上电过程中TXEN的输入脚必须保持为低,以便于频率合成器进入稳定工作状态。当由上电进入发射模式时,TXEN必须保持1ms以后才可以往DIN发送数据。
   
   从上电到接收模式过程中,芯片将不会接收数据,DOUT也不会有数据输出,直到电压稳定达到2.7V以上,并且至少保持5ms。如果采用外部振荡器,这个时间可以缩短到3ms。
  
  在实际应用中,微控制器采用Atmel公司的AT89C52,分别用单片机的P1口各管脚控制nRF401的DIN、DOUT、TXEN、PWRUP、CS这五个脚即可。
      接口芯片采用美信公司的RS232转换芯片MAX3316,完成单片机和计算机RS232接口的电平转换及数据发送、接收、请求、清除功能。在nRF401芯片使用时,设定好工作频率,进入正常工作状态后,通过单片机根据需要进行收发转换控制,发送/接收数据或进行状态转换。在设计程序时,要注意各状态转换的时延。nRF401的通讯速率最高为20kbit/s,发送数据之前需将电路置于发射模式;接收模式转换为发射模式的转换时间至少为1ms;可以发送任意长度的数据;发射模式转换为接收模式的转换时间至少为3ms。在待机模式时,电路进入待机状态,电路不接收和发射数据。待机模式转换为发射模式的转换时间至少为4ms;待机模式转换为接收模式的转换时间至少为5.0ms。这里给出系统和程序的工作流程图
       1.2 单片射频收发器nRF905也可达到要求
nRF905是挪威Nordic VLSI公司推出的单片射频收发器,工作电压为1.9~3.6V,32引脚QFN封装(5由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器, ShockBurstTM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。此外,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。nRF905适用于无线数据通信、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域。NRF905比NRF401先进多了。能充分满足题目要求。
2. 芯片结构、引脚介绍及工作模式
   nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。nRF905的详细结构如图1所示。
2.2引脚介绍     表1:nRF905引脚
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
     nRF905有两种工作模式和两种节能模式。两种工作模式分别是ShockBurstTM接收模式和ShockBurstTM发送模式,两种节能模式分别是关机模式和空闲模式。nRF905的工作模式由TRX_CE、TX_EN和PWR_UP三个引脚决定,详见表2。file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
2.1ShockBurstTM模式
与射频数据包有关的高速信号处理都在nRF905片内进行,数据速率由微控制器配置的SPI接口决定,数据在微控制器中低速处理,但在nRF905中高速发送,因此中间有很长时间的空闲,这很有利于节能。由于nRF905工作于ShockBurstTM模式,因此使用低速的微控制器也能得到很高的射频数据发射速率。在ShockBurstTM接收模式下,当一个包含正确地址和数据的数据包被接收到后,地址匹配(AM)和数据准备好(DR)两引脚通知微控制器。在ShockBurstTM发送模式,nRF905自动产生字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。由以上分析可知,nRF905的ShockBurstTM收发模式有利于节约存储器和微控制器资源,同时也减小了编写程序的时间。下面具体详细分析nRF905的发送流程和接收流程。
2.2发送流程
典型的nRF905发送流程分以下几步:
接口的速率在通信协议和器件配置时确定;
B. 微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式;
C. nRF905的ShockBurstTM发送:
l 数据打包(加字头和CRC校验码);
2 发送数据包;
3 当数据发送完成,数据准备好引脚被置高;
D. AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;
E. 当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。
ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
2.3接收流程
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发送模式或关机模式。
当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,nRF905立即把其工作模式改变,数据包则丢失。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。
2.4节能模式
nRF905的节能模式包括关机模式和节能模式。
在关机模式,nRF905的工作电流最小,一般为2.5uA。进入关机模式后,nRF905保持配置字中的内容,但不会接收或发送任何数据。
空闲模式有利于减小工作电流,其从空闲模式到发送模式或接收模式的启动时间也比较短。在空闲模式下,nRF905内部的部分晶体振荡器处于工作状态。nRF905在空闲模式下的工作电流跟外部晶体振荡器的频率有关。
2.5 器件配置
所有配置字都是通过SPI接口送给nRF905。SIP接口的工作方式可通过SPI指令进行设置。当nRF905处于空闲模式或关机模式时,SPI接口可以保持在工作状态。
2.6SPI接口配置
SPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;射频配置寄存器包含收发器配置信息,如频率和输出功能等;发送地址寄存器包含接收机的地址和数据的字节数;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数据的字节数等信息。
2.7射频配置
  射频配置寄存器和内容如表3所示:
  3:射频配置寄存器file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
射频寄存器的各位的长度是固定的。然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS 4个寄存器使用字节数由配置字决定。nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。
2.8 应用电路
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif
nRF905在使用中,根据不同需要,其电路图不尽相同,图2所示为典型的应用原理图,该电路天线部分使用的是50Ω单端天线。在nRF905的电路板设计中,也可以使用环形天线,把天线布在PCB板上,这可减小系体积。
  file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
3.  NRF2401芯片是2.4G高频无线数字收发模块
  nRF2401是单片射频收发芯片,工作于2.4~2.5GHz ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。nRF2401无线收发一体芯片和蓝牙一样,都工作在2.4GHz自由频段,能够在全球无线市场畅通无阻。nRF2401支持多点间通信,最高传输速率超过1MBit/S,而且比蓝牙具有更高的传输速度。它采用SoC方法设计,只需少量外围元件便可组成射频收发电路。与蓝牙不同的是,nRF 2401没有复杂的通信协议,它完全对用户透明,同种产品之间可以自由通信。更重要的是,nRF 2401比蓝牙产品更便宜。所以nRnRF 2401是业界体积最小、功耗最少、外围元件最少的低成本射频系统级芯片。
3.1. 芯片结构、引脚说明
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。QFN24引脚封装,外形尺寸只有5×5mm。nRF2401的功能模块如图1所示。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif
3.2芯片结构
作模式工
nRF2401有工作模式有四种:收发模式、配置模式、空闲模式和关机模式。nRF2401的工作模式由PWR_UP 、CE、TX_EN和CS三个引脚决定,详见表2。  
表2:nRF2401工作模式  file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg

3.3 收发模式
nRF2401的收发模式有ShockBurstTM收发模式和直接收发模式两种,收发模式由器件配置字决定,具体配置将在器件配置部分详细介绍。
3.4.ShockBurstTM收发模式
ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401的ShockBurstTM技术同时也减小了整个系统的平均工作电流。
在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。
3.4.1 ShockBurstTM发射流程
接口引脚为CE,CLK1,DATA
A. 当微控制器有数据要发送时,其把CE置高,使nRF2401工作;
B. 把接收机的地址和要发送的数据按时序送入nRF2401;
C. 微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;
D. nRF2401的ShockBurstTM发射
2 给射频前端供电;
2 射频数据打包(加字头、CRC校验码);
2 高速发射数据包;
2 发射完成,nRF2401进入空闲状态。
3.4.2 ShockBurstTM接收流程
接口引脚CE、DR1、CLK1和DATA(接收通道1)
A. 配置本机地址和要接收的数据包大小;
B. 进入接收状态,把CE置高;
C. 200us后,nRF2401进入监视状态,等待数据包的到来;
D. 当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;
E. nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器;
F. 微控制器把数据从nRF2401移出;
G. 所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它工作流程。
3.5.1直接收发模式
在直接收发模式下,nRF2401如传统的射频收发器一样工作。
3.5.2直接发送模式
接口引脚为CE、DATA
A. 当微控制器有数据要发送时,把CE置高;
B. nRF2401射频前端被激活;
C. 所有的射频协议必须在微控制器程序中进行处理(包括字头、地址和CRC校验码)。
3.5.3直接接收模式
接口引脚为CE、CLK1和DATA
A. 一旦nRF2401被配置为直接接收模式,DATA引脚将根据天线接收到的信号开始高低变化(由于噪声的存在);
B. CLK1引脚也开始工作;
C. 一旦接收到有效的字头,CLK1引脚和DATA引脚将协调工作,把射频数据包以其被发射时的数据从DATA引脚送给微控制器;
D. 这头必须是8位;
E. DR引脚没用上,所有的地址和CRC校验必须在微控制器内部进行。
3.5.4配置模式
在配置模式,15字节的配置字被送到nRF2401,这通过CS、CLK1和DATA三个引脚完成,具体的配置方法请参考本文的器件配置部分。
3.5.5空闲模式
nRF2401的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关,如外部晶振为4MHz时工作电流为12uA,外部晶振为16MHz时工作电流为32uA。在空闲模式下,配置字的内容保持在nRF2401片内。
3.5.6 关机模式
在关机模式下,为了得到最小的工作电流,一般此时的工作电流小于1uA。关机模式下,配置字的内容也会被保持在nRF2401片内,这是该模式与断电状态最大的区别。
3.6. 器件配置
nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。由上文对nRF2401工作模式的介绍,我们可以知道,nRF2401一般工作于ShockBurstTM收发模式,这样,系统的程序编制会更加简单,并且稳定性也会更高,因此,下文着重介绍把nRF2401配置为ShockBurstTM收发模式的器件配置方法。
ShockBurstTM的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。ShockBurstTM的配置字可以分为以下四个部分:
数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码;
地址宽度:声明射频数据包中地址占用的位数。这使得nRF2401能够区分地址和数据;
地址:接收数据的地址,有通道1的地址和通道2的地址;
CRC:使nRF2401能够生成CRC校验码和解码。
当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。nRF2401配置字的各个位的描述如表3所示。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
在配置模式下,注意保证PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401。在CS引脚的下降沿,新送入的配置字开始工作。
3.7. 应用电路
图2为nRF2401的应用电路,由图可知,其只需要14个外围元件。nRF2401应用电路一般工作于3V,它可用多种低功耗微控制器进行控制。在设计过程中,设计者可使用单鞭天线或环形天线,上图为50欧姆单鞭天线的应用电路。在使用不同的天线时,为了得到尽可能大的收发距离,电感电容的参数应适当调整。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif
3.6. PCB设计
PCB设计对nRF2401的整体性能影响很大,所以PCB设计在nRF2401收发系统的开发过程中主要的工作之一,在PCB设计时,必须考虑到各种电磁干扰,注意调整电阻、电容和电感的位置,特别要注意电容的位置。
nRF2401的PCB一般都是双层板,底层一般不放置元件,为地层,顶层的空余地方一般都敷上铜,这些敷铜通过过孔与底层的地相连。直流电源及电源滤波电容尽量靠近VDD引脚。nRF2401的供电电源应通过电容隔开,这样有利于给nRF2401提供稳定的电源。在PCB中,尽量多打一些通孔,使顶层和底层的地能够充分接触。
4.三种方案比较论证
  nRF401工作速率最高达20Kbit/s应用时偏低。 接口芯片采用美信公司的RS232转换芯片MAX3316,完成单片机和计算机RS232接口的电平转换及数据发送、接收、请求、清除功能。在nRF401芯片使用时,设定好工作频率,进入正常工作状态后,通过单片机根据需要进行收发转换控制,发送/接收数据或进行状态转换。在设计程序时,要注意各状态转换的时延。通信协议的设计nRF401是程序繁杂难以在短时间内调试好。平时大多数情况下应处于关闭状态,由于无线部分硬件上是不具备自动唤醒功能的,为了达到节能的目的,必须通过软件方式采用合理的通信协议以保证节能同时不丢失数据。接收模式转换为发射模式的转换时间至少为1ms;可以发送任意长度的数据;发射模式转换为接收模式的转换时间至少为3ms。在待机模式时,电路进入待机状态,电路不接收和发射数据。待机模式转换为发射模式的转换时间至少为4ms;待机模式转换为接收模式的转换时间至少为5.0ms。延时问题也需要程序弥补不好调试。
nRF905工作速率最高达100Kbit/s,频道之间的转换时间小于650us。与射频数据包有关的高速信号处理都在nRF905片内进行,数据速率由微控制器配置的SPI接口决定,数据在微控制器中低速处理,但在nRF905中高速发送,因此中间有很长时间的空闲,这很有利于节能。与nRF401相比与相当大的改进。当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给nRF905SPI接口的速率在通信协议和器件配置时确定;微控制器置高TRX_CETX_EN,激发nRF905ShockBurstTM发送模式;射频寄存器自动开启;数据打包(加字头和CRC校验码);发送数据包;当数据发送完成,数据准备好引脚被置高;当数据发送完成,数据准备好引脚被置高当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_ENTX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
nRF2401芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。该器件有125个频点,能够实现点对点、点对多点的无线通信,同时可采用改频和跳频来避免干扰。nRF2401最大传输速率可达1Mbit/s,其最大发射功率为-5dBm,在比较理想环境中,其室内传输距离可达50~90米,室外传输距离可达100-200米。nRF2401的灵敏度为-90dBm,工作电压为1.9V~3.3,工作温度范围为-40~+80℃。在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。
1 ShockBurstTM发射流程
接口引脚为CE,CLK1,DATA
A. 当微控制器有数据要发送时,其把CE置高,使nRF2401工作;
B. 把接收机的地址和要发送的数据按时序送入nRF2401;
C. 微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;
D. nRF2401的ShockBurstTM发射
1 给射频前端供电;
2 射频数据打包(加字头、CRC校验码);
3 高速发射数据包;
4 发射完成,nRF2401进入空闲状态。
2 ShockBurstTM接收流程
接口引脚CE、DR1、CLK1和DATA(接收通道1)
A. 配置本机地址和要接收的数据包大小;
B. 进入接收状态,把CE置高;
C. 200us后,nRF2401进入监视状态,等待数据包的到来;
D. 当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;
E. nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器;
F. 微控制器把数据从nRF2401移出;有空闲模式降低功耗,发送数据打包,
G. 所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它工作流程。
3.直接发送模式
接口引脚为CEDATA
A.
当微控制器有数据要发送时,把CE置高;
B. nRF2401
射频前端被激活;
C.
所有的射频协议必须在微控制器程序中进行处理(包括字头、地址和CRC校验码)
4.
直接接收模式
接口引脚为CECLK1DATA
A.
一旦nRF2401被配置为直接接收模式,DATA引脚将根据天线接收到的信号开始高低变化(由于噪声的存在)
B. CLK1
引脚也开始工作;
C.
一旦接收到有效的字头,CLK1引脚和DATA引脚将协调工作,把射频数据包以其被发射时的数据从DATA引脚送给微控制器;
D.
这头必须是8位;
E. DR
引脚没用上,所有的地址和CRC校验必须在微控制器内部进行。
nRF2401通过ShockBurstTM收发模式进行无线数据发送,收发可靠度高。
总结:nRF401电路焊接多、程序繁杂,调试不好实现,发送频率低,频道转换时间长,容易丢数据包,出错率高。所以不选用nRF401nRF905 发送频率可以,由微控制口SPI写发送数据,ShockBurstTM发送模式;射频寄存器自动开启;数据打包(加字头和CRC校验码);发送数据包;当数据发送完成,数据准备好引脚被置高;当数据发送完成,数据准备好引脚被置高当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。可是nRF905的微控制器配置的SPI及寄存器配置繁杂给系统调试带来麻烦。射频寄存器的各位的长度是固定所有信息都有SPI来实现。所以不选用nRF905nRF2401发射功率大,本身功耗低,灵敏度高,并且有nRF905的所有优越性的无线数字收发性能,且使我们的系统调试更加快速。也是与整个系统匹配的最佳选择。它的直接发送模式和直接接收模式是优于其它模块的特色。所以最终选择nRF2401
结果也证明了nRF2401确实是实现无线数字收发的可靠选择。
四、硬件系统设计:
1硬件控制系统PS/2电脑键盘
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.giffile:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.giffile:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif
  
        
89C2051
   
   
   
  
        
   
Max232
   
   
   
  
        
89S52
   
单片机
   
   
   
  
        
PS/2电脑键盘
   
   
   
因为整个系统需要控制的键许多。十六个通道,两个电机控制,发送数据等控制键很多,所以不用单键及小键盘,通过键盘编码传给89S52单片机,然后89S5289C2051经过Max232实现单片机与单片机串行通信。如图示:
这样设计增加控制键又省去了不必要的设计麻烦。       file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image015.gif
2微控制系统单片机之间实现串行通信
  file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gif
  选择89S52是因为它可通过Max232与电脑通信可观测单片机发送的数据,可以对设计串行通信发送的数据分析和改进程序。就是因为89S52这些功能才使整个系统可以应用PS/2电脑键盘。
  利用两个单片机是因为两个CPU可以提高工作效率。另外NRF2401的工作电压小于单片机的工作电压而89C2051可低电压工作。所以用89C2051实现微控制对NRF2401控制及传送数据。同时也降低了功耗,串行通信的程序中有校验程序,从而避免了错码,使NRF2401发送的数据完全正确。只有无错码才能达到无线遥控的操作正确,这样才能提高整个系统的性能。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
  
3无线数字发射系统
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
利用89C2051对NRF2401传送数据和对NRF2401寄存器配置,以及对NRF2401的控制。从而实现无线数字发射
4、无线数字接受系统
   与无线数字发射系统相似用NRF2401接受数据包传给89C2051,再由89C2051与89S52 串行通信传递数据,经89S52解码后选择相应通道。
如图所示:
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif

5通道显示系统
显示用大型号发光二极管显示。
  
        
89S52
   
   
   
   
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif
6摄相头采集系统
  
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif

file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg
电机驱动芯片
此功能是无线遥控拓展,是实现更好的无线遥控必然趋势。由此项高级功能才能完备整个系统的安全、无误的进行工作。
     
     
7监控系统设计
  利用小电视机对摄相头采集、发射的图象进行接受。如图示:
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image035.gif     
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image037.gif
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image038.gif
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image039.gif


   8时钟显示系统
  无论工作在什么地方都需要有时间显示,在本系统中电子钟是本系统的辅助单元。可以使整个大的系统更有合理的应用价值。为操作者提供舒适环境。本系统用单片机控制,七位共阳极数码管显示有74LS0474LS07进行驱动,且可调时等功能。
9
总结;整个的系统可用下列图示说明:
发射部分
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image040.gif

接受部分
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image041.giffile:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image042.gif

五、软件系统设计:
   本系统主要是三大部分:单片机与单片机串行通信程序,对PS/2键盘编码及译码程序,单片机对nRF2401的控制及传递数据程序。
1单片机与单片机串行通信程序
2对PS/2键盘编码及译码程序
3单片机对nRF2401的控制及传递数据程序。
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image044.jpg
file:///C:/Users/chang/AppData/Local/Temp/msohtmlclip1/01/clip_image046.jpg
六、功能测试及结果分析:
七、参考书目:
黄智伟 编著 《无线数字收发电路设计》——电路原理与应用实例
周立功 等编著速成与实践》——增强型80C51单片机
黄智伟 等编著 《训练教程》——全国大学生电子设计竞赛
附录:部分程序
1.      1单片机对nRF2401的控制及传递数据程序
<发射程序>
#include<At89x051.h>
//脚的定义
#define RxD         P3_0
#define TxD         P3_1
#define TxLED       P3_4
#define RxLED       P3_5
#definePWR_UP      P1_7
#define CE          P1_6
#define  CS        P1_2
#define CLK1        P3_2
#define  DR1       P1_1
#define DATA        P1_0
//测试用nRF2401寄存器数据
const unsignedtest_config[18]={
        0x8e,0x08,0x1e,     
        0x08,0x08,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xa3,0x2f,         
        0x64               
    };
//RF2401寄存器数据
const unsignedconfigbyte[18]={
                0x8e,0x08,0x1c,        
                0x08,0x08,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xa3,0x6f,              
                0x64           
        };
unsigned charrx_data_buf[1];   
unsigned charincrease_data;
unsigned chartask_switch;
unsigned charget_tx_data_for_pc();
voidsystem_init(void);
voidwrite_spi_one_byte(unsigned char data_buf);
voidconfig_2401(void);
voidconfig_test(void);
voiddelay_ms(unsigned int delay_counter);
voidsend_data(unsigned input_data);
void send_data_rf(void);
voidtransmit_mode(void);
void main(void);
//系统初始化
voidsystem_init(void)
{
    unsigned char i;
    PWR_UP=0;
    CE=0;
    CS=0;
    CLK1=0;
    DATA=0;           
    for(i=0;i<8;i++)            
        rx_data_buf=0;
    config_2401();
    delay_ms(2);
    TxLED=0;        
    RxLED=1;
    TMOD=0x20;                  
    SCON=0x50;                 
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    EA=0;
}
//RF2401写数据函数
voidwrite_spi_one_byte(unsigned char data_buf)
{
    unsigned char i;
    unsigned char j;
    j=0x80;//0b10000000
    while(j>0)
    {
        i=data_buf&j;
        if(i==0)
            DATA=0;
        else
            DATA=1;
        CLK1=1;
        j>>=1;
        CLK1=0;
    }
}
//RF2401寄存器写数据
voidconfig_2401(void)
{
    unsigned char i;
    PWR_UP=1;                     
    delay_ms(5);                  
    CE=0;                          
    CS=1;                          
    i=1;                          
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(configbyte);
    CS=0;
    DATA=0;
    CE=1;
}
//系统测试
voidconfig_test(void)
{
    unsigned char i;
    PWR_UP=1;                     
    delay_ms(5);                  
    CE=0;                           
    CS=1;                          
    i=1;                          
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(test_config);
    CS=0;
    DATA=0;
    CE=1;                          
}
//延时函数
voiddelay_ms(unsigned int delay_counter)
{
    unsigned int i;
    while(delay_counter--)
    {
        i=81;
        while(i--);
    }
}
//发射数据函数
voidsend_data(unsigned input_data)
{
    unsigned char i;
    PWR_UP=1;              
    delay_ms(5);           
    CE=1;                  
    i=1;                  
    while(i--);
    write_spi_one_byte(0xaa);         
    write_spi_one_byte(0xbb);           
    write_spi_one_byte(0xcc);         
    write_spi_one_byte(0xdd);         
    write_spi_one_byte(0xee);         
    for(i=0;i<1;i++)
        write_spi_one_byte(input_data);
    CE=0;                  
    i=50;                                    
        while(i--);
        PWR_UP=0;              
}
//从串行获的数据
unsigned char  get_tx_data_for_pc()
{  unsigned char chuanh=0x00;
    while(RI==0);
    chuanh=SBUF ;
    RI=0;
    return(chuanh);
}
//RF2401发射数据
voidsend_data_rf(void)
{       increase_data=get_tx_data_for_pc();
        TxLED=0;               
        send_data(increase_data);
        delay_ms(1);
        TxLED=1;              
        delay_ms(1);
}
//主函数
void main(void)
{
    system_init();
    while (1)
    {
          send_data_rf();         
        }
    }
2单片机对nRF2401的控制及传递数据程序
<接收程序>
#include<At89x051.h>
//脚的定义
#define RxD         P3_0
#define TxD         P3_1
#define TxLED       P3_4
#define RxLED       P3_5
#definePWR_UP      P1_7
#define CE          P1_6
#define  CS        P1_2
#define CLK1        P3_2
#define  DR1       P1_1
#define DATA        P1_0
//测试
const unsignedtest_config[18]={
        0x8e,0x08,0x1e,     
        0x08,0x08,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xaa,0xbb,0xcc,0xdd,0xee,
        0xa3,0x2f,         
        0x64              
    };
//2401寄存器数据
const unsignedconfigbyte[18]={
                0x8e,0x08,0x1c,        
                0x08,0x08,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xaa,0xbb,0xcc,0xdd,0xee,
                0xa3,0x6f,              
                0x65           
        };
unsigned charrx_data_buf[1];      
unsigned charincrease_data;
void system_init(void);
voidwrite_spi_one_byte(unsigned char data_buf);
voidconfig_2401(void);
voidconfig_test(void);
voidreceive_data(unsigned payload_length);
unsigned charread_spi_one_byte(void);
voiddelay_ms(unsigned int delay_counter);
void receive_mode(void);
void main(void);
//系统初始化
voidsystem_init(void)
{
    unsigned char i;
    PWR_UP=0;
    CE=0;
    CS=0;
    CLK1=0;
    DATA=0;
   
    for(i=0;i<8;i++)         
        rx_data_buf=0;   
    config_2401();
    delay_ms(2);
    TxLED=0;      
    RxLED=1;
    TMOD=0x20;                 
    SCON=0x50;               
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    EA=0;
}
//从串行传数据
voidsend_rx_data_to_pc(unsigned char payload_length)
{
   
        TI=0;
        SBUF=rx_data_buf[0];
        while(TI==0);
  
}
//对寄存器写数据
voidwrite_spi_one_byte(unsigned char data_buf)
{
    unsigned char i;
    unsigned char j;
    j=0x80;//0b10000000
    while(j>0)
    {
        i=data_buf&j;
        if(i==0)
            DATA=0;
        else
            DATA=1;
        CLK1=1;
        j>>=1;
        CLK1=0;
    }
}
//RF2401写寄存器数据
voidconfig_2401(void)
{
    unsigned char i;
    PWR_UP=1;                       
    delay_ms(5);                    
    CE=0;                        
    CS=1;                           
    i=1;                           
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(configbyte);
    CS=0;
    DATA=0;
    CE=1;
}
//测试
voidconfig_test(void)
{
    unsigned char i;
    PWR_UP=1;                     
    delay_ms(5);                    
    CE=0;                           
    CS=1;                           
    i=1;                           
    while(i--);
    for(i=0;i<18;i++)
        write_spi_one_byte(test_config);
    CS=0;
    DATA=0;
    CE=1;                           
}
//接收数据
voidreceive_data(unsigned payload_length)
{
    unsigned char i;
    for(i=0;i<payload_length;i++)
        rx_data_buf=read_spi_one_byte();
}
//RF2401写数据
unsigned charread_spi_one_byte(void)
{
    unsigned char j;
    unsigned char data_buf;
    j=0x80;
    while(j>0)
    {
          DATA=1;
        data_buf<<=1;
        if(DATA==1)
            data_buf|=0x01;
        CLK1=1;
        j>>=1;
        CLK1=0;
    }
    return data_buf;
}
//延时
voiddelay_ms(unsigned int delay_counter)
{
    unsigned int i;
    while(delay_counter--)
    {
        i=81;
        while(i--);
    }
}
//接收数据
voidreceive_mode(void)
{
    //change_rf_txrx_mode(1);        //Change the RF to the receive mode
    while(START_SW!=0)
    {
        if(DR1==1)
        {
            RxLED=0;
            receive_data(8);
              delay_ms(50);
            RxLED=1;
            send_rx_data_to_pc(8);
        }
    }
   
}
//主函数
void main(void)
{
    system_init();
    while (1)
    {
                receive_mode();         
        }
    }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表