NRF24L01无线发射简易教程_第1页
NRF24L01无线发射简易教程_第2页
NRF24L01无线发射简易教程_第3页
NRF24L01无线发射简易教程_第4页
NRF24L01无线发射简易教程_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NRF24L01简易教程IOIO拟SPI且IRQ用简单的IO模拟SPI的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下:首先您需要了解芯片英我们的教程是以一个简单的小项目为大家展示NRF24L01的教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用NRF24L01发送数据和接收数据,且接收方会对比发送的数据与接收的数据,若完全相同则控制LED闪烁一次,并且把接收到的数据通过串口发送到PC端,通过串口工具查看接收到的数据。具体的要求如下:1、具备发送和接收的能力。2、发送32个字节的数据,接收方接收到正确数据之后给予提示,通过闪烁灯形式。3、把接收到的数据传送到PC进行查看。4、发送端每隔大约1.5秒发送一次数据,永久循环。DIY方式设计NRF24L01PCB方式或者万用板方式均可。如们不推荐自行做板呢,因为这样会增加您学习的难度,反而起到了反效果呢。我们使用的方式是画PCBO(∩_∩)O!我们知道NRF24L01的供电电压是1.9V~3.6V不能超过这个范围,低了不工作,高了可能烧毁NRF24L01芯片。我们常用的的单片机的供电电压是5V,我们不能直接给24L01AMS1117-3.3V稳压芯片把5V3.3V的电压为24L01模块供电。为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V转3.3VIO5个电源输出接口,为扩展使用。还包括了电源指示LED以及一个口独立控制的LED,这个独立控制的LED用于NRF24L01接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。 20IO扩展C41234540 3938 37 3635 3433 3231 3029282726252423222121R2LED电源及其扩展 C1 30pF30pF晶振电路R1复位电路12345678910111213141516171819201231231212N1ALE/P23456789123456789EA

