nrf905资料中文.docx

上传人:b****0 文档编号:17900421 上传时间:2023-08-04 格式:DOCX 页数:18 大小:21.58KB
下载 相关 举报
nrf905资料中文.docx_第1页
第1页 / 共18页
nrf905资料中文.docx_第2页
第2页 / 共18页
nrf905资料中文.docx_第3页
第3页 / 共18页
nrf905资料中文.docx_第4页
第4页 / 共18页
nrf905资料中文.docx_第5页
第5页 / 共18页
nrf905资料中文.docx_第6页
第6页 / 共18页
nrf905资料中文.docx_第7页
第7页 / 共18页
nrf905资料中文.docx_第8页
第8页 / 共18页
nrf905资料中文.docx_第9页
第9页 / 共18页
nrf905资料中文.docx_第10页
第10页 / 共18页
nrf905资料中文.docx_第11页
第11页 / 共18页
nrf905资料中文.docx_第12页
第12页 / 共18页
nrf905资料中文.docx_第13页
第13页 / 共18页
nrf905资料中文.docx_第14页
第14页 / 共18页
nrf905资料中文.docx_第15页
第15页 / 共18页
nrf905资料中文.docx_第16页
第16页 / 共18页
nrf905资料中文.docx_第17页
第17页 / 共18页
nrf905资料中文.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

nrf905资料中文.docx

《nrf905资料中文.docx》由会员分享,可在线阅读,更多相关《nrf905资料中文.docx(18页珍藏版)》请在冰点文库上搜索。

nrf905资料中文.docx

nrf905资料中文

拆分词条nRF905单片无线收发器

nRF905单片无线收发器是挪威Nordic公司推出的单片射频发射器芯片,工作电压为1.9-3.6V,32引脚QFN封装(5mm×5mm),工作于433/868/915MHz3个ISM频道(可以免费使用)。

目录

nRF905概述

特点工作模式器件配置接口外围的RF信息NRF905无线传输c程序附加资料nRF905概述特点工作模式器件配置接口外围的RF信息NRF905无线传输c程序

附加资料

RF905概述

nRF905可以自动完成处理字头和CRC(循环冗余码校验)的工作,可由片内硬件自动完成曼彻斯特编码/解码,使用SPI接口与微控制器通信,配置非常方便,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,在接收模式时电流为12.5mA。

nRF905单片无线收发器工作由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。

ShockBurst工作模式的特点是自动产生前导码和CRC,可以很容易通过SPI接口进行编程配置。

特点

真正的单片  

低功耗ShockBurst工作模式  工作电源电压范围1.9—3.6V  多通道工作—ETSI/FCC兼容  通道切换时间  <650us极少的材料消耗  无需外部  SAW滤波器输出功率可调至10dBm  传输前监听的载波检测协议  当正确的数据包被接收或发送时有数据准备就绪信号输出  侦测接收的数据包当地址正确输出地址匹配信号应用:

  无线数据通讯  家庭自动化  无线遥控  报警及  安全系统监测  汽车  遥感勘测  无线门禁  玩具  工作模式

  nRF905采用Nordic公司的VLSIShockBurst技术。

ShockBurst技术使nRF905能够提供高速的数据传输,而不需要昂贵的高速MCU来进行数据处理/时钟覆盖。

通过将与RF协议有关的高速信号处理放到芯片内,nRF905提供给应用的微控制器一个SPI接口,速率由微控制器自己设定的接口速度决定。

nRF905通过ShockBurst工作模式在RF以最大速率进行连接时降低数字应用部分的速度来降低在应用中的平均电流消耗。

在ShockBurstRX模式中,地址匹配AM和数据准备就绪DR信号通知MCU一个有效的地址和数据包已经各自接收完成。

在ShockBurstTX模式中,nRF905自动产生前导码和CRC校验码,数据准备就绪DR信号通知MCU数据传输已经完成。

