您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > NRF24L01无线发射简易教程
DoWell电子版权所有未经允许不得转载myworlded.taobao.comNRF24L01简易教程DoWell电子版权所有未经允许不得转载myworlded.taobao.com温馨提示:如果您是新手推荐您按照我们写的顺序看哦!先来看接口电路,使用的IO口不是唯一的哦,可随意定义接口,当然是在使用IO口模拟SPI且IRQ中断引脚不使用的使用查询方法判断接收状态的情况下了。作为初探我们就是用简单的IO模拟SPI的方法了,中断使用查询的方式。那么该教程讲解的接口与单片机的连接如下:首先您需要了解NRF24L01,请参阅“NRF24L01芯片中文资料”或者“NRF24L01芯片英文资料”。我们的教程是以一个简单的小项目为大家展示NRF24L01的使用方法与乐趣。我们所写的教程均是以这种方式的呢,让您在学习的时候明白它能做什么,使您学起来不至于枯燥无味。欢迎您光临我们小店:myworlded.taobao.com,您的支持就是我们最大的动力。作为简易的教程,我们只需要知道它是怎么使用的就够了,我们本教程的目的是用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模块供电。为此我们的设计原理图如下:包含单片机最小系统、供电系统、下载程序接口、5V转3.3V电路、NRF24L01模块接口。并且全部引出单片机的IO口,另外还加了5个电源输出接口,为扩展使用。还包括了电源指示LED以及一个IO口独立控制的LED,这个独立控制的LED用于NRF24L01接收成功闪烁指示。为了保证系统的稳定性,在设计中添加了两个滤波电容。DoWell电子版权所有未经允许不得转载myworlded.taobao.comPCB布线图如下:完成效果图如下:P101P112P123P134P145P156P167P178RST9P3010P3111P33/INT113P34/T014P35/T115P36/WR16P37/RD17X118X219P2223P2324P2425P2526P2627P2728PSEN29ALE/P30EA/VP31P0732P0633P0534P0435P0336P0237P0138P0039VCC40P32/INT012P2122P2021GND20U1STC89C52C130pFC230pFXTAL112MHzGNDVCCVCCR110KGNDC310uFVCCRST1234567891011121314151617181920JP1HEADER201234567891011121314151617181920JP2HEADER2012DC1DCKEY1SwitchGNDVCCP10P11P12P13P14P15P16P17P20P21P22P23P24P25P26P27P30P31P32P33P34P35P36P37P00P01P02P03P04P05P06P07RSTP10P11P12P13P14P15P16P17P30P31P32P33P34P35P36P37GNDVCCP20P21P22P23P24P25P26P27P00P01P02P03P04P05P06P0712J1EA_EN12345J2VCC12345J3GNDVCCGNDALEPSENALEPSENX1X2X1X2KEY2RSTRST电源及其扩展晶振电路复位电路X1X2STC89C52主控IO扩展1234J4串口下载VCCGNDP30P31EAEAC5220uFC4104VCCGNDD1LEDR25.1KGNDVCCGND123456789J5排阻GND1OUT2IN3U2LM1117_3.3VC610uFGNDVCC3.33.3GNDCECSNSCKMISOIRQ12345678P1Header4X2C710uFP20P21P22P23P24P25D2LEDR35.1KVCCP2643211234567812122211234567891212122154321543211234191817161514131211109876543212019181716151413121110987654321201122124039383736353433323130292827262524232221201918171615141312111098765432121122121216543211212DoWell电子版权所有未经允许不得转载myworlded.taobao.com背面图:上面PCB的背面有个小芯片和两个0805的元件,他们是什么呢?他们就是AMS1117-3.3V和两个贴片的滤波电容,为NRF24L01提供3.3V电源的电源转换部分。大家有兴趣也可以自己做呢。也可以到我们小店选购呢。是一套两个板哦!DoWell电子版权所有未经允许不得转载myworlded.taobao.com也许大家有疑问,能不能用呢?放心好了,我们的例程就是以这个板子为基板的,没有任何问题。这个板子是不是感觉很不错呢,呵呵!它不仅仅是可作为最小系统使用,而且还是NRF24L01的接口板呢,省去了另外还要做电源转接板以及各种插线的痛苦,O(∩_∩)O!写这个教程时我也觉得非常好使呢。板子做好了,我们看看24L01怎么来操作吧,这也是本教程的重点呢。我们呢就按照上面的功能要求来设计这个程序。在程序设计之前先了解下NRF24L01。NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的EnhancedShortBurst协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。功能描述: 真正的GFSK单片式收发芯片 内置硬件链路层 增强型ShockBurstTM功能 自动应答及自动重发功能 地址及CRC检验功能 无线速率:1或2Mbps SPI接口速率:0~8Mbps 125个可选工作频道 很短的频道切换时间,可用于跳频 与nRF24XX系列完全兼容DoWell电子版权所有未经允许不得转载myworlded.taobao.com I/O可接受5V电平的输入 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:掉电模式TxMode:发射模式RxMode:接收模式Standby-1Mode:待机1模式Standby-2Mode:待机2模式程序源文件代码:我们使用的模式主要为发射模式和接收模式。下面来看看怎么配置这些模式吧。我们知道NRF24L01的通信协议为SPI(SPI的协议请大家查阅相应资料,百度一下你就会有收获哦!),所以我们看看SPI协议怎么写(IO口模拟,STC89C52没有硬件SPI,若您会了STC12C5Axxxx系列的单片机那么您可以使用硬件的SPI,将会更加的方便高效)。DoWell电子版权所有未经允许不得转载myworlded.taobao.com以上为IO口模拟SPI的代码,通用于任何拥有可操作IO的微处理器,需要做好位运算处理。代码的解释如程序中的注释所示。非常详细的注释哦!也采用了自己喜欢的编程风格,您也可以借鉴的呢!我们主要是来看看它的配置过程。我想对于一种芯片它的正确配置是大家最为关心的,有时您也许会为了这些配置问题而伤脑筋。我们先来看发射模式改怎么配置的。发射模式的配置顺序:1.设置TX节点的地址,也就是发射地址,接收端需与这个地址相同,否则接收不到数据。寄存器为:TX_ADDR2.设置RX节点的地址,也就是接收时的地址,如果是在发射模式下那么功能是为自动应答服务的(AUTOACK)。寄存器为:RX_ADDR_P03.允许AUTOACK功能,意思是发送数据后都会等待接收端的应答信号,目的是保证数据正确发送。寄存器为:EN_AA4.设置允许的接收通道,总共有6个通道,我们只使用通道0,其他通道的功能应用大家熟悉了NRF24L01之后尝试吧。寄存器为:EN_RXADDR5.配置自动重发次数。寄存器为:SETUP_RETR6.选择通信的频率。寄存器为:RF_CH7.设置接收通道0的接收数据有效宽度,与第四步对应。寄存器为:RX_PW_P08.配置发射的参数,主要为低噪放大器增益、发射的功率、无线传输的速率。寄存器为:RF_SETUP9.配置收发状态(这时配置为发射模式),CRC校验模式以及收发状态响应方式。寄存器为:CONFIGTX发射模式的配置就是如此了。我们从第一行看看他是什么意思。第一步设置TX的地址,调用了函数SPI_Write_Buf(),它的原型是:调用是用下面的语句进行的。DoWell电子版权所有未经允许不得转载myworlded.taobao.comWRITE_REG是写寄存器指令的基地址,TX_ADDR是相对于基地址的偏移量,WRITE_REG+TX_ADDR就是设置发送地址的寄存器了。若您不明白这些概念,也没关系,知道是这样使用的就行了。这两个常量是用宏定义来定义的,原型如下:TX_ADDRESS就是要设置的地址了,NRF24L01的地址是5个字节的,也就是40位。TX_ADR_WIDTH就是致命这个地址的长度了。他们的定义如下:有这些命令和数据,再结合SPI_Write_Buf()这个函数就可以实现对NRF24L01本地发射地址的设置了。由SPI_Write_Buf()这个函数我们可以看到,它的写入方式是:先设置将要操作的寄存器地址(这里是本地发射地址寄存器),然后再连续写入地址数据的信息,也就是TX_ADDRESS数组中的地址数据。注意接收端的地址与这个必须一模一样
本文标题:NRF24L01无线发射简易教程
链接地址:https://www.777doc.com/doc-5137749 .html