NRF24L01详细教程..
nRF24L01 无线模块 说明书

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模块使用教程

nrf24l01 模块使用教程
nRF24L01 是由NORDIC 生产的工作在2.4GHz~2.5GHz 的ISM 频段
的单片无线收发器芯片。
无线收发器包括:频率发生器、增强型SchockBurst 模式控制器、功率放大器、晶体振荡器、调制器和解调器。
输出功率频道选择和协议的设置可以通过SPI 接口进行设置。
几乎可以连接到各种单片机芯片,并完成无线数据传送工作。
极低的电流消耗:当工作在发射模式下发射功率为0dBm 时电流消耗为11.3mA ,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。
nrf24l01 模块使用教程
NRF24L01 与控制器的通信采用的SPI 通信协议,这个协议具体细节
大家可能都懂,不懂的可以之间百度;他们的通信模型是这样的:。
nRF24L01无线通信模块使用手册

nRF24L01无线通信模块使用手册一、模块简介该射频模块集成了NORDIC公司生产的无线射频芯片nRF24L01:1.支持2.4GHz的全球开放ISM频段,最大发射功率为0dBm2.2Mbps,传输速率高3.功耗低,等待模式时电流消耗仅22uA4.多频点(125个),满足多点通信及跳频通信需求5.在空旷场地,有效通信距离:25m(外置天线)、10m(PCB天线)6.工作原理简介:发射数据时,首先将nRF24L01配置为发射模式,接着把地址TX_ADDR和数据TX_PLD 按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。
如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从发送堆栈中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC_CNT)达到上限,MAX_RT置高,TX_PLD不会被清除;MAX_RT或TX_DS置高时,使IRQ变低,以便通知MCU。
最后发射成功时,若CE为低,则nRF24L01进入待机模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入待机模式2。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。
当接收方检测到有效的地址和CRC时,就将数据包存储在接收堆栈中,同时中断标志位RX_DR置高,IRQ变低,以便通知MCU去取数据。
若此时自动应答开启,接收方则同时进入发射状态回传应答信号。
最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。
三、模块引脚说明四、模块与AT89S52单片机接口电路注:上图为示意连接,可根据自己实际需求进行更改;使用AT89S52MCU模块时,请将Nrf24L01通讯模块每个端口(MOSI、SCK、CSN和CE)接4.7K的排阻上拉到VCC增强其驱动能力(如下图:)。
NRF24L01无线发射简易教程

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 方式或者万用板方式均可。
如果您想让自己学的很扎实,那么推荐您自行做出接口板子呢。
当然若您的能力不足,那么我们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。
我们使用的方式是画PCB 的方式呢,若您自己做了接口板子,那么您可以对比下一呢,O(∩_∩)O!我们知道NRF24L01 的供电电压是1.9V~3.6V 不能超过这个范围,低了不工作,高了可能烧毁NRF24L01 芯片。
我们常用的STC89C52 的单片机的供电电压是5V,我们不能直接给24L01 这个模块供电,我们需要使用AMS1117-3.3V 稳压芯片把5V 转成3.3V 的电压为24L01 模块供电。
NRF24L01使用方法