总之,这意味着降低MCU的存储器需求也就是说降低MCU成本,又同时缩短软件开发时间。

  1)、典型ShockBurstTX模式:

  ①、当应用MCU有遥控数据节点时,接收节点的地址TX-address和有效数据TX-payload通过SPI接口传送给nRF905应用协议或MCU设置接口速度;

  ②、MCU设置TRX_CE、TX_EN为高来激活nRF905ShockBurst传输;

  ③、nRF905ShockBurst:

无线系统自动上电  

数据包完成(加前导码和CRC校验码)  

数据包发送(100kbps,GFSK,曼  切斯特编码)

  ④、如果AUTO_RETRAN被设置为高nRF905将连续地发送数据包直到TRX_CE被设置为低;

  ⑤、当TRX_CE被设置为低时,nRF905结束数据传输并自动进入standby模式。

  2)、典型ShockBurstRX模式

  ①、通过设置TRX_CE高,TX_EN低来选择ShockBurst模式;

  ②、650us以后,nRF905监测空中的信息;

  ③、当nRF905发现和接收频率相同的载波时,载波检测CD被置高;

  ④、当nRF905接收到有效的地址时,地址匹配AM被置高;

  ⑤、当nRF905接收到有效的数据包(CRC校验正确)时,nRF905去掉前导码、地址和CRC位,数据准备就绪(DR)被置高;

  ⑥、MCU设置TRX_CE低,进入standby模式低电流模式;

  ⑦、MCU可以以合适的速率通过SPI接口读出有效数据;

  ⑧、当所有的有效数据被读出后,nRF905将AM和DR置低;

  ⑨、nRF905将准备进入ShockBurstRX、ShockBurstTX或Powerdown模式。

  3)、掉电模式

  在掉电模式中,nRF905被禁止,电流消耗最小,典型值低于2.5uA。

当进入这种模式时,nRF905是不活动的状态。

这时候平均电流消耗最小,电池使用寿命最长。

在掉电模式中,配置字的内容保持不变。

  4)、STANDBY模式

Standby模式在保持电流消耗最小的同时保证最短的ShockBurstRX、ShockBurstTX的启动时间。

当进入这种模式时,一部分晶体振荡器是活动的。

电流消耗取决于晶体振荡器频率,如:

当频率为4MHZ时,IDD=12uA;当频率为20MHZ时,IDD=46uA。

如果uPCLK(Pin3)被使能,电流消耗将增加。

并且取决于负载电容和频率。

在此模式中,配置字的内容保持不变。

器件配置

  nRF905的所有配置都通过SPI接口进行。

SPI接口由5个寄存器组成,一条SPI指令用来决定进行什么操作。

SPI接口只有在掉电模式和Standby模式是激活的。

  1)、状态寄存器(Status-Register)

  寄存器包含数据就绪DR和地址匹配AM状态。

  2)、RF配置寄存器(RF-ConfigurationRegister)

  寄存器包含收发器的频率、输出功率等配置信息。

  3)、发送地址(TX-Address)

  寄存器包含目标器件地址,字节长度由配置寄存器设置。

  4)、发送有效数据(TX-Payload)

  寄存器包含发送的有效ShockBurst数据包数据,字节长度由配置寄存器设置。

  5)、接收有效数据(RX-Payload)

寄存器包含接收到的有效ShockBurst数据包数据,字节长度由配置寄存器设置。

在寄存器中的有效数据由数据准备就绪DR指示。

接口

  1)、模式控制接口:

  该接口由PWR、TRX_CE、TX_EN组成控制由nRF905组成的高频头的四种工作模式:

掉电和SPI编程模式;待机和SPI编程模式;发射模式;接收模式。

  2)、SPI接口:

  SPI接口由CSN、SCK、MOSI以及MISO组成。

在配置模式下单片机通过SPI接口配置高频头的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。

3)、状态输出接口:

提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。

围的RF信息

  1)、晶体规格

  为了实现晶体振荡器低功耗和快速启动时间的解决方案,推荐使用低值晶体负载电容。

指定CL=12pF是可以接受的。

但是,也可能增大到16pF。

