nRF905模块和SPI接口的点对点无线通信系统
- 格式:pdf
- 大小:182.24 KB
- 文档页数:3
nRF905射频芯片无线通信C程序调试#include"c8051F310.h"#include"nRF905.h"#include"my_type.h"#include "math.h"sbit SCK0 = P1^0;sbit MISO0 = P1^1;sbit MOSI0 = P1^2;sbit CSN = P1^3;// 905SPI使能sbit PWR = P1^4;sbit CE = P1^5;sbit TXE = P1^6;sbit CD = P1^7;sbit AM = P2^0;sbit DR = P2^1;sbit uCK = P2^2;sbit CS = P3^1;// 331SPI使能sbit D1 = P3^3;sbit K1 = P2^7;#define LED1_ON() D1=0#define LED1_OFF() D1=1xdata UINT8 RECIEVE[4];INT8 AX0;INT8 A Y0;INT8 AZ0;UINT8 AX00;UINT8 AY00;UINT8 AZ00;enum {UART_BUFFER_SIZE=4};code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};UINT8 who,reg1,status,k=0;UINT8 TxRxBuff[9];UINT8 ConfigBuff[10];UINT8 idata RFConfig[10]={0x6b, //CH_NO,配置频段在433MHZ0x2c, //输出功率为10db,重发,节电为正常模式0x44, //地址宽度设置,为4字节0x09,0x09, //接收发送有效数据长度,最大9字节0xCC,0xCC,0xCC,0xCC, //接收地址0x58 //CRC充许,8位CRC校验,外部时钟信号不使能,16M 晶振};//*************************延时25ms*n*******************************************void delay25ms(UINT8 n){UINT8 i;TMR2RLL = 0x9D;TMR2RLH = 0x38;TMR2L = 0x9D;TMR2H = 0x38;TMR2CN = 0x04;for(i=0;i<n;i++)< p="">{while(!TF2H);TF2H=0;}TR2=0;//*************************延时500us*n*******************************************void delay500us(UINT8 n){UINT8 i;TCON = 0x10;TMOD = 0x02;CKCON = 0x02;for(i=0;i<n;i++)< p="">{while(!TF0);TF0=0;}TR0=0;}//*************************延时50us*n*******************************************void delay50us(UINT8 n){UINT8 i;TCON = 0x10;TMOD = 0x02;CKCON = 0x02;TL0 = 0xE6;TH0 = 0xE6;for(i=0;i<n;i++)< p="">{while(!TF0);TF0=0;TR0=0;}//*************************SPI读子函数*******************************************UINT8 SpiRead(void){UINT8 i;UINT8 data_buff=0;for(i=0;i<8;i++){data_buff<<=1;SCK0=1;if(MISO0) data_buff+=1;SCK0=0;}return data_buff;}//*************************SPI写子函数*******************************************void SpiWrite(UINT8 WriteData){UINT8 i;UINT8 data_buff;data_buff=WriteData;for(i=0;i<8;i++){if((data_buff&0x80)!=0)MOSI0=1;elseMOSI0=0;SCK0=1;// Delay(1);delay50us(1);SCK0=0;data_buff<<=1;}}//*************************RF905引脚初始化*******************************************void nRF905Init(void ){CSN=1; //SPI disableSCK0=0; //SPI clock line init LOW// DR=1; //Init DR for input// AM=1; //Init AM for input// CD=1; //Init CD for inputPWR=1; //nRF905 power onCE=0; //Set nRF905 in standby modeTXE=0; //Set radio in Rx mode}//*************************RF905初始化配置*******************************************void Config905(void){UINT8 i;CSN=0; //SPI enable for write a spi commandSpiWrite(WC); //Write config commandfor(i=0;i<10;i++){SpiWrite(RFConfig[i]);}CSN=1; //Disable spi}//*************************读RF905配置寄存器*******************************************void ReadConfig905(void){UINT8 i;CSN=0;SpiWrite(RC);for(i=0;i<10;i++){ConfigBuff[i]=SpiRead();}CSN=1;}//*************************RF发射数据包*******************************************void TxPacket(void){UINT8 i;CSN=0;SpiWrite(WTP); //Write payload commandfor(i=0;i<9;i++){SpiWrite(TxRxBuff[i]); //Write Tx data}CSN=1; //SPI disabledelay50us(1);//Delay(1); // DelayCSN=0; // spi enable for write a spi commandSpiWrite(WTA); // write address commandfor(i=0;i<4;i++) // write 4 byte address{SpiWrite(TxAddress[i]);}CSN=1;//CE=1; //Set TRX_CE high ,start Tx data transmission//Delay(10);delay50us(8);CE=0;}//*************************RF发射模式设置*******************************************void SetTxMode(void){CE=1;//TXE=1;// Delay(1); // delay for mode change(>=650us)delay50us(1);}//*************************RF接收模式设置*******************************************void SetRxMode(void){CE=1;TXE=0;// Delay(1);delay50us(1);//*************************载波检测******************************************* UINT8 CheckCD(void) //Pin->检查是否已存在同频率载波{if (CD==1){return 1;}else{return 0;}}//*************************RF正式发射*******************************************void TX(void){SetTxMode(); // Set nRF905 in Tx modeTxPacket(); // Send data by nRF905CheckCD(); // 返回CD的当前电平// SetRF_PA_PWR(unsigned char i); //设置发射功率}//*************************数据准备好检测(用于接收)************************************UINT8 CheckDR(void){if(DR==1 && CE==1 && TXE==0){return 1;else{return 0;}}//*************************RF接收数据包*******************************************void RxPacket(void){UINT8 i;// Delay(100);delay50us(80);CE=0;CSN=0;//Delay(1);delay50us(1);SpiWrite(RRP);for(i=0;i<9;i++){TxRxBuff[i]=SpiRead();}CSN=1;// Delay(10);delay50us(8);CE=1;}//*************************RF正式接收*******************************************void RX(void)UINT16 i=50;SetRxMode();while(CheckDR()==0)//等待接收数据的出现{if((i--)<10)break;}//Delay(10);delay50us(8);RxPacket();//Delay(10);delay50us(8);}void Oscillator_Init(void){OSCICN = 0x83;}void LED_Light(void){LED1_ON();//delay1ms(500);delay25ms(20);LED1_OFF();}////////////////////////UART0////////////////////////// void Timer_Init(){TCON = 0x40;TMOD = 0x20;TH1 = 0x96;}void UART_Init(){SCON0 = 0x10;}void Port_IO_Init(){// P0.0 - SCK (SPI0), Push-Pull, Digital// P0.1 - MISO (SPI0), Open-Drain, Digital// P0.2 - MOSI (SPI0), Push-Pull, Digital// P0.3 - NSS (SPI0), Push-Pull, Digital(片选线没有使用,从机仅有一片) // P0.4 - TX0 (UART0), Push-Pull, Digital// P0.5 - RX0 (UART0), Open-Drain, Digital// P0.6 - INT1, Open-Drain, Digital(中断1)// P0.7 - INT2, Open-Drain, Digital(中断2)// P1.0 - SCK0, Push-Pull, Digital// P1.1 - MISO0, Open-Drain, Digital// P1.2 - MOSI0, Push-Pull, Digital// P1.3 - CSN, Push-Pull, Digital(905SPI使能)// P1.4 - PWR, Push-Pull, Digital// P1.5 - CE, Push-Pull, Digital// P1.6 - TXE, Push-Pull, Digital// P1.7 - CD, Open-Drain, Digital// P2.0 - AM, Open-Drain, Digital// P2.1 - DR, Open-Drain, Digital// P2.2 - uCK, Push-Pull, Digital// P2.3 - FIRE, Push-Pull, Digital// P2.7 - K1, Open-Drain, Digital// P3.1 - CS, Push-Pull, Digital(LSI331DLSPI使能)// P3.3 - D1, Push-Pull, Digital(指示灯)P0 |=0xE2;P1 |=0x82;P2 |=0x83;P0MDOUT = 0x1D;P1MDOUT = 0x7D;P2MDOUT = 0x0C;P3MDOUT = 0x0A;XBR0 = 0x03;XBR1 = 0x40;}void SPI_Init(){SPI0CFG = 0x40;//主机模式SPI0CN = 0x09;//4线制单主机,SPI使能SPI0CKR = 0x30;//SPI时钟为250KHz}//*************************中断初始化配置*******************************************void Interrupts_Init(){IE = 0x90; //开启全局中断、UART0中断使能、SPI0中断禁止}//*************************LIS331_Write********************** ******************* **void LIS331_Write (unsigned char address, unsigned char value){CS = 0;SPI0DA T = address;while (!SPIF);SPIF = 0;SPI0DA T = value;while (!SPIF);SPIF = 0;CS=1;delay500us(2);}//*************************LIS331_Read*********************** ****************** **unsigned char LIS331_Read (unsigned char address){CS = 0;SPI0DA T = address;while (!SPIF);SPIF = 0;SPI0DA T = address;while (!SPIF);SPIF = 0;CS = 1;delay500us(2);return SPI0DA T;}void Init_Device(void){Oscillator_Init();Port_IO_Init();nRF905Init();Config905();Timer_Init();UART_Init();SPI_Init();Interrupts_Init();}UINT8 i;void main(void){PCA0MD &=(~0x40);//看门狗禁止Init_Device();LED_Light();delay25ms(20);ReadConfig905();// LIS331_Write(0x20,0x47);//who=LIS331_Read(0x8f);// reg1=LIS331_Read(0xa0);//shoud return 0x47; //status=LIS331_Read(0xa7);//shoud return status while(1){/*if(RECIEVE[0]==0xad){if(RECIEVE[3]==RECIEVE[1]+RECIEVE[2]){AX0=LIS331_Read(0xA9);AX00=abs(AX0);A Y0=LIS331_Read(0xAB);AY00=abs(AY0);AZ0=LIS331_Read(0xAD);AZ00=abs(AZ0);TxRxBuff[0]=RECIEVE[0];TxRxBuff[1]=RECIEVE[1];TxRxBuff[2]=RECIEVE[2];TxRxBuff[3]=RECIEVE[3]; TxRxBuff[4]=AX00; TxRxBuff[5]=A Y00; TxRxBuff[6]=AZ00; TxRxBuff[7]=0xaa; TxRxBuff[8]=0xbb; TXE=1;TX();LED1_ON(); TxRxBuff[0]=0; TxRxBuff[1]=0; TxRxBuff[2]=0; TxRxBuff[3]=0; TxRxBuff[4]=0; TxRxBuff[5]=0; TxRxBuff[6]=0;delay25ms(1);TXE=0;LED1_OFF();delay25ms(4);}}*/TxRxBuff[0]=9; TxRxBuff[1]=8; TxRxBuff[2]=7; TxRxBuff[3]=6; TxRxBuff[4]=5; TxRxBuff[5]=4; TxRxBuff[6]=3; TxRxBuff[7]=2;TxRxBuff[8]=1;TXE=1;TX();LED1_ON();TxRxBuff[0]=0;TxRxBuff[1]=0;TxRxBuff[2]=0;TxRxBuff[3]=0;TxRxBuff[4]=0;TxRxBuff[5]=0;TxRxBuff[6]=0;TxRxBuff[7]=0;TxRxBuff[8]=0;delay25ms(1);TXE=0;LED1_OFF();delay25ms(4);}}//*************************UART0中断服务程序*******************************************void UART0_ISR() interrupt 4{ES0=0;RECIEVE[k]=SBUF0;if(RECIEVE[0]!=0xad)//如果收到的第一个数据不是前导码则放弃本次接收。
NRF905无线收发芯片温度监测无线通信系统的设计精品NRF905无线收发芯片是一款常用于无线通信系统的芯片,具有高度集成、低功耗和远距离通信等特点。
在设计一个精品的温度监测无线通信系统时,可以利用NRF905无线收发芯片来实现温度数据的无线传输和接收。
以下是一个涵盖了系统设计、硬件设计和软件设计的1200字以上的设计方案。
设计方案:一、系统设计1.温度监测节点:该节点负责采集环境温度数据,并将数据通过NRF905无线收发芯片发送到接收节点。
2.接收节点:该节点负责接收来自温度监测节点的温度数据,并将数据显示在液晶显示屏上。
3.电源电路:为温度监测节点和接收节点提供稳定的电源供电,可采用锂电池或者电池组。
4.程序控制:通过程序控制实现温度数据的采集、传输和接收,并在接收节点上进行温度数据的显示。
二、硬件设计1.温度监测节点的硬件设计:a.传感器选择:选择一个适合的温度传感器用于环境温度的采集,如DS18B20。
b. 微控制器:选用一款适合的微控制器作为温度监测节点的核心,如Arduino开发板。
c.NRF905模块:将NRF905无线收发芯片与微控制器连接,实现温度数据的无线传输。
2.接收节点的硬件设计:a. 微控制器:选用一款适合的微控制器作为接收节点的核心,如Arduino开发板。
b.NRF905模块:将NRF905无线收发芯片与微控制器连接,实现温度数据的接收。
c.液晶显示屏:连接一个液晶显示屏,用于显示接收到的温度数据。
3.电源电路设计:a.选择一款适合的锂电池或电池组作为供电源,同时设计稳压电路,将电池的输出电压稳定在所需的工作电压范围内。
b.使用电源管理芯片,以确保系统在低电压和超过电压等情况下能够正常工作。
三、软件设计1.温度监测节点的软件设计:a.初始化NRF905模块,设置通信参数和频率等信息。
b.采集温度数据:使用适当的库函数读取温度传感器的数据。
c.将温度数据转换为合适的格式,如字符串或数字,并通过NRF905模块发送出去。
基于MCU和nRF905的低功耗远距离无线传输系统摘要:介绍一种基于MCU和nRF905的低功耗远距离无线传输系统,描述了系统设计软硬件的实现方法和多点传输数据的通信协议。
系统主控芯片采用通用的低功耗MCU芯片MSP430 ,射频芯片采用具有多信道的单片收发芯片nRF905。
同时提出了跳频机制保证数据传输的可靠性,增加了系统的鲁棒性。
关键词: nRF905 无线数据传输低功耗跳频目前,在遥控遥测、无线抄表、门禁系统、小区传呼、工业数据采集、无线遥控系统、无线鼠标键盘等许多应用领域,都采用无线方式进行远距离数据传输。
本文介绍一种采用通用的低功耗单片机MSP430作为主控芯片、具有多信道的单片收发芯片nRF905作为无线收发模块、利用SPI口实现双向通讯的无线数据传输系统。
系统集成了MSP430在低功耗应用方面的优势和nRF905无线特有的多频道支持及功耗低、易控制等优点,特别适合于低功耗、小数据量的无线数据传输系统。
1 系统的总体结构系统总体框图如图1所示。
主控MCU使用TI公司MSP430系列中的F1491型,射频收发模块使用Nordic 公司的nRF905实现无线数据收发。
除MSP430和nRF905外,系统还提供RS-232接口,可以实现与PC机的通讯,RS-485接口满足一些通用仪器仪表的要求。
根据不同的应用需求,可选择采用PCB天线或高增益的外置式天线以满足远距离的需求。
2 系统主要芯片介绍MSP430是TI公司推出的16位系列单片机,在电池供电的低功耗应用中具有独特的优势。
其工作电压在1.8~3.6V之间,正常工作时功耗可控制在200μA左右,低功耗模式时可实现2μA甚至0.1μA的低功耗。
本系统所采用的MSP4301491系列在单个芯片上集成8通道12位的A/D转换、2个16位定时器、2个USART接口、16位看门狗、48个GPIO 端口及2 048KB RAM和60KB的flash,单片即可满足大多数应用需要。
Nrf905无线模块使用教程nRF905是挪威NordicVLsl公司推出的单片射频收发器,工作电压为1.9一3.6V,32引脚QFN封装,工作于433/868/gl5MHz三个IsM(工业、科学和医学)频道,频道之间的转换时间小于650us。
nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,使用SPI接口与微控制器通信,配置非常方便。
其主要特点如下:●工作电源电压范围:1.9一3.6V;●数据包自动重发功能;●输出功率可调至IOdBm;●自动产生CRC和前导码;●低工作电流(TX),在输出功率为一10dBm时典型值为llmA;●低工作电流(RX),典型值为12.smA;的只有10个引脚。
(1)模式控制引脚由PWR、TXEN、TRX_CE三个引脚来控制NRF905芯片的工作模式各种模式的控制如下表下面这个函数将nrf905设置成发射模式,模式转换需要大于650usvoid SetTxMode(void){TX_EN=1;TRX_CE=0;Delay(1); // delay for mode change(>=650us)}下面这个函数将nrf905设置成接收模式void SetRxMode(void){TX_EN=0;TRX_CE=1;Delay(1); //delay for mode change(>=650us)}(2)SPI接口SPI接口由SCK、MISO、MOSI以及CSN这四个引脚组成。
在配置模式下单片机通过SPI接口配置无线模块的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。
:.。
nRF905工作原理_nRF905基本特点nRF905是挪威Nordic公司推出的一款单片射频发射器芯片,采用32引脚5mm5mm QFN封装,工作于433、868、915MHz 3个ISM(工业、科学和医学)频道,其中国内433频段可以免费使用。
nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器、调制器等功能组成,不需要外加声表滤波器也可以有良好的通信效果。
nRF905使用SPI接口可以和任何MCU进行通信,其中地址、输出功率和通信频道可通过程序进行配置,所以可以用于多机通信。
nRF905融合了ShockBurstTM技术,可以自动处理数据包字头,且内置CRC校验功能,确保数据可靠传输。
nRF905功耗很低,在以-10dBm的功率发射时,工作电流也只有11mA;而对应接收机的工作电流只有12.5 mA,芯片可以软件设置空闲模式、关机模式,易于节能设计。
适合工业数据采集、无线报警及安全系统等诸多领用。
nRF905基本特点(1)433Mhz 开放ISM 频段免许可证使用;(2)最高工作速率50kbps,通信距离可达300米左右;(3)高效GFSK调制,抗干扰能力强,特别适合工业控制场合;(4)工作频率可软件设置,满足多点通信和跳频通信需要;(5)内置硬件8、16位CRC 检错和点对多点通信地址控制;(6)低功耗1.9 - 3.6V 工作,待机模式下状态仅为2.5uA;(7)收发模式切换时间仅650us;(8)SPI编程接口,可软件设置地址,地址多达2的32次方;(9)集成地址匹配、载波侦听、收发完成状态指示功能;(10)TX Mode:在+10dBm情况下,电流为30mA; RX Mode:12.2mA;(11)标准2.54mm DIP间距接口,便于嵌入式应用;同时,为便于用户开发,我们提供配套评估套件,为产品开发保驾护航,使无线应用开发大大加速,并避免不必要的误区。
nRF905工作原理nRF905采用Nordic公司的VLSI ShockBurst技术。
本文介绍的无线通讯模块,采用通用的低功耗单片机MSP430作为主芯片,nRF905作为无线收发模块,利用SPI口实现双向通讯,SPI支持高速数据传输,从而满足了射频带宽的要求。
nRF905提供了强大的跳频机制以及大量的频道支持,可以用在许多特殊的场合,而且即使利用无增益的PCB天线其传输距离也可达200m,如果需要更远距离的传输,也可以改成带增益的天线,传输距离即可扩大到1千米以上,可满足不同客户的需求。
1 系统硬件实现无线通讯模块的实现框图如图1所示,除了MSP430和nRF905外,系统还留有MAX232接口可以实现与PC的机通讯,MAX485接口满足一些通用仪器仪表的要求,并提供了按键和液晶等人机交互界面。
2 驱动实现2.1 MSP430的SPI驱动MSP430用标准SPI口和nRF905进行通讯,标准接口包括两根数据线:MOSI(主发从收)和MISO(从发主收),还有时钟线CLK,主机用CLK与从机时钟同步。
如图2所示,SPI可以理解成双工方式,因为在发送数据的同时也可以接受数据。
SPI分成主模式和从模式,从模式完全被动,数据的发送和接受都由主机掌握。
实际上参与工作的都有四个寄存器,主机将数据写入发送缓存UTXBUF,数据并行存入发送移位寄存器。
数据一旦写入UTXBUF,立即从MOSI线移位到从机的接受移位缓存,而从机移位缓存中的数据又将其发送移位寄存器中数据,通过MISO移位到主机的接受移位寄存器,再并行读入接受缓存中。
所以利用SPI同时进行读写操作。
图2 430 SPI示意图2.2 nRF905的驱动nRF905共有32个引脚,其中有10个引脚尤其需要我们注意:和主MCU通讯的SPI接口的四个引脚,数据线MOSI、MISO,时钟线SCK、使能线,其中CSN可以接到一个IO口控制芯片工作,而其它三个脚则接到主MCU的SPI接口上;主MCU的控制线有三个引脚,控制低功耗的PWRUP,控制正常工作的TX_EN,选择发送还是接受方式的TRX_CE,这几个引脚都接到主MCU的通用IO口;nRF905的反馈线有三根,检测到频道正被使用的CD(carrier detected),通知接受地址正确的AM(addreSS ma tched),告诉MCU数据接受正确的DR(data received),这几个引脚需要接到主MCU的中断引脚上,当接收数据正确时以中断方式通知主MCU。
NRF905摘要:介绍了无线收发芯片nRF905的功能,及其与51单片机的接口设计。
单片机可以很容易地通过SPI接口访问nRF905,功耗低。
多频道多频段,可以很方便地实现点对点及点对多点无线通信。
关键词:无线收发器;SPI接口;单片机1 引言nRF905是Nordic VLSI公司推出的一款无线收发芯片。
32脚封装(32L QFN 5 x 5m m),供电电压为1.9~3.6V,工作于433/868/915MHz三个ISM(工业、科学和医学)频道。
可自动处理字头和CRC(循环冗余码校验)。
微处理器可以通过SPI接口及相关指令访问n RF905的寄存器。
功耗低,高抗干扰GFSK调制,可跳频,载波检测输出,地址匹配输出以及数据就绪输出。
nRF905适用于遥感、遥测、无线抄表、工业数据采集以及家庭自动化等领域。
2 nRF905简介2.1 芯片结构MOSI/MISO是发射/接收数据的通道;TRX_CE,TX_EN是收/发通道的控制端;P WR_UP是工作模式控制端;CSN、SCK为串行接口控制端;CD是接收模式下载波监测信号输出端;AM是接收到正确的数据包地址后芯片指示信号的输出端;DR是发射完一个数据包后芯片指示信号的输出端;uPCLK是芯片提供的一个可设置的时钟源信号输出端;AN T1和ANT2用于天线部分;XC1和XC2外接电路构成了晶体振荡电路。
nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器、功率放大器、通信协议控制等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。
可自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。
由于nRF905采用抗干扰能力强的高斯频移键控(GFSK)调制方式,抗干扰能力强,能很好的减少噪声环境对系统性能的干扰。
2.2 工作模式nRF905有两种工作模式和两种节能模式。
两种工作模式分别是接收模式和发送模式,两种节能模式分别是关机模式和空闲模式。
NRF905无线收发模块(PA)/中远距离无线数传/无线通讯/无线抄表首选名称:NRF905无线收发模块(PA)/中远距离无线数传/无线通讯/无线抄表首选型号:RFC-30FRFC-30F 中功率无线数传模块,工作于433Mhz 开放ISM 频段免许可证使用,采用Nordic 公司的高性能nRF905无线通信芯片,高效GKSK 调制,接收灵敏度高达-110dBm ,最大发射功率为100mW(+20dBm),通讯距离可达1000米,可广泛应用于中远距离的无线通信、工业控制、无线数据传输无线抄表等领域一、产品外观二、模块简介RFC-30F 无线数传模块,工作于433Mhz 开放ISM 频段免许可证使用,采用Nordic 公司的高性能nRF905无线通信芯片,高效GKSK 调制,接收灵敏度高达-110dBm ,最大发射功率20dBm (含PA ),通讯距离可达1000米,穿透性好,可广泛应用于中远距离的无线通信、工业控制、无线数据传输、无线抄表等领域三、性能及特点(1) 433Mhz 开放ISM 频段免许可证使用(2)工作电压:电路供电电压5V/3.3V(3)最高工作速率50kbps,高效GFSK调制,抗干扰能力强,内置硬件CRC 检错,特别适合工业控制场合(4)接收灵敏度高,达-110dBm(5)最大发射功率:100mW (+20dBm),模块在以最大功率发射信号时瞬间电流<= 300mA(6)模块在收发模式切换时间< 1ms(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8)TX Mode: 在+20dBm情况下,瞬间工作电流小于300mA;RX Mode: 12.5mA(9)标准DIP间距接口,可以和RF905B、RF905SE、RF905C、RFC-30A模块互相通信。
(10)尽量避免让大功率模块长时间处于高功率发射状态!如果不需要发送数据,就切换到接收模式或者睡眠模式。
基于nRF905的无线串口通信系统王萍1,2,陈长青1,龚睿1,2,康晓娜1,2(1.中科院长春光学精密机械与物理研究所吉林长春1300332.中国科学院研究生院北京100039)中图分类号:TP273+.5 文献标识码:A 基金资助:中科院二期创新项目(C04708Z)摘要:本文介绍了一种硬件设计简单、数据传输可靠的无线串口通信系统的设计与实现。
文中从基于nRF905芯片的无线收发模块的设计开发、系统的硬件结构、数据包处理格式、无线串口通信的软件设计等方面介绍了该系统的实验开发及实现过程。
该系统以nRF905无线收发模块和AT89C52单片机为核心,具有低成本、易扩展、操作简单等优点,可广泛应用于远程控制、无线数据采集等多个领域。
关键词:无线;串口通信;nRF905A Wireless Series Port Communicate System Based on nRF905W ANG Ping1,2,CHEN Chang-qing1,GONG Rui1,2,KANG Xiao-na1,2 (1.Changchun Institute of Optics, Fine Mechanics and Physics, Chinese Academy ofSciences,Changchun 130033, China2. Graduate School of the Chinese Academy of Sciences, Beijing 100039, China) Abstract: The paper introduces the design and implementation of a wieldy and stable wireless series port system. It also introduces the development and realizing process of the experiments in the aspects of the design of wireless transfer-receive module based on nRF905, the hardware configuration of system, the disposal format of data package, the software design of communication with wireless series port and so on. This system combines nRF905 wireless transfer-receive module with AT89C52, i t’s provided with very convenient operation, low-cost and easy to extendity,thus it is able to be found to use widely in many fields such as long-range control and wireless data collection.Key words: wireless; series port communicate; nRF9051 引言网络和通信技术的高速发展,使人们对无线通信的需求越来越高。
nRF905技术资料:本文首先介绍了单片射频收发器nRF905的芯片结构、引脚功能、工作模式以及射频接收和发送的工作流程;然后分析了nRF905片内SPI接口的配置、射频通信相关寄存器的配置;最后给出了典型的应用电路图。
:无线通信;射频;收发器;nRF905nRF905是挪威Nordic VLSI公司推出的单片射频收发器,工作电压为1.9~3.6V,32引脚QFN封装(5×5mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650us。
nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器,ShockBurstTM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。
此外,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。
nRF905适用于无线数据通信、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域。
2.1芯片结构[1]nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。
nRF905的详细结构如图1所示。
2.2引脚介绍表1:nRF905引脚2.3工作模式nRF905有两种工作模式和两种节能模式。
两种工作模式分别是ShockBurstTM 接收模式和ShockBurstTM发送模式,两种节能模式分别是关机模式和空闲模式。
nRF905的工作模式由TRX_CE、TX_EN和PWR_UP三个引脚决定,详见表2。
2.3.1ShockBurstTM模式与射频数据包有关的高速信号处理都在nRF905片内进行,数据速率由微控制器配置的SPI接口决定,数据在微控制器中低速处理,但在nRF905中高速发送,因此中间有很长时间的空闲,这很有利于节能。
nRF905无线通信系统设计物联网技术是当前信息领域中研究的热点,无线传感器网络作为物联网领域中一个重要的技术组成,可以实现特殊环境连续不断地进行数据采集、事件检测、事件标识、位置监测和节点控制,无线通信模块的这些特性使得无线传感器网络的应用前景非常广阔,能够广泛应用于环境监测和预报、智能家居、建筑物状态监控、城市、大型车间和仓库管理,以及机场、大型园区的安全监测等领域.随着无线传感器网络的深人研究和广泛应用,无线传感器网络逐渐深入到人类生活的各个领域而受到国内外研究人员的重视.本文设计了一种基于Atmega16单片机和nRF905射频芯片的无线通信系统.该系统适用于低功耗、短距离、小数据量的点对点无线数据传输和交换应用。
ﻭ总体设计本文设计无线通讯模块是由数据发送模块和数据接收模块两个完全相同的节点模块构成,数据接收和发送模块都选用Atmega16单片机作为主控制器,由单片机控制射频芯片nRF905实现无线数据的收发。
数据发送节点的A tmega16单片机采集上位机或数据采集模块的数字信号,经处理器处理后传送给节点内nRF905无线通信模块,由无线通信模块经调制和功率放大后将数据发送出去.数据接收节点通过节点内的nRF905无线通信模块接收来自数据发送节点的数据,解调后传给节点的主控制器———Atmega16单片机,单片机经过和处理,发送相应的处理命令,完成一次数据通信任务。
2系统硬件设计无线通信节点模块的主控制器选R系列的Atmega16单片机,其电路有:RS232电平转换电路、U接口电路、1602液晶显示模块、nRF905无线模块以及蜂鸣器音电路等.ﻭ2.1单片机最小系统设计ﻭ本系统选用价格便宜的Atmega16单片机作为主控制器。
该系列单片机是基于增强的RRISC结构的低功耗8位CS微控制器,以低功耗特性被广泛用于各个领域。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/M,从而可以减缓系统在功耗和处理速度之间的矛盾。
基于NRF905无线收发芯片温度监测无线通信系统的设计1方案论证与比较针对题目要求,经过分析,系统主要包括温度传感器、无线收发模块、单片机控制模块、显示模块及上位计算机通信模块。
系统采用软件工程的UML建模语言进行建模,系统的设计框图如图1.1:图1.1“操作人员”给“控制器”上电,“控制器1”以串口方式读取“温度采集”模块的数据,经“控制器1”处理,处理后的温度数据传输给“本地显示”模块以进行显示,最后在通过“无线发射”模块把温度数据发送出去。
“无线接收”模块接收到温度数据后传输“控制器2”,“控制器2”进行数据处理,处理后的温度数据传输给“本地显示”模块以进行显示,然后再通过串口通信,把温度数据传输给上位计算机的“PC温度监控”模块,计算机内部处理后显示在计算机屏幕上,以便“监控人员”进行监控。
1.1温度采集方案设计温度采集模块是系统设计的重点之一,直接影响整个系统对环境温度变化的反应速度、采集准确度以及精度等指标。
【方案一】采用数字温度传感器DS18B20,具有连接简单、采集速度快、精度高等特点。
它采用单线总线与单片机相连(和地线),这允许在许多不同地方放置温度传感器。
它可在1秒内把温度变换为数字,采集速度较快能及时反应温度的变化。
最高12位温度读数,精度可达到0.0625摄氏度,温度采集范围-55~125摄氏度,在很多场合下都能使用,并且价格低,很容易买到。
【方案二】采用模拟传感器。
虽然它能及时的反应出温度变化,但是它的精度较低,并且还要使用A/D转换器,这样增加了成本和控制的难度,所以采用方案一。
1.2显示部分方案设计显示部分能在本地及时的显示出当前的温度,方便操作人员了解本地的温度。
【方案一】采用LCD液晶显示屏,它是以若干个5 X 10点阵块组成,能显示英文字符和数字。
具有低功耗、长寿命、高可靠性、清晰、体积小等特点。
【方案二】采用LED八段显示器。
虽然LED具有原理简单、显示快速等特点。
nRF905模块和SPI接口的点对点无线通信系统摘要介绍一种利用无线射频收发嚣nRF905模块和单片机SPI接口实现的无线数据传输系统;给出单片机PICl6F876控制nRF905模块通过SPI口进行数据交换,以及它们之间电路连接和软件设计方法。
该系统数据传输速度快、可靠性高、可移植性强,可广泛应用于各类无线数据通信中。
关键词nRF905模块单片机PICl6F876 无线数据通信SPI接口引言在某些环境监测、安防警报等环境下,不便进行有线线路的铺设,而采用无线数据通信方式。
采用一般的无线传输方式时可能因为环境噪声大,干扰信号强而导致接收数据的准确性很低。
针对这种情况,设计一种低成本、高准确率的无线数据传输系统——基于PICl6F876(简称为“16F876”)的SPI和nRF905模块的点对点无线通信系统。
利用16F876和nRF90S模块直接进行SPI数据交换,时序同步性好,程序编写简单。
16F876通过相应的I/O口连接到编程器,可直接进行在线调试。
鉴于无线通信环境中噪声大,信号干扰大的特点,采用的nRF905模块引入自动重发,高抗干扰GFSK调制和最高16位CRC校验机制,确保了数据传输的可靠性。
1 硬件电路规划16P876、nRF905模块及编程器连接头J1之间的电路连接,220V-5V电路实现,5V-3V电压转换电路如图1、图2、图3所示。
在图l中,单片机16F876输入/输出口与nRF905模块相应接口连接情况:RC7~nRF905模块时钟分频输出,RC6~nRF905模块地址匹配输出AM,RC5~MISO,RC4~MOSI,RC3~SCK,RC2~CSN,RB7&RB6&RB3~J1编程器连接线,RB5~nRF905模块数据就绪输出DR,RB2~PWR,RBl~TXEN,RB0~TRX_CE。
单片机通过RB7、RB6和RB3与编程器相连,可进行在线编程;由RC5输出数据到nRF905模块,由RC4从nRF905模块输入数据。
nRF905模块和SPI接口的点对点无线通信系统
李治龙;曾碧
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2006(000)010
【摘要】介绍一种利用无线射频收发器nRF905模块①和单片机SPI接口实现的无线数据传输系统;给出单片机PIC16F876控制nRF905模块通过SPI口进行数据交换,以及它们之间电路连接和软件设计方法.该系统数据传输速度快、可靠性高、可移植性强,可广泛应用于各类无线数据通信中.
【总页数】3页(P20-22)
【作者】李治龙;曾碧
【作者单位】广东工业大学;广东工业大学
【正文语种】中文
【中图分类】TN92
【相关文献】
1.基于NRF905的智能农业无线通信系统设计 [J], 葛付伟;毛建新
2.基于 nRF905无线通信系统的设计 [J], 朱士群;牛伟;耿淑琴;侯立刚;杨红艳;李子腾;吴武臣
3.基于nRF905无线通信系统的设计 [J], 欧幸福;陈文凤;李秀忠;方宁
4.基于nRF905的无线通信系统的设计 [J], 甘艳;赵德生
5.无线通信系统在小型遥控机耕船控制中的应用——基于nRF905无线收发芯片[J], 史强;郭小锋
因版权原因,仅展示原文概要,查看原文内容请购买。