四、 程序说明
4.1 发射:
/* PD3--20 脚--CE----模块芯片开启信号 激活 RX 或 TX PD2--19 脚--CSN---模块 SPI 片选信号 PC7--17 脚--SCK---模块 SPI 时钟信号 PC6--16 脚--MOSI--模块 SPI 输入信号 PC5--15 脚--MISO--模块 SPI 输出信号 PC4--14 脚--IRQ---模块可屏蔽中断信号 低电平有效 */ #include <NRF_2401C.h> #include <delay.h> uchar RevTempDate[5];//最后一位用来存放结束标志 uchar TxAddr[]={0x34,0x43,0x10,0x10,0x02};//发送地址 /*****************状态标志*****************************************/ uchar sta; //状态标志 单片机输出 单片机输出 单片机输出 单片机输出 单片机输入 单片机输入
写寄存器 TXFIFO
广东顺德春暖花开自动化开发设计工作室
伍耀斌
4.2 接收:
/* PD3--20 脚--CE----模块芯片开启信号 激活 RX 或 TX PD2--19 脚--CSN---模块 SPI 片选信号 PC7--17 脚--SCK---模块 SPI 时钟信号 PC6--16 脚--MOSI--模块 SPI 输入信号 PC5--15 脚--MISO--模块 SPI 输出信号 PC4--14 脚--IRQ---模块可屏蔽中断信号 低电平有效 */ #include <NRF_2401C.h> #include <delay.h> uchar RevTempDate[5];//最后一位用来存放结束标志 uchar TxAddr[]={0x34,0x43,0x10,0x10,0x02};//发送地址 /*****************状态标志*****************************************/ uchar sta; //状态标志 //RX_DR=sta^6; //TX_DS=sta^5; PLC_BitState.BitState0.Bit.M4=1; //MAX_RT=sta^4; struct PLC_BITSTATE { //-------------------------------------------union BITSTATE0 { char all; struct BIT00 { uchar M0:1;// uchar M1:1;// uchar M2:1;// uchar M3:1;// uchar MAX_RT:1;// uchar TX_DS:1;// uchar RX_DR:1;// uchar M7:1;// }Bit; }BitState0; }PLC_BitState; /*****************SPI 时序函数******************************************/ uchar NRFSPI(uchar date) { } /**********************NRF24L01 初始化函数*******************************/ void NRF24L01Int() { } /*****************SPI 读寄存器一字节函数*********************************/ 单片机输出 单片机输出 单片机输出 单片机输出 单片机输入 单片机输入
NRF24L01详细教程

NRF24L01详细教程近来课程的项目需要用到NRF24L01,用来做基本的收发,虽然资料拿到不少,但是,很多资料并不是很清晰、所带的例程并不够简洁或有不少冗余的部分,再加上对应的中文数据手册部分没翻译出来,翻译出来的不够有条理,很多地方模糊,甚至关键的地方看一两次还看不出来,导致了在学NRF24L01时花费了较多时间,所以,学完NRF24L01后,萌生了写个尽量清晰的教程的想法。
教程中的例程虽然是库开发方式,但基本都是最底层的操作才用到库函数譬如发一字节数据、GPIO置位等,虽然用的STM32,但我在看其他板子的例程时,发觉内容与流程都是差不多的,只是不同板引脚不同所导致的引脚配置的不同,不管用什么方式开发,用什么芯片,了解清楚NRF24L01如何配置,了解清楚其收发流程,基本上就会开发了,所以此文档虽然写的是以STM32为例,但看完此文档用NRF24L01基本也没什么大问题了。
教程说明:这教程是基于STMF103ZET6的,是野火的板子,例程也是从野火提供修改例程得来,用的是库开发的方式。
学习NRF24L01的步骤:1.学习SPI,SPI就是NRF24L01传送数据到单片机的一种协议,类似于USB,当然USB还是比较有难度的。
2.了解NRF24L01相关寄存器,结合中文数据手册了解NRF24L01的基本配置,收发数据前后的操作(如何启动发送接收、寄存器清空、标志位重置等)。
3.分析具体代码SPI的简介:具体的SPI教程,大家可以去野火的教程进行学习,在此只是简略介绍一下,SPI是一种一对多协议:一个主机(MCU)对应对多个从机,可以分时与多个从机通讯SPI 总线包含4 条总线,分别为SS、SCK、MOSI、MISO,其含义分别为SS:Slave Select,片选信号线,主机借此信号线选择一个从机,低电平有效。
MOSI:Master Output,Slave Input,主机数据从此线输出到从机,数据方向从主机到从机。
nRF24L01中文手册