指定一个晶体并行相等电容,Co=1.5pF也是很好的,但这样一来会增加晶体自身成本。

典型的设定晶体电容Co=1.5pF,指定Co_max=7.0pF。

  2)、外部参考时钟

  一个外部参考时钟如MCU时钟,可以用来代替晶体震荡器。

这个时钟信号应该直接连接到XC1引脚,XC2引脚为高阻态。

当使用外部时钟代替晶体时钟工作时,始终必须工作在Standby模式以降低电流消耗。

如果器件被设置成Standby模式而没有使用外部时钟或晶体时钟,则电流消耗最大可达1mA。

  3)、微处理器输出时钟

  在默认情况下,微处理器提供输出时钟。

在Standby模式下提供输出时钟将增加电流消耗。

在Standby模式电流消耗取决于频率和外部晶体负载、输出时钟的频率和提供输出时钟的电容负载。

  4)、天线输出

  ANT1和ANT2输出脚给天线提供稳定的RF输出。

这两个脚必须有连接到VDD_PA的直流通路,通过RF扼流圈,或者通过天线双极的中心点。

在ANT1和ANT2之间的负载阻抗应该在200-700Ω范围内,通过简单的匹配网络或RF变压器(不平衡变压器)可以获得较低的阻抗(例如50Ω)。

NRF905无线传输c程序

  发送部分

  /****************************

  //写发射数据命令:

20H

  //读发射数据命令:

21H

  //写发射地址命令:

22H

  //读发射地址命令:

23H//读接收数据命令:

24H

  ******************************/

  #include

  #defineuintunsignedint

  #defineucharunsignedchar

  sbitTXEN=P2^7;//配置口定义5`6`7//

  sbitTRX_CE=P2^6;

  sbitPWR=P2^5;

  sbitMISO=P2^2;//SPI口定义0`1`2`3//

  sbitMOSI=P2^3;

  sbitSCK=P2^1;

  sbitCSN=P2^0;

  sbitDR=P2^4;//状态输出口4//

  sbitled=P1^0;

  /************//*RF寄存器配置*//*************

  //0x00,//配置命令//

  //0x6C,//CH_NO,配置频段在433.2MHZ

  //0x0E,//输出功率为10db,不重发,节电为正常模式

  //0x44,//地址宽度设置,为4字节

  //0x03,0x03,//接收发送有效数据长度为3字节

  //0xE7,0xE7,0xE7,0xE7,//接收地址,16位CRC校验,外部时钟信号使能,16M晶振//UP_CLK输出1MHZ频率

  //0xDE,//CRC充许

  //******************************/

  /*ucharcodeRFConf[11]={0x00,0x6c,0x0e,0x44,0x03,0x03,

  0xe7,0xe7,0xe7,0xe7,0xde};

  */

  ucharRFConf[11]=

  {

  0x00,//配置命令//

  0x4c,//CH_NO,配置频段在423MHZ

  0x0C,//输出功率为10db,不重发,节电为正常模式

  0x44,//地址宽度设置,为4字节

  0x02,0x02,//接收发送有效数据长度为32字节

  0xCC,0xCC,0xCC,0xCC,//接收地址

  0x58,//CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振

  };

  voiddelay(uintz)

  {

  uintx,y;

  for(x=z;x>0;x--)

  for(y=110;y>0;y--);

  }

  voidSpiWrite(uchardate)//用SPI口写数据至NRF905内//

  {

  uchari;

  for(i=0;i<8;i++)

  {

  delay

(1);

  SCK=0;

  MOSI=(date&0x80);

  date<<=1;

  delay

(1);

  SCK=1;

  delay

(1);

  SCK=0;

  }

  SCK=0;

  }

  voidTxPacket(void)

  {

  //TXEN=1;

  CSN=0;

  SpiWrite(0x22);//写发送地址,后面跟4字节地址//

  SpiWrite(0xcc);

  SpiWrite(0xcc);

  SpiWrite(0xcc);

  SpiWrite(0xcc);

  CSN=1;

  delay

(1);

  CSN=0;

  SpiWrite(0x20);//写发送数据命令,后面跟三字节数据//

  SpiWrite(0x01);

  SpiWrite(0x02);

  //SpiWrite(0x04);

  CSN=1;

  delay

(1);

  TRX_CE=1;//使能发射模式//

  delay

(1);//等带发送完成//

  led=~led;

  //while(!

DR);//在非屏蔽状态下,只能发射一次

  TRX_CE=0;

  //led=~led;//加上led后,对接收产生了一定的影响,

  //while(!

