NRFL详细教程文档格式.doc
- 文档编号:13161820
- 上传时间:2022-10-07
- 格式:DOC
- 页数:17
- 大小:4.74MB
NRFL详细教程文档格式.doc
《NRFL详细教程文档格式.doc》由会员分享,可在线阅读,更多相关《NRFL详细教程文档格式.doc(17页珍藏版)》请在冰豆网上搜索。
我们常用的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自己的EnhancedShortBurst协议。
可以实现点对点或是1对6的无线通信。
无线通信速度可以达到2M(bps)。
NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。
嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。
功能描述:
真正的GFSK单片式收发芯片
内置硬件链路层
增强型ShockBurstTM功能
自动应答及自动重发功能
地址及CRC检验功能
无线速率:
1或2Mbps
SPI接口速率:
0~8Mbps
125个可选工作频道
很短的频道切换时间,可用于跳频
与nRF24XX系列完全兼容
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,将会更加的方便高效)。
以上为IO口模拟SPI的代码,通用于任何拥有可操作IO的微处理器,需要做好位运算处理。
代码的解释如程序中的注释所示。
非常详细的注释哦!
也采用了自己喜欢的编程风格,您也可以借鉴的呢!
我们主要是来看看它的配置过程。
我想对于一种芯片它的正确配置是大家最为关心的,
有时您也许会为了这些配置问题而伤脑筋。
我们先来看发射模式改怎么配置的。
发射模式的配置顺序:
1.设置TX节点的地址,也就是发射地址,接收端需与这个地址相同,否则接收不
到数据。
寄存器为:
TX_ADDR
2.设置RX节点的地址,也就是接收时的地址,如果是在发射模式下那么功能是为
自动应答服务的(AUTOACK)。
RX_ADDR_P0
3.允许AUTOACK功能,意思是发送数据后都会等待接收端的应答信号,目的是保
证数据正确发送。
EN_AA
4.设置允许的接收通道,总共有6个通道,我们只使用通道0,其他通道的功能应
用大家熟悉了NRF24L01之后尝试吧。
EN_RXADDR
5.配置自动重发次数。
SETUP_RETR
6.选择通信的频率。
RF_CH
7.设置接收通道0的接收数据有效宽度,与第四步对应。
RX_PW_P0
8.配置发射的参数,主要为低噪放大器增益、发射的功率、无线传输的速率。
寄存
器为:
RF_SETUP
9.配置收发状态(这时配置为发射模式),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()这个函数中我们看看是怎么样的一个操作顺序。
先延时1500ms左右,然后装载数据到NRF24L01,LED的操作就很简单了只是一个提示的作用,最后再清除NRF24L01的状态标志位,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NRFL 详细 教程