在 ShockBurstTM 发送模式下,nRF24L01 自动生成前导码及 CRC 校验,参见表格 12。数据发送完毕 后 IRQ 通知 MCU。减少了 MCU 的查询时间,也就意味着减少了 MCU 的工作量同时减少了软件的开发 时间。nRF24L01 内部有三个不同的 RX FIFO 寄存器(6 个通道共享此寄存器)和三个不同的 TX FIFO 寄 存器。在掉电模式下、待机模式下和数据传输的过程中 MCU 可以随时访问 FIFO 寄存器。这就允许 SPI 接口可以以低速进行数据传送,并且可以应用于 MCU 硬件上没有 SPI 接口的情况下。
小心:静电敏感器件。操作时遵守防护规则。
COPYRIGHT ©2007 迅通科技 TEL 北京:+86 10 64390486 深圳:+86 755 26675941
6
术语表
迅通科技
术语
描述
ACK
确认信号(应答信号)
ART
自动重发
CE
芯片使能
CLK
迅 ShockBurstTM 模式: ShockBurst 模式下 nRF24L01 可以与成本较低的低速 MCU 相连。高速信号处理是由芯片内部的射频 协议处理的,nRF24L01 提供 SPI 接口,数据率取决于单片机本身接口速度。ShockBurst 模式通过允许与 单片机低速通信而无线部分高速通信,减小了通信的平均消耗电流。
工业传感器 玩具
技
低工作电压:1.9~3.6V
概述:
科
nRF24L01 是一款工作在 2.4~2.5GHz 世界通用 ISM 频段的单片无线收发器芯片。无线收发器包括:频
NRF24L01模块说明书