DR);//有时多接收一次的数据

  }

  voidIni_System(void)

  {//初始化配置寄存器//

  uchari;

  //delay

(1);

  CSN=1;

  SCK=0;

  DR=0;

  PWR=1;//进入掉电模式

  TRX_CE=0;

  TXEN=0;

  delay

(1);

  CSN=0;//进入SIP模式

  for(i=0;i<11;i++)

  {

  SpiWrite(RFConf[i]);//设置配置寄存器

  }

  CSN=1;//关闭SPI,进入发射状态

  //PWR=1;

  TRX_CE=1;//CE,EN同时为1,为发送模式

  TXEN=1;

  }

  voidmain(void)

  {

  led=1;

  Ini_System();//设置配置,并进入发射模式

  //PWR=1;//进入掉电模式

  while

(1)

  {

  TxPacket();//发送数据

  led=~led;

  DR=0;

  }

  }

  接收部分

  #include

  #defineuintunsignedint

  #defineucharunsignedchar

  bitlcdbit;

  sbitTXEN=P2^7;//配置口定义7`6`5//

  sbitTRX_CE=P2^6;

  sbitPWR=P2^5;

  sbitMISO=P2^2;//SPI口定义0`1`2`3//

  sbitMOSI=P2^3;

  sbitSCK=P2^1;

  sbitCSN=P2^0;

  sbitDR=P2^4;//状态输出口4//

  sbitled=P1^0;

  /************//*RF寄存器配置*//*************

  //0x00,//配置命令//

  //0x6C,//CH_NO,配置频段在433.2MHZ

  //0x0E,//输出功率为10db,不重发,节电为正常模式

  //0x44,//地址宽度设置,为4字节

  //0x03,0x03,//接收发送有效数据长度为3字节

  //0xE7,0xE7,0xE7,0xE7,//接收地址,16位CRC校验,外部时钟信号使能,16M晶振//UP_CLK输出1MHZ频率

  //0xDE,//CRC充许

  //******************************/

  /*ucharcodeRFConf[11]={0x00,0x6c,0x0e,0x44,0x03,0x03,

  0xe7,0xe7,0xe7,0xe7,0xde};

  */

  ucharRFConf[11]={//配置命令//

  0x00,0x4c,0x0c,0x44,0x02,0x02,

  0xcc,0xcc,0xcc,0xcc,0x58//CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振

  };

  ucharTxRxBuffer[2];

  uchardate;

  voiddelay(uintz)

  {

  uintx,y;

  for(x=z;x>0;x--)

  for(y=110;y>0;y--);

  }

  voidSpiWrite(unsignedchardate)//用SPI口写数据至NRF905内//

  {

  uchari;

  for(i=0;i<8;i++)

  {

  delay

(1);

  SCK=0;

  MOSI=(date&0x80);

  date<<=1;

  delay

(1);

  SCK=1;

  delay

(1);

  SCK=0;

  }

  SCK=0;

  }

  unsignedcharSpiRead(void)//from905readdata//

  {

  uchari;

  for(i=0;i<8;i++)

  {

  date<<=1;

  SCK=0;

  delay

(1);

  date|=MISO;

  SCK=1;

  delay

(1);

  }

  SCK=0;

  return(date);

  }

  voidRxPacket(void)//接收数据包//

  {

  uchari;

  //while(DR)

  for(i=0;i<2;i++)

  {

  //led=~led;

  TxRxBuffer[i]=SpiRead();

  //i++;

  }

  }

  voidWait_Rec_Packet(void)//等待接收数据包//

  {

  //uchartemp;

  //PWR=1;

  TXEN=0;//接收模式

  TRX_CE=1;

  delay

(2);

  while(!

DR)

  {delay(10);

  //if(DR)//数据接收成功

  {

  led=~led;

  TRX_CE=0;//如果数据准备好,则进入待机模式,以便SPI口操作

  CSN=0;

  delay

(1);

  SpiWrite(0x24);//读nRF905所接受到的数据

  RxPacket();//保存数据

  CSN=1;

  delay(10);

  TRX_CE=1;

  /*temp=TxRxBuffer[0]+TxRxBuffer[1]+TxRxBuffer[2];

  if(temp==0x07)

  {

  lcdbit=!

lcdbit;//lcdbit=0

  }*/

  break;

  }

  }

  }

  voidIni_System(void)//初始化配置寄存器//

  {

  uchari;

  //lcdbit=1;

  CSN=1;

  SCK=0;

  DR=0;

  PWR=1;//进入掉电模式

  TRX_CE=0;

  TXEN=0;

  delay

(1);

  CSN=0;//进入SIP模式

  for(i=0;i<11;i++)

  {

  SpiWrite(RFConf[i]);//设置配置寄存器

  }

  CSN=1;//关闭SPI,进入接收状态

  PWR=1;

  //TRX_CE=1;

  //TXEN=0;

  }

  voidmain(void)

  {

  P0=0x00;

  led=1;

  Ini_System();//设置配置,并进入接收模式(收)

  PWR=1;//进入掉电模式

  while

(1)

  {

  Wait_Rec_Packet();//等待接收完成,保存完接收数据(保存数据+地址)

  //CSN=0;

  P0=TxRxBuffer[0];

  delay(600);

  P0=TxRxBuffer[1];

  delay(600);

  P0=TxRxBuffer[2];

  delay(600);

  //CSN=1;

  }

  }

  程序经本人测试后没太大问题,如要深入研究,本人附加详细资料,希望对您有所帮助。