GNDOGNDOUT12312345 123123456783.3 LEDHeader LED123456789101112131415161718192011234PCB布线图如下:完成效果图如下:背面图:上面PCB的背面有个小芯片和两个0805的元件,他们是什么呢?他们就是AMS1117-3.3V和两个贴片的滤波电容,为NRF24L01提供3.3V电源的电源转换部分。大家有兴趣也可以自己做呢。是NRF24L01的接口板呢,省去了另外还要做电源转接板以及各种插线的痛苦,O(∩_∩)O!写这个教程时我也觉得非常好使呢。24L01NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用调制,内部集成NORDIC自己的EnhancedShortBurst协议。可以实现点对点或是1对6的无线通信。加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。功能描述:真正的GFSK单片式收发芯片内置硬件链路层增强型ShockBurstTM功能自动应答及自动重发功能地址及检验功能无线速率:1或2MbpsSPI接口速率:0~8Mbps125个可选工作频道与nRF24XX系列完全兼容I/O可接受电平的输入20脚QFN4×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主要有以下几种工作状态:PowerDownMode:掉电模式Mode:发射模式RxMode:接收模式Standby-1Mode:待机1模式Standby-2Mode:待机2模式道RL1的通信协议为IPI的协议大家查相应资料度一下就会有获哦,所以我们看看SPI没有硬件系列的单机那么可以使硬件的P,将会的方便高效。以上为IO口模拟SPI的代码,通用于任何拥有可操作IO的微处理器,需要做好位运算您也可以借鉴的呢!有时您也许会为了这些配置问题而伤脑筋。我们先来看发射模式改怎么配置的。发射模式的配置顺序:设置到数据。寄存器为:TX_ADDR设置RX允许证数据正确发送。寄存器为:EN_AA6用大家熟悉了NRF24L01之后尝试吧。寄存器为:EN_RXADDR0器为:RF_SETUP校验模式以及收发状态响应方式。寄存器为:CONFIGTX发射模式的配置就是如此了。我们从第一行看看他是什么意思。第一步设置TX的地址,调用了函数SPI_Write_Buf(),它的原型是:WRITE_REG+TX_ADDR用的就行了。这两个常量是用宏定义来定义的,原型如下:TX_ADDRESS就是要设置的地址了,NRF24L01的地址是5个字节的,也就是位。有这些命令和数据,再结合SPI_Write_Buf()这个函数就可以实现对NRF24L01本地发射地址的设置了。由不一样而已。keil和硬件我们都有配套提供。那么它是如何操作的呢?它也是都是一些字节数据8位、16位或者其他,总是搞不清楚他们到底是怎么一回事,说实话这101101寄存器写入(或读出)命令(状态)或数据。以上的这些需要大家慢慢体会了,不明白也不影响我们使用这个NRF24L01的,呵呵!要是那样的呢?这就需要知道他们各个位的意义了。我们看下图就能明白了。我们那我们那EN_AA来举例说明:SPI_RW_Reg()SPI_RW_Reg()这个函数就不多说了,目的与前面所说的是一样的。我们来看看可以看到它的寄存器偏移是0x01,这里说明一下,如果想要进行写操作那么操作的寄存器地址是+EN_AA,也就是EN_AA加上写指令的基地址,若是读操作那么是READ_REG+EN_AA,也就是EN_AA加上读指令的基地址。我们看看EN_AA这个寄存器的功能是什么。它的位为8位初始化的值为00111111即。这。个送的数据是0x01,那么表示什么意思呢?意思是允许数据通道0自动应答,而其他的通道禁止,明白了吧。其他的都是这个样子滴。这是NRF24L01设置发射模式时的初始化过程。下面我们看看怎么用NRF24L01进行无线数据发射传输。我们从主函数main开始。这是模式1,该模式为自动发射。可以看到主函数调用的就是模式1,对于模式0手动方式,大家把主函数的Mode1改为Mode0就可以验证了。详细请看程序源码。在Mode1()这个函数中我们看看是怎么样的一个操作顺序。先延时1500ms左右,然后装载数据到NRF24L01,LED的操作就很简单了只是一个提示的作用,最后再清除NRF24L01的状态标志位,为下一次发送数据准备。大家要了解数据的发送是这个样子的。这个函数。初始化过了,所以这里可以不需要,但是当您使用NRF24L01跟多的功能时,如使用了多通这些功能大家知道就可以了,本教程也是让大家会用NRF24L01,后续还是靠大家自行努力了。是接收的数据指针,注意TX_PLOAD_WIDTH最大为32字节,不得操作此数。数据装载完成后需要的是发送命令了。这句就是设置了为发送的状态,在CE被拉高的时间里自动启动发送。那么紧接着CE=1就是此目的了。CONFIG为什么设置数据为0x0e了。接收模式 0么功能吧。Mode1()是循环发射模式,一次完成后就会进入下一次发射了。看了发射模式之后,我们再来看接收模式就不会很困难了。接收模式的配置初始化为:设置RX允许证数据正确发送。寄存器为:EN_AA6用大家熟悉了NRF24L01之后尝试吧。寄存器为:EN_RXADDR0配置发射的参数,主要为低噪放大器增益、发射的功率、无线传输的速率。寄存器为:RF_SETUP寄存器为:CONFIG注意接收模式的一些设置如第1、2、3、4、5、6中的数据参数要与发射模式的一致。一致,只是接收模式中少了2个操作,设置TX地址和设置重发次数,对于接收这两个设置发射与接收模式的不同就在于最后一位需要置0,那么接收就得置1,所以在判断接收前把这个位设置一下不就可以了。我们写一个函数来实现这个功能:CONFIG些0x0f就可以把最后一位设置为1了,就成了接收模式了。我们也从主函数出发,看看是怎么操作的。前面的初始化我们需要了解的是PC看它的原型:了。注意使用的是定时器1而不是定时器0。串口发送数据的函数是Rx_Byte()源码如下:只要按照Rx_Byte(Dat)这样调用就能把这个数据发送到PC了,PC需要用串口助手来查看数据,我们使用的下载软件即可使用,设置如下:选择到串口助手界面,在下面设置COM口和波特率,其他默认就可以了。点击这个按钮就可进入串口助手模式了。是熄灭接收到数据且数据完全正确后才被点亮一段时间(闪烁一下的效果)用于提示。这个是查询判断NRF24L01的接收状态的。我们来看着这个被调用的函数:是读取是读取NRF24L01的状态,目的是判断是否有数据接收。的地址。SPI_Read()的源码为:

是的宏定义,是状态寄存器状态。那么这里呢SPI_Read()这个函数就不说了。这里值得一提的是这个调用传的实参是,在NRF24L01_RxPacket()这个函数中还有个特别的变量sta,它的声明为:断状态是很有用的。我们来看这个寄存器的意义:可以看到对于接收我们需要判断RX_DR这个位是否为1很方便,也不用使用位运算来实现了。当查询到有数据了就会调用指向的地址为完成了数据的读出操作,下面是置位这个接收完成且成功标志位。在NRF24L01_RxPacket()这个函数中的最后就是返回ReceiveComplete_Flag这个变量了。在主函数中用于判断是否有数据接收成功。若接收数据成功了,那么我们接着看主函数。在项目的开始我们要求发送到PC端进行接收数据的查看,为此我们用下面的代码实现:32次循环依次把接收到的数据通过Rx_Byte()这个函数由串口发送到PC。路是这样的:我们也定义一个数组CheckBuf[],这个数组中的数据与发送端发送的数组数据完全一样,然后把接收数组RxBuf[]中的数据与CheckBuf[]一一对比即可达到检验的目的了。接收和发送端的数组数据如下图:发送端数据:接收端用于检测的数据:对于这个检验代码如下:PCRxBu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论