NRF24L01高速嵌入式无线数传模块说明书2008年12月20日一、产品特性2.4GHz全球开放ISM频段,最大0dBm发射功率,免许可证使用支持六路通道的数据接收低工作电压:1.9~3.6V低电压工作高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率)多频点:125频点,满足多点通信和跳频通信需要超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线) 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
低应用成本:NRF24L01集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等,NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口,便于使用低成本单片机。
便于开发:由于链路层完全集成在模块上,非常便于开发。
自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制自动存储未收到应答信号的数据包自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程载波检测—固定频率检测内置硬件CRC检错和点对多点通信地址控制数据包传输错误计数器及载波检测功能可用于跳频设置可同时设置六路接收通道地址,可有选择性的打开接收通道 标准插针Dip2.54MM间距接口,便于嵌入式应用二、基本电气特性三、引脚说明说明:1)VCC脚接电压范围为1.9V~3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。
推荐电压3.3V左右。
(2)除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需电平转换。
当然对3V左右的单片机更加适用了。
(3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以了(a:与51系列单片机P0口连接时候,需要加10K的上拉电阻,与其余口连接不需要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
先来看接口电路,使用的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 模块供电。
为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V 转3.3V 电路、NRF24L01 模块接口。
并且全部引出单片机的IO 口,另外还加了5 个电源输出接口,为扩展使用。
还包括了电源指示LED 以及一个IO 口独立控制的LED,这个独立控制的LED用于NRF24L01 接收成功闪烁指示。
为了保证系统的稳定性,在设计中添加了两个滤波电容。
上面PCB 的背面有个小芯片和两个0805 的元件,他们是什么呢?他们就是AMS1117-3.3V 和两个贴片的滤波电容,为NRF24L01 提供3.3V 电源的电源转换部分。
NRF24L01 是NORDIC 公司最近生产的一款无线通信通信芯片,采用FSK 调制,内部集成NORDIC 自己的Enhanced Short Burst 协议。
可以实现点对点或是1 对 6 的无线通信。
无线通信速度可以达到2M(bps)。
NORDIC 公司提供通信模块的GERBER 文件,可以直接加工生产。
嵌入式工程师或是单片机爱好者只需要为单片机系统预留 5 个GPIO,1 个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU 系统构建无线通信功能。
功能描述:真正的GFSK 单片式收发芯片内置硬件链路层增强型ShockBurstTM 功能自动应答及自动重发功能地址及CRC 检验功能无线速率:1 或2MbpsSPI 接口速率:0~8Mbps125 个可选工作频道很短的频道切换时间,可用于跳频与nRF 24XX 系列完全兼容I/O 可接受5V 电平的输入20 脚QFN 4×4mm 封装极低成本晶振±60ppm使用低成本电感和双面PCB 板低工作电压:1.9~3.6V应用领域:无线鼠标,键盘,游戏机操纵杆无线数据通讯无线门禁安防系统遥控装置遥感勘测智能运动设备工业传感器玩具我们常见的2.4GHz 无线键盘鼠标有些就是使用此无线技术实现的呢。
NRF24L01 引脚功能说明:引脚分别为CSN、SCK、MISO、MOSI、IRQ、CE。
CSN:芯片的片选线,CSN 为低电平芯片工作。
SCK:芯片控制的时钟线(SPI 时钟)MISO:芯片控制数据线(主入从出)MOSI:芯片控制数据线(主出从入)IRQ:中断信号。
无线通信过程中MCU 主要是通过IRQ 与NRF24L01 进行通信。
CE:芯片的模式控制线。
在CSN 为低的情况下,CE 协同NRF24L01 的CONFIG 寄存器共同决定NRF24L01 的状态。
NRF24L01 主要有以下几种工作状态:Power Down Mode:掉电模式Tx Mode:发射模式Rx Mode:接收模式Standby-1Mode:待机1 模式Standby-2 Mode:待机2 模式我们使用的模式主要为发射模式和接收模式。
下面来看看怎么配置这些模式吧。
我们知道NRF24L01 的通信协议为SPI(SPI 的协议请大家查阅相应资料,百度一下你就会有收获哦!),所以我们看看SPI 协议怎么写(IO 口模拟,STC89C52 没有硬件SPI,若您会了STC12C5Axxxx系列的单片机那么您可以使用硬件的SPI,将会更加的方便高效)。
以上为IO 口模拟SPI 的代码,通用于任何拥有可操作IO 的微处理器,需要做好位运算处理。
代码的解释如程序中的注释所示。
非常详细的注释哦!也采用了自己喜欢的编程风格,您也可以借鉴的呢!我们主要是来看看它的配置过程。
我想对于一种芯片它的正确配置是大家最为关心的,有时您也许会为了这些配置问题而伤脑筋。
我们先来看发射模式改怎么配置的。
发射模式的配置顺序:1. 设置TX 节点的地址,也就是发射地址,接收端需与这个地址相同,否则接收不到数据。
寄存器为:TX_ADDR2. 设置RX 节点的地址,也就是接收时的地址,如果是在发射模式下那么功能是为自动应答服务的(AUTO ACK)。
寄存器为:RX_ADDR_P03. 允许AUTO ACK 功能,意思是发送数据后都会等待接收端的应答信号,目的是保证数据正确发送。
寄存器为:EN_AA4. 设置允许的接收通道,总共有6 个通道,我们只使用通道0,其他通道的功能应用大家熟悉了NRF24L01 之后尝试吧。
寄存器为:EN_RXADDR5. 配置自动重发次数。
寄存器为:SETUP_RETR6. 选择通信的频率。
寄存器为:RF_CH7. 设置接收通道0 的接收数据有效宽度,与第四步对应。
寄存器为:RX_PW_P08. 配置发射的参数,主要为低噪放大器增益、发射的功率、无线传输的速率。
寄存器为:RF_SETUP9. 配置收发状态(这时配置为发射模式),CRC 校验模式以及收发状态响应方式。
寄存器为:CONFIGTX 发射模式的配置就是如此了。
我们从第一行看看他是什么意思。
第一步设置TX 的地址,调用了函数SPI_Write_Buf(),它的原型是:WRITE_REG 是写寄存器指令的基地址,TX_ADDR 是相对于基地址的偏移量,WRITE_REG+ TX_ADDR 就是设置发送地址的寄存器了。
若您不明白这些概念,也没关系,知道是这样使用的就行了。
这两个常量是用宏定义来定义的,原型如下:TX_ADDRESS 就是要设置的地址了,NRF24L01 的地址是5 个字节的,也就是40 位。
TX_ADR_WIDTH 就是致命这个地址的长度了。
他们的定义如下:有这些命令和数据,再结合SPI_Write_Buf()这个函数就可以实现对NRF24L01 本地发射地址的设置了。
由SPI_Write_Buf()这个函数我们可以看到,它的写入方式是:先设置将要操作的寄存器地址(这里是本地发射地址寄存器),然后再连续写入地址数据的信息,也就是TX_ADDRESS 数组中的地址数据。
注意接收端的地址与这个必须一模一样。
那么第二句也是跟第一句同理的,操作的方式一模一样,只是选择的地址和写入的数据不一样而已。
如果您想深入了解,那么就是用编译器keil 的跟踪功能查看各个寄存器的意义吧,程序和硬件我们都有配套提供。
后面的寄存器操作使用的函数都是SPI_RW_Reg(),原型如下:可以看到它的功能是选择一个寄存器然后写入这个寄存器的操作命令,是单字节进行的。
那么它是如何操作的呢?它也是SPI_Write_Buf()类似,先选择寄存器然后向这个寄存器写入命令或数据。
到这呢我想对于很多刚学习不久的朋友来说,这些寄存、寄存器的数据或命令都是一些字节数据8 位、16 位或者其他,总是搞不清楚他们到底是怎么一回事,说实话这些在当时也困扰了我很长时间,这主要是这样的概念我们还没接受导致的,原来老师也总是跟我们将教室的门牌号和教室里学生之间的关系,由于刚接触很难真正理解。
总之简单一句话,如果你想找到在教室101 房间的一个同学,那么你就得先找到101 这个教室,然后再去找你想找的同学。
程序中的寄存器和寄存器中的数据跟这个也是相同的概念,你要操一个命令位或者字节,那么你得先定位它的位置(寄存器),才能对它正确无误的操作。
言归正传,我们在操作一个芯片时,对其的控制都是以这种方式进行的:先选择寄存器然后向这个寄存器写入(或读出)命令(状态)或数据。
以上的这些需要大家慢慢体会了,不明白也不影响我们使用这个NRF24L01 的,呵呵!紧接着就是第三步到第九步了,我想大家又会有疑问了:为什么寄存器后面写入的数据要是那样的呢?这就需要知道他们各个位的意义了。
我们看下图就能明白了。
我们拿EN_AA 来举例说明:可以看到它的寄存器偏移是0x01,这里说明一下,如果想要进行写操作那么操作的寄存器地址是WRITE_REG + EN_AA,也就是EN_AA 加上写指令的基地址,若是读操作那么是READ_REG + EN_AA,也就是EN_AA 加上读指令的基地址。
我们看看EN_AA 这个寄存器的功能是什么。
它的位为8 位初始化的值为00111111 即0x3f,每个位的功能上表已经很详细了。
这个送的数据是0x01,那么表示什么意思呢?意思是允许数据通道0 自动应答,而其他的通道禁止,明白了吧。
其他的都是这个样子滴。
这是NRF24L01 设置发射模式时的初始化过程。
下面我们看看怎么用NRF24L01 进行无线数据发射传输。
我们从主函数main 开始。
主函数很简单,我们为您提供了两个模式的发射方式:手动发射(按键控制)和自动发射(每隔一段时间发送一次数据)。
这是模式1,该模式为自动发射。
可以看到主函数调用的就是模式1,对于模式0 手动方式,大家把主函数的Mode1 改为Mode0 就可以验证了。
详细请看程序源码。
在Mode1()这个函数中我们看看是怎么样的一个操作顺序。