附加资料

  基于nRF905模块的AT89S单片机无线收发系统设计

  管脚名称管脚功能说明

  1VCC电源电源+3.3~3.6VDC

  2TX_EN数字输入工作模式选择

  3TRX_CE数字输入使能芯片发射或接收

  4PWR_UP数字输入芯片上电

  5uCLK时钟输出(未使用)

  6CD数字输出载波检测

  7AM数字输出地址匹配

  8DR数字输出接收或发射数据完成

  9MISOSPI接口SPI输出

  10MOSISPI接口SPI输入

  11SCKSPI时钟SPI时钟

  12CSNSPI使能SPI使能

  13、14GND地接地

  下面为典型的nRF905模块数据发送流程[3]:

  

(1)当微控制器要发送数据时,将接收机的地址和发

  送数据通过SPI接口传输给nRF905模块;

  

(2)微控制器设置TRX_CE和TX_EN管脚同时置为

  高电平,启动发送端的nRF905模块为发送模式;

  (3)发送端的nRF905模块发送过程处理:

  a)射频寄存器开启;

  b)数据打包(加字头和CRC校验码);

  c)数据包发送;

  d)当数据包发送结束,将数据发送完成管脚(DR管脚)

  置为高电平;

  (4)如果AUTO_RETRAN被设置为高,nRF905模块

  将连续地发送数据包,直到TRX_CE被设置为低;

  (5)TRX_CE被设置为低时,nRF905模块数据包发送

  过程结束并回到待机模式。

  AT89S单片机控制nRF905模块数据发送流程图如图3

  所示。

  

  下面为典型的nRF905模块数据接收流程[4]:

  

(1)微控制器控制TRX_CE为高电平、TX_EN为低电

  平,nRF905模块进入接收模式;

  

(2)650us后,nRF905模块监测空中的信息,等待接

  收数据;

  (3)当nRF905模块检测到与接收频率相同的载波时,

  设置载波检测管脚(CD管脚)为高电平;

  (4)当nRF905模块接收到有效的地址时,设置地

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2