零死角玩转stm32-中级篇9、2.4G无线(NRF24L01)
- 格式:pdf
- 大小:1.04 MB
- 文档页数:16
nRF24L01 无线模块用户手册目录产品概述 (3)基本特性 (3)引脚接口说明 (4)模块尺寸 (6)nRF2401工作模式 (7)Enhanced ShockBurstTM收发模式 (7)Enhanced ShockBurstTM数据发送流程 (8)空闲模式 (9)关机模式 (9)nRF24L01模块参数设置 (9)主要参数设置 (10)程序设计分析 (10)nRF24L01初始化 (10)nRF24L01SPI写操作 (11)nRF24L01 SPI读操作 (11)nRF24L01写寄存器函数 (12)nRF24L01连续读多个寄存器函数 (12)nRF24L01连续写多个寄存器函数 (12)nRF24L01接收模式设置 (13)nRF24L01接收数据流程 (13)nRF24L01发送数据流程 (13)无线应用注意事项 (14)我们的承诺 (15)产品概述nRF24L01是挪威NordicVLSI公司出品的一款新型射频收发器件,采用4 mm×4 mm QFN20封装;nRF24L01工作在ISM频段:2.4~2.524 GHz。
且内置频率合成器、功率放大器、晶体振荡器、调制器等功能,并融合增强型ShockBurst技术,其中地址、输出功率和通信频道可通过程序进行配置,适合用于多机通信。
nRF24L01功耗很低,在以-6 dBm的功率发射时,工作电流也只有9 mA;而对应接收机的工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。
nRF24L01在业界领先的低功耗特点使其特别适合采用钮扣电池供电的2.4G应用,整个解决方案包括链路层和MultiCeiver功能提供了比现有的 nRF24XX 更多的功能和更低的电源消耗,与目前的蓝牙技术相比在提供更高速率的同时,而只需花更小的功耗基本特性(1) 2.4Ghz全球开放ISM 频段免许可证使用(2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强(3) 125频道,满足多点通信和跳频通信需要(4) 内置硬件CRC 检错和点对多点通信地址控制(5) 低功耗1.9 - 3.6V 工作,适合电池供电应用(6) 待机模式下状态为22uA;掉电模式下为900nA(7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8) 内置专门稳压电路,即使开关电源也有很好的通信效果(9) 标准DIP间距接口,便于嵌入式应用(10)具有自动应答机制,和CRC校验,数据通讯稳定可靠。
NRF24L01(2.4G模块)一、模块简介(1)2.4GHz全球开放ISM频段免许可证使用。
(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强。
(3)126频道,满足多点通信和跳频通信需要。
(4)内置硬件CRC检错,和点对点通信地址控制。
(5)低功耗,1.9-3.6V工作,待机模式下22uA;掉电模式900nA。
(6)内置2.4GHz天线,体积小巧:15mm×29mm。
(7)模块可软件设置地址,只有收到本机地址时才会输出数据(提供中断提示),可直接接各种单片机使用,软件编程非常方便。
(8)内稳压电路,使用各种电源包括DC/DC开关电源均有很好的通道效果。
(9)2.54mm间距接口,DIP封闭。
(10)工作于Enhanced ShockBurst具有Automatic packet handling,Auto packet transaction handling,具有可选的内置包应答机制,极大地降低丢包率。
(11)与51单片机P0口连接的时候,需要加10K的上拉电阻,与其余口连接不需要。
(12)其他系列的单片机,如果是5V的,请参考该系列单片机IO口输出电流大小,如果超过10mA,需要串联电阻分压,否则容易烧毁模块!如果是3.3V的,可以直接和RF24L01模块的IO口线连接。
比如AVR系列单片机。
如果是5V的一般串接2K的电阻。
二、接口电路说明:1)VCC脚接电压范围为:1.9V-3.6V,不能在这个敬意之外,超过3.6V将会烧毁模块。
推荐电压3.3左右。
2)除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需转换。
当然对3V左右的单片机更加适用了。
3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI,不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以。
4)如果需要其他封装接口,比如密脚插针,或者其他形式的接口,可联系我们定做。
STM32驱动NRF24L01
1. 简介
NRF24L01 是nordic 的无线通信芯片,它具有以下特点:
1)2.4G 全球开放的ISM 频段(2.400 - 2.4835GHz),免许可证使用;
2)最高工作速率2Mbps,高校的GFSK 调制,抗干扰能力强;
3)125 个可选的频道,满足多点通信和调频通信的需要;
4)内置CRC 检错和点对多点的通信地址控制;
5)低工作电压(1.9~3.6V),待机模式下状态为26uA;掉电模式下为
900nA;
6)可设置自动应答,确保数据可靠传输;
7)工作于EnhancedShockBurst 具有Automatic packet handling,Auto packet transaction handling ,可以实现点对点或是 1 对 6 的无线通信,速度可以达
到2M(bps),具有可选的内置包应答机制,极大的降低丢包率。
8)通过SPI 总线与单片机进行交互,最大通信速率为10Mbps;
1.1 结构框图
如图右侧为六个控制和数据信号,分别为CSN、SCK、MISO、MOSI、IRQ、CE。
信号线功能
CSN 芯片的片选线,CSN 为低电平芯片工作
SCK 芯片控制的时钟线(SPI 时钟)
MISO 芯片控制数据线(Master input slave output)
MOSI 芯片控制数据线(Master output slave input)
IRQ 中断信号。
无线通信过程中MCU 主要是通过IRQ 与NRF24L01 进。
nRF24L01的工作原理nRF24L01是一款广泛应用于无线通信领域的低功耗收发器。
它采用2.4GHz频段,支持多种通信协议,如SPI、I2C等。
本文将详细介绍nRF24L01的工作原理。
1. 引言nRF24L01是一款集成了收发功能的无线模块,广泛应用于物联网、无线传感器网络等领域。
它具有低功耗、长距离传输和高可靠性等特点,是许多无线通信系统的首选。
2. 工作频率nRF24L01的工作频率为2.4GHz,这是一个无线电频段,被称为ISM频段(Industrial, Scientific and Medical)。
这个频段被许多无线通信技术所使用,如Wi-Fi、蓝牙等。
3. 收发原理nRF24L01采用了GFSK调制技术(Gaussian Frequency Shift Keying),它通过改变载波频率来传输数字信号。
具体来说,当发送端要发送一个1时,它会将载波频率提高;当发送端要发送一个0时,它会将载波频率降低。
接收端通过检测载波频率的变化来还原发送端发送的数字信号。
4. 工作模式nRF24L01有两种工作模式:发送模式和接收模式。
在发送模式下,nRF24L01将数据发送给接收端;在接收模式下,nRF24L01接收来自发送端的数据。
5. 数据包结构nRF24L01使用数据包来传输数据。
每个数据包由多个字节组成,包括地址字节、有效载荷字节和校验字节。
地址字节用于标识发送端和接收端的地址,有效载荷字节用于存储要传输的数据,校验字节用于验证数据的完整性。
6. 通信协议nRF24L01支持多种通信协议,如SPI(Serial Peripheral Interface)和I2C(Inter-Integrated Circuit)。
SPI是一种串行通信协议,它使用四根信号线(时钟线、数据线、主从选择线和片选线)进行通信。
I2C是一种串行通信协议,它使用两根信号线(时钟线和数据线)进行通信。
7. 功耗管理nRF24L01具有优秀的功耗管理功能。
nRF24LE1芯片简单介绍NRF24LE1特性NRF24LE1采用了NORDIC最新的无线和超低功耗技术,在一个极小封装中集成了包括2.4G无线传输,增强型51 FLASH高速单片机,丰富外设及接口等的单片FLASH芯片,是一个综合了性能及成本的完美结合,很适合应用于各种2.4G的产品设计。
NRF24LE1=2.4GHz+Flash51+ADC+PWM+I2C+RTC+WDT+RNG+AES++COMP+UART+SPI….应用:无线鼠标,无线键盘,无线摇杆,PC外设,玩具,RFID,无线遥控,医学参数监测,线数字语音,工业控制及无线数据采集主要特性:1、内嵌 2.4GHz低功耗无线收发内核NRF24L01+, 250kbps,1Mbps,2Mbps空中速率2、高性能51内核,16kbytes Flash,1Kbyte data RAM,1Kbyte NVRAM3、具有丰富的外设资源,内置128bit AES硬件加密,32位硬件乘除处理器,6-12位ADC,两路PWM,I2C,UART,硬件随机数产生器件,WDT,RTC,模拟比较器4、提供QFN24,QFN32,QFN48多种封装,提供灵活应用选择5、灵活高效的开发手段,支持Keil C,ISP下载,是开发无线外设,RFID,消费产品,无线数传等有力工具及平台。
带Gazell协议Gazell协议是NORDIC专为2.4G无线桌面和其他无线应用设计推出的无线通信协议,配合NRF24LE1/NRF24LU1P使用,客户可以专注于应用设计,无需花费大量的精力在无线链路上。
低功耗Gazell协议是低功耗协议,可设计为纽扣电池供电的应用。
抗干扰性Gazell协议完成自动跳频及抗干扰的无线通信,具有在复杂环境下优异的抗干扰性能。
低延时Gazell协议充分利用NRF高速通信的特性,具有低延时特性,特别满足PC周边及其他应用。
高安全性Gazell协议具有AES 128bit 高强度加密,确保数据传输的安全可靠。
nRF24L01 主要参数及电路图
nRF24L01 是由NORDIC 生产的工作在2.4GHz~2.5GHz 的ISM 频段的单片无线收发器芯片。
无线收发器包括:频率发生器、增强型SchockBurst 模式控制器、功率放大器、晶体振荡器、调制器和解调器。
输出功率频道选择和协议的设置可以通过SPI 接口进行设置。
几乎可以连接到各种单片机芯片,并完成无线数据传送工作。
极低的电流消耗:当工作在发射模式下发射功率为0dBm 时电流消耗为11.3mA ,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。
nRF24L01 性能参数
小体积,QFN20 4x4mm 封装
宽电压工作范围,1.9V~3.6V,输入引脚可承受5V 电压输入。
nRF24L01的工作原理nRF24L01是一款低功耗、高性能的2.4GHz无线收发模块,广泛应用于无线通信领域。
它采用射频(RF)技术,能够在2.4GHz频段进行无线数据传输。
本文将详细介绍nRF24L01的工作原理。
1. 无线通信原理:无线通信是通过无线电波在空间中传播信息的一种通信方式。
nRF24L01利用射频信号进行无线通信,通过调制和解调技术实现数据的传输和接收。
2. nRF24L01的硬件结构:nRF24L01由射频前端、基带处理器和SPI接口组成。
射频前端负责射频信号的发送和接收,基带处理器负责数据的调制和解调,SPI接口用于与主控制器进行通信。
3. 工作模式:nRF24L01有两种工作模式:发送模式和接收模式。
在发送模式下,它将数据通过射频信号发送给接收端。
在接收模式下,它接收来自发送端的射频信号,并解调出原始数据。
4. 发送端工作原理:发送端首先将要发送的数据通过SPI接口发送给nRF24L01的基带处理器。
基带处理器将数据进行调制,将其转换为射频信号。
射频前端将射频信号发射出去,经过空间传播后到达接收端。
5. 接收端工作原理:接收端的射频前端接收到发送端发射的射频信号。
射频前端将射频信号经过放大和滤波处理后送给基带处理器。
基带处理器将接收到的射频信号进行解调,得到原始数据。
6. 通信协议:nRF24L01采用自己的通信协议,包括数据包格式、通信速率、信道选择等。
发送端和接收端需要使用相同的通信协议才干正常通信。
7. 功耗管理:nRF24L01具有低功耗设计,可以通过设置工作模式、发送功率和休眠模式等来控制功耗。
在不需要进行通信时,可以将nRF24L01设置为休眠模式,以节省能源。
8. 技术特点:nRF24L01具有以下技术特点:- 工作频率:2.4GHz- 通信距离:可达100米- 数据传输速率:最高2Mbps- 工作电压:1.9V至3.6V- 工作温度:-40℃至85℃9. 应用领域:nRF24L01广泛应用于无线数据传输领域,例如无线遥控、无线传感器网络、物联网等。
先来看接口电路,使用的IO 口不是唯一的哦,可随意定义接口,当然是在使用IO 口模拟SPI 且IRQ 中断引脚不使用的使用查询方法判断接收状态的情况下了。
作为初探我们就是用简单的IO 模拟SPI 的方法了,中断使用查询的方式。
那么该教程讲解的接口与单片机的连接如下:首先您需要了解NRF24L01,请参阅“NRF24L01 芯片中文资料”或者“NRF24L01 芯片英文资料”。
我们的教程是以一个简单的小项目为大家展示NRF24L01 的使用方法与乐趣。
我们所写教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。
作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01 发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED 闪烁一次,并且把接收到的数据通过串口发送到PC 端,通过串口工具查看接收到的数据。
具体的要求如下:1、具备发送和接收的能力。
2、发送32 个字节的数据,接收方接收到正确数据之后给予提示,通过LED 闪烁灯形式。
3、把接收到的数据传送到PC 进行查看。
4、发送端每隔大约1.5 秒发送一次数据,永久循环。
以上是程序的要求,若您想自行设计出硬件接口,您也是可以添加一条呢:使用DIY 方式设计NRF24L01 的接口板,且包含含单片机平台,使用PCB 方式或者万用板方式均可。
如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。
当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。
我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。
我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。
NRF24L01无线反射接收模块1.所需材料a)单片机最小系统b)液晶(显示状态作用)c)NRF24L01无线模块2.基本须知a)引脚i.b)NRF24L01状态机(主要有一下几个状态)i.Power Down Mode:掉电模式ii.Tx Mode:发射模式iii.Rx Mode:接收模式iv.Standby-1Mode:待机1模式v.Standby-2Mode:待机2模式c)对模块的固件编程的基本思路如下:i.置CSN为低,是能芯片,配置芯片各个参数。
配置参数在Power Down状态中完成ii.如果是Tx模式,填充Tx FIFOiii.配置完成以后,通过CE与CONFIG中的PWR_UP与PRIM_RX参数确定NRF24L01要切换到的状态。
Tx Mode:PWR_UP=1;PRIM_RX=0;CE=1(保持超过10us就可以)Rx Mode:PWR_UP=1;PRIM_RX=1;CE=1iv.IRQ引脚会在以下三种情况变低:1.Tx FIFO发完并且收到ACK(使能ACK情况下)2.RxFIFO收到数据3.达到最大重发次数将IRQ接到外部中断输入引脚,通过中断程序进行处理d)模块通信中的相互识别,是通过定义发送地址和本机地址(如)地址可以自定义3.实现思路a)使用SPI通信与NRF24L01进行相互通信,需要编写基本通信模块的代码(需要用到读写数据时序图)b)操作NRF24L01模块需要控制其内部的寄存器,因此要在程序中宏定义模块内部需要使用的寄存器的地址。
c)使用模块之前需要对模块内的相应寄存器进行初始化设置,同理,其他各个模式也有相应的初始化设置。
d)若接收到数据,IQR引脚会被拉低,此时可以通过SPI通信模块程序读取相应寄存器的值,读取出所接收到的数据。
e)。
nRF24L01的工作原理nRF24L01是一种低功耗2.4GHz无线收发器,常用于物联网、无线传感器网络和远程控制等应用。
它采用射频(RF)技术,能够实现可靠的无线通信,并具备较低的功耗和成本。
nRF24L01的工作原理可以分为发送和接收两个部份。
在发送端,数据通过SPI接口从主控芯片传输到nRF24L01,然后经过调制和编码处理后,以射频信号的形式发送出去。
在接收端,nRF24L01接收到射频信号后,经过解码和解调处理,将数据还原成原始数据,并通过SPI接口传输给主控芯片。
具体来说,nRF24L01的工作原理如下:1. 发送端工作原理:- 主控芯片将要发送的数据通过SPI接口传输给nRF24L01。
- nRF24L01将接收到的数据进行调制和编码处理,采用高速频移键控(GFSK)调制技术和32位CRC校验,以提高数据的可靠性。
- 经过调制和编码处理后的数据,通过射频天线以无线信号的形式发送出去。
- 发送完毕后,nRF24L01进入待机模式,等待下一次发送指令。
2. 接收端工作原理:- nRF24L01通过射频天线接收到发送端发送的无线信号。
- 接收到的信号经过解调和解码处理,将其还原成原始数据。
- nRF24L01通过SPI接口将解码后的数据传输给主控芯片。
- 主控芯片对接收到的数据进行处理,例如存储、显示或者进一步处理。
为了实现可靠的无线通信,nRF24L01采用了一些关键技术和特性:- 自动重发机制:当发送端发送数据时,接收端会返回一个应答信号。
如果发送端未收到应答信号,nRF24L01会自动进行重发,以确保数据的可靠传输。
- 通道选择:nRF24L01支持多个通道,可以通过设置不同的通道来避免干扰,提高通信质量。
- 功率调节:nRF24L01支持多个功率级别的选择,可以根据实际需求进行功率调节,以平衡通信距离和功耗。
- 内置硬件加密:nRF24L01内置了硬件加密引擎,可以对数据进行加密处理,增强数据的安全性。
单片机基于2.4G无线收发模块NRF24L01的无线通信(基本测试通过)续二、软件部分1>接收方程序:主函数:#include <reg52.h>#include <stdio.h>#include'NRF24L01.h'#include <intrins.h>void main(){ unsigned char i=0;unsigned char data_RX[32]={1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, 2,2,3,3,3,3,3,3,3,3,3,3,3,3};//接收到的32字节存放数组设置初值SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1,8位收发,波特率可变TMOD|= 0x20; //定时器工作方式 2 ,自动重载初值PCON&= 0x7f; //波特率不加倍TH1 = 0xFA; //波特率等于4800、数据位8、停止位1。
效验位无,晶振为11.0592MHZTL1 = 0xFA;TR1 = 1; //开启定时器1 ES = 1; //开串口中断EA = 1; // 开总中断NRF24L01_RX();//设置为接收模式while(!((READ_BYTE(READ_REG+STATUS))&0x40)); //判断是否接收好32字节数据READ_BYTES(RD_RX_PLOAD,data_RX,32); //将32字节数据存放在数组中CE=0;CSN=1;_nop_();CSN=0;SPI_WRITE(FLUSH_RX); //清空接收FIFO,否则接收数据不可预知SCK=0;CSN=1;jieshouv=0; //接收成功标志位WRITE_BYTE(WRITE_REG+STATUS,0xFF); //屏蔽中断位for(i=0;i<32;i++){ if(data_RX[i]>=10){SBUF=data_RX[i]/10+48; //将十位转化为ASCII码发送while(!TI);TI=0;SBUF = data_RX[i]%10+48; //将个位转化为ASCII码发送while(!TI); // 等特数据传送(TI发送中断标志)TI = 0; // 清除数据传送标志}else{SBUF = data_RX[i]%10+48; //将无符号数转为ASCII码发送while(!TI); // 等特数据传送(TI发送中断标志)TI = 0; // 清除数据传送标志}}while(1);}*************************************************************** *************************************************详情请咨询: http://shop108408772.taoba /*************************************************************** ***********************************************子函数:#include <reg52.h>#include 'NRF24L01.h'#include <intrins.h>unsigned char ADD_TX[]={0,1,2,3,4}; //通道地址unsigned char data_TX[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; //发送方32字节数据void SPI_WRITE(unsigned char canshu) //写入一个字节{unsigned char i;for(i=0;i<8;i++){SCK=0;MOSI=(canshu&0x80)>>7; //先发高位SCK=1;canshu=canshu<<1;}}unsigned char SPI_READ() //读一个字节{unsigned char canshu=0,i;for(i=0;i<8;i++){canshu=canshu<<1; //先接收的为高位SCK=0;_nop_();SCK=1;canshu=canshu|MISO;}return canshu;}void WRITE_BYTE(unsigned char address,unsigned char value)//写入完整指令,单字节{CSN=1;_nop_();CSN=0;SPI_WRITE(address); //写入寄存器绝对地址_nop_();SPI_WRITE(value); //写入参数SCK=0; //恢复初值CSN=1; //恢复初值}unsigned char READ_BYTE(unsigned char address) //读入完整指令,单字节{unsigned char canshu;CSN=1;_nop_();CSN=0;SPI_WRITE(address); //写入寄存器绝对地址_nop_();canshu=SPI_READ(); //读出数据SCK=0;CSN=1;return canshu;}*************************************************************** *************************************************详情请咨询: http://shop108408772.taoba /*************************************************************** ***********************************************void WRITE_BYTES(unsigned char address,unsigned char *value,unsigned char width)//写入指定字节数据,多字节{unsigned char i;CSN=1;_nop_();CSN=0;SPI_WRITE(address); //写入寄存器绝对地址_nop_();for(i=0;i<width;i++){SPI_WRITE(*value); //将数据依次写入value=value+1;}SCK=0;CSN=1;}void READ_BYTES(unsigned char address,unsigned char *value,unsigned char width)//读入指定字节数据,多字节{unsigned char i;CSN=1;_nop_();CSN=0;SPI_WRITE(address); //写入寄存器绝对地址_nop_();for(i=0;i<width;i++){*value=SPI_READ(); //将数据依次读入value=value+1;}SCK=0;CSN=1;}/************************************************void NRF24L01_TX()//NRF24L01设为发送模式{ //默认NRF24L01为掉电模式unsigned char i;CE=0;WRITE_BYTE(WRITE_REG+SETUP_AW,0x03);//设置地址宽度为5字节WRITE_BYTE(WRITE_REG+RX_PW_P0,0x20);//设置接收通道0数据宽度为32字节WRITE_BYTES(WR_TX_PLOAD,data_TX,32);//写入发送数据WRITE_BYTES(WRITE_REG+TX_ADDR,ADD_TX,5);//设置发送地址WRITE_BYTES(WRITE_REG+RX_ADDR_P0,ADD_TX,5);//设置通道0地址WRITE_BYTE(WRITE_REG+EN_RXADDR,0x01);//使能接收通道0WRITE_BYTE(WRITE_REG+EN_AA,0x01);//使能通道0自动应答WRITE_BYTE(WRITE_REG+SETUP_RETR,0x1a);// 自动重发次数10次WRITE_BYTE(WRITE_REG+RF_CH,0x40); //设置载波频率WRITE_BYTE(WRITE_REG+RF_SETUP,0x0f); //射频参数,如数据传输率,发射功率WRITE_BYTE(WRITE_REG+CONFIG,0x0A);//设置发射,上电,CRC校验8位CE=1;for(i=0;i<10;i++);//延时30us}********************************************************/void NRF24L01_RX()//NRF24L01设为接收模式{unsigned char i; //默认NRF24L01为掉电模式CE=0;WRITE_BYTE(WRITE_REG+SETUP_AW,0x03);//设置地址宽度为5字节WRITE_BYTE(WRITE_REG+RX_PW_P0,0x20);//设置接收通道0数据宽度为32字节WRITE_BYTES(WRITE_REG+RX_ADDR_P0,ADD_TX,5);//设置通道0地址WRITE_BYTE(WRITE_REG+EN_RXADDR,0x01);//使能接收通道0WRITE_BYTE(WRITE_REG+EN_AA,0x01);//使能通道0自动应答WRITE_BYTE(WRITE_REG+RF_CH,0x40); //设置载波频率WRITE_BYTE(WRITE_REG+RF_SETUP,0x0f); //射频参数,如数据传输率,发射功率WRITE_BYTE(WRITE_REG+CONFIG,0x0B);//设置接收,上电,CRC校验8位CE=1;for(i=0;i<20;i++);//延时60us}*************************************************************** *************************************************详情请咨询: http://shop108408772.taoba /*************************************************************** ***********************************************1>发送方程序:主程序://#include <reg52.h>#include 'stc12.h'#include'NRF24L01.h'#include <intrins.h>void main(){CLK_DIV=0x03;NRF24L01_TX(); //发送模式开启while(!((READ_BYTE(READ_REG+STATUS))&0x30));//等待发送完成CE=0;CSN=1;_nop_();CSN=0;SPI_WRITE(FLUSH_RX); //清空接收FIFO,否则数据不可预料SCK=0;CSN=1;if((READ_BYTE(READ_REG+STATUS))&0x20)fasong=0; // 发送成功标志位WRITE_BYTE(WRITE_REG+STATUS,0xFF); //屏蔽中断标志位while(1);}子程序:和接收子程序大部分一致,改动部分:void NRF24L01_TX()//NRF24L01设为发送模式{ //默认NRF24L01为掉电模式unsigned char i;CE=0;WRITE_BYTE(WRITE_REG+SETUP_AW,0x03);//设置地址宽度为5字节WRITE_BYTE(WRITE_REG+RX_PW_P0,0x20);//设置接收通道0数据宽度为32字节WRITE_BYTES(WR_TX_PLOAD,data_TX,32);//写入发送数据WRITE_BYTES(WRITE_REG+TX_ADDR,ADD_TX,5);//设置发送地址WRITE_BYTES(WRITE_REG+RX_ADDR_P0,ADD_TX,5);//设置通道0地址WRITE_BYTE(WRITE_REG+EN_RXADDR,0x01);//使能接收通道0WRITE_BYTE(WRITE_REG+EN_AA,0x01);//使能通道0自动应答WRITE_BYTE(WRITE_REG+SETUP_RETR,0x1a);// 自动重发次数10次WRITE_BYTE(WRITE_REG+RF_CH,0x40); //设置载波频率WRITE_BYTE(WRITE_REG+RF_SETUP,0x0f); //射频参数,如数据传输率,发射功率WRITE_BYTE(WRITE_REG+CONFIG,0x0A);//设置发射,上电,CRC校验8位CE=1;for(i=0;i<30;i++);//延时90us}将接收子程序中接收模式程序屏蔽即可。
nRF24L01的工作原理nRF24L01是一款低功耗、高性能的2.4GHz无线收发模块,广泛应用于无线通信领域。
它采用射频芯片nRF24L01+,具有多种功能和特点,包括高速率、多通道、自动重发、自动频道切换等。
下面将详细介绍nRF24L01的工作原理。
1. 射频通信基础知识在了解nRF24L01的工作原理之前,我们先来了解一些射频通信的基础知识。
射频通信是通过无线电波传输信息的一种方式,它利用无线电频谱进行信号传输。
射频通信系统由发送端和接收端组成,发送端将要传输的信息转换为无线电波,接收端接收并解码这些无线电波,还原出原始信息。
2. nRF24L01的硬件结构nRF24L01模块包含一个射频收发芯片和一些外围电路。
射频收发芯片负责无线信号的调制、解调、发送和接收,外围电路则提供电源、时钟、天线等支持。
3. 工作频率和通道nRF24L01工作在2.4GHz频段,这个频段被分为多个通道,每一个通道之间的频率间隔为1MHz。
nRF24L01的工作频率可以通过寄存器设置,可以选择不同的通道进行通信。
这种设计可以避免频率冲突,提高通信的可靠性。
4. 发送和接收模式nRF24L01可以在发送和接收两种模式下工作。
发送模式下,发送端将要传输的数据通过SPI接口发送给nRF24L01,nRF24L01将数据进行调制,并通过天线发送出去。
接收模式下,接收端通过天线接收到无线信号,nRF24L01将信号解调,并通过SPI接口将数据传输给接收端。
5. 数据包结构nRF24L01发送和接收的数据被组织成数据包。
数据包包含一个地址字段、一个有效载荷字段和一些控制字段。
地址字段用于标识发送端和接收端,有效载荷字段存储要传输的数据,控制字段包含一些配置信息,如数据包长度、重发次数等。
6. 自动重发和自动频道切换nRF24L01具有自动重发和自动频道切换的功能,可以提高通信的可靠性。
当发送端发送数据时,如果接收端没有正确接收到数据,nRF24L01会自动进行重发,直到达到最大重发次数。
nRF24L01的工作原理nRF24L01是一款低功耗的2.4GHz无线收发器,广泛应用于无线通信领域。
它采用射频芯片nRF24L01+和微控制器相结合的方式,可以实现无线数据传输和接收功能。
本文将详细介绍nRF24L01的工作原理及其相关技术参数。
一、nRF24L01的基本结构nRF24L01由射频芯片和微控制器组成,射频芯片负责无线通信的收发功能,而微控制器则负责控制和处理数据。
1. 射频芯片nRF24L01射频芯片是一款集成度高、性能稳定的射频收发器。
它支持2.4GHz 频段,采用GFSK调制方式,具有快速的数据传输速率和较低的功耗。
射频芯片包含了射频收发器、调制解调器、频率合成器等功能模块,能够实现无线通信的基本功能。
2. 微控制器nRF24L01通常与微控制器相结合使用,常见的微控制器有Arduino、STM32等。
微控制器负责控制射频芯片的工作模式、发送和接收数据的处理,以及与其他设备的交互等功能。
二、nRF24L01的工作模式nRF24L01具有多种工作模式,包括发送模式、接收模式和待机模式等。
下面将详细介绍每种工作模式的特点和工作原理。
1. 发送模式在发送模式下,nRF24L01将数据发送给接收端。
发送模式的工作原理如下:- 设置发送端的地址和通信频道。
- 将待发送的数据写入发送缓冲区。
- 发送端开始发送数据,nRF24L01将数据通过射频信号发送出去。
- 发送完毕后,发送端等待接收端的应答信号。
2. 接收模式在接收模式下,nRF24L01接收来自发送端的数据。
接收模式的工作原理如下:- 设置接收端的地址和通信频道。
- 接收端开始监听射频信号,并等待发送端发送数据。
- 当接收端接收到数据时,nRF24L01将数据写入接收缓冲区。
- 接收端可以通过读取接收缓冲区中的数据进行进一步处理。
3. 待机模式在待机模式下,nRF24L01处于低功耗状态,仅保持最基本的功能。
待机模式的工作原理如下:- nRF24L01关闭射频发送和接收功能,以降低功耗。
nRF24LE1无线监控通信开发文档nRF24LE1无线监控通信开发文档 (1)第一章项目背景概述 (3)第二章 nRF24LE1背景知识 (5)2.1 nRF24LE1的硬件架构介绍 (5)2.2 nRF24L01+2.4G射频收发器介绍 (6)2.2.1射频收发器架构介绍 (6)2.2.2 射频收发功能说明 (7)2.2.3 增强型ShockBurst (8)2.3 存储器相关 (9)第三章软硬件开发平台搭建 (11)3.1 硬件平台介绍 (11)3.2 软件平台介绍 (11)3.2.1 软件开发包SDK (12)3.2.2 nRF软件综合环境 (14)3.2.3 nRFprobe——在线仿真软件调试工具 (14)3.2.4 软件开发平台 (15)3.3 nRF24LE1 DK Getting Started Guide (16)第四章子模块代码解析 (18)4.1 I/O口的使用 (18)4.2 UART子模块 (20)4.3 实时钟RTC (21)4.4跳频子函数 (22)4.5 发送和接收子模块 (23)第五章无线抗干扰技术 (30)5.1 2.4GHz ISM频段分析 (30)5.2 无线抗干扰设计 (32)第六章无线通信协议 (33)6.1介质访问控制协议设计 (33)6.2 通信协议设计 (35)参考文献 (38)第一章 项目背景概述本无线通信设计应用于家庭安防监控系统。
如图1.1所示,该系统以主机为中心,多个传感器及摄像头等设备与主机构成一个星形的网络结构。
他们每个节点都配有一个无线收发模块nRF24LE1,主机也有无线收发模块,因此主机与各个设备之间都是无线通讯的,不需要布线来进行连接,系统维护和管理都不需要太多的外部干预,这样使得系统更加简便安全。
图1.1 无线通信系统框图各模块之间的通信关系:主机与摄像头之间:①向主机申请加入网络,主机收到加入申请后,回复加入网络成功信号;②主机发送拍摄照片命令,摄像头收到指令后按指令要求向主机发送图片数据;③当传感器被触发后,向主机发送触发信号;④定时的网络维持。