nRF24L01无线通信模块使用手册.docx
- 文档编号:24313512
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:34
- 大小:199.17KB
nRF24L01无线通信模块使用手册.docx
《nRF24L01无线通信模块使用手册.docx》由会员分享,可在线阅读,更多相关《nRF24L01无线通信模块使用手册.docx(34页珍藏版)》请在冰豆网上搜索。
nRF24L01无线通信模块使用手册
nRF24L01无线通信模块使用手册
一、模块简介
该射频模块集成了NORDIC公司生产的无线射频芯片nRF24L01:
1.支持2.4GHz的全球开放ISM频段,最大发射功率为0dBm
2.2Mbps,传输速率高
3.功耗低,等待模式时电流消耗仅22uA
4.多频点(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。
二、模块电气特性
参数
数值
单位
供电电压
5
V
最大发射功率
0
dBm
最大数据传输率
2
Mbps
电流消耗(发射模式,0dBm)
11.3
mA
电流消耗(接收模式,2Mbps)
12.3
mA
电流消耗(掉电模式)
900
nA
温度范围
-40~+85
℃
三、模块引脚说明
管脚
符号
功能
方向
1
GND
电源地
2
IRQ
中断输出
O
3
MISO
SPI输出
O
4
MOSI
SPI输入
I
5
SCK
SPI时钟
I
6
NC
空
7
NC
空
8
CSN
芯片片选信号
I
9
CE
工作模式选择
I
10
+5V
电源
四、模块与AT89S52单片机接口电路
注:
上图为示意连接,可根据自己实际需求进行更改;使用AT89S52MCU模块时,请将Nrf24L01通讯模块每个端口(MOSI、SCK、CSN和CE)接4.7K的排阻上拉到VCC增强其驱动能力(如下图:
)。
若使用其它单片机与Nrf24L01通讯模块相连时请串联2K电阻。
五、工作模式控制
工作模式由CE和PWR_UP、PRIM_RX两寄存器共同控制:
模式
PWR_UP
PRIM_RX
CE
FIFO寄存器状态
接收模式
1
1
1
-
发射模式
1
0
11
数据存储在FIFO寄存器中,发射所有数据
发射模式
1
0
0→12
数据存储在FIFO寄存器中,发射一个数据
待机模式II
1
0
1
TXFIFO为空
待机模式I
1
-
0
无正在传输的数据
掉电模式
0
-
-
-
注1:
进入此模式后,只要CSN置高,在FIFO中的数据就会立即发射出去,直到所有数据数据发射完毕,之后进入待机模式II。
注2:
正常的发射模式,CE端的高电平应至少保持10us。
24L01将发射一个数据包,之后进入待机模式I。
六、数据和控制接口
通过以下六个引脚,可实现模块的所有功能:
①IRQ(低电平有效,中断输出)
②CE(高电平有效,发射或接收模式控制)
③CSN(SPI信号)
④SCK(SPI信号)
⑤MOSI(SPI信号)
⑥MISO(SPI信号)
通过SPI接口,可激活在数据寄存器FIFO中的数据;或者通过SPI命令(1个字节长度)访问寄存器。
在待机或掉电模式下,单片机通过SPI接口配置模块;在发射或接收模式下,单片机通过SPI接口接收或发射数据。
1.SPI指令
所有的SPI指令均在当CSN由低到高开始跳变时执行;从MOSI写命令的同时,MISO实时返回24L01的状态值;SPI指令由命令字节和数据字节两部分组成。
SPI命令字节表
指令名称
指令格式(二进制)
字节数
操作说明
R_REGISTER
000AAAAA
1~5
读寄存器。
AAAAA表示寄存器地址。
W_REGISTER
001AAAAA
1~5
写寄存器。
AAAAA表示寄存器地址,只能在掉电或待机模式下操作。
R_RX_PAYLOAD
01100001
1~32
在接收模式下读1~32字节RX有效断气。
从字节0开始,数据读完后,FIFO寄存器清空。
W_TX_PAYLOAD
10100000
1~32
在发射模式下写1~31字节TX有效数据。
从字节0开始。
FLUSH_TX
11100001
0
在发射模式下,清空TXFIFO寄存器。
FLUSH_RX
11100010
0
在接收模式下,清空RXFIFO寄存器。
在传输应答信号时不应执行此操作,否则不能传输完整的应答信号。
REUSE_TX_PL
11100011
0
应用于发射端。
重新使用上一次发射的有效数据,当CE=1时,数据将不断重新发射。
在发射数据包过程中,应禁止数据包重用功能。
NOP
11111111
0
空操作。
可用于读状态寄存器。
2.SPI时序
SPI读写时序见下面两图。
在写寄存器之前,一定要进入待机模式或掉电模式。
其中,Cn——SPI指令位;Sn——状态寄存器位;Dn——数据位(低字节在前,高字节在后;每个字节中高位在前)
SPI读时序
SPI写时序
七、寄存器内容及说明
地址
(十六进制)
寄存器
位
复位值
类型
说明
00
CONFIG
配置寄存器
Reserved
7
0
R/W
默认为0
MASK_RX_DR
6
0
R/W
可屏蔽中断RX_RD
1:
中断产生时对IRQ没影响
0:
RX_RD中断产生时,IRQ引脚为低
MASK_TX_DS
5
0
R/W
可屏蔽中断TX_RD
1:
中断产生时对IRQ没影响
0:
TX_RD中断产生时,IRQ引脚为低
MASK_MAX_RT
4
0
R/W
可屏蔽中断MAX_RT
1:
中断产生时对IRQ没影响
0:
MAX_RT中断产生时,IRQ引脚为低
EN_CRC
3
1
R/W
CRC使能。
如果EN_AA中任意一位为高,则EN_CRC为高。
CRCO
2
0
R/W
CRC校验值:
0:
1字节
1:
2字节
PWR_UP
1
0
R/W
0:
掉电1:
上电
PRIM_RX
0
0
R/W
0:
发射模式1:
接收模式
01
EN_AAEnhancedShockBurst™
使能“自动应答”功能
Reserved
7:
6
00
R/W
默认为00
ENAA_P5
5
1
R/W
数据通道5自动应答使能位
ENAA_P4
4
1
R/W
数据通道4自动应答使能位
ENAA_P3
3
1
R/W
数据通道3自动应答使能位
ENAA_P2
2
1
R/W
数据通道2自动应答使能位
ENAA_P1
1
1
R/W
数据通道1自动应答使能位
ENAA_P0
0
1
R/W
数据通道0自动应答使能位
02
EN_RXADDR
接收地址允许
Reserved
7:
6
00
R/W
默认为00
ERX_P5
5
0
R/W
数据通道5接收数据使能位
ERX_P4
4
0
R/W
数据通道4接收数据使能位
ERX_P3
3
0
R/W
数据通道3接收数据使能位
ERX_P2
2
0
R/W
数据通道2接收数据使能位
ERX_P1
1
1
R/W
数据通道1接收数据使能位
ERX_P0
0
1
R/W
数据通道0接收数据使能位
03
SETUP_AW
设置地址宽度(所有数据通道)
Reserved
7:
2
000000
R/W
默认为00000
AW
1:
0
11
R/W
接收/发射地址宽度:
00:
无效
01:
3字节
10:
4字节
11:
5字节
04
SETUP_RETR
自动重发
ARD
7:
4
0000
R/W
自动重发延时时间:
0000:
250us
0001:
500us
……
1111:
4000us
ARC
3:
0
0011
R/W
自动重发计数:
0000:
禁止自动重发
0001:
自动重发1次
……
1111:
自动重发15次
05
RF_CH
射频通道
Reserved
7
0
R/W
默认为0
RF_CH
6:
0
0000010
R/W
设置工作通道频率
06
RF_SETUP
射频寄存器
Reserved
7:
5
000
R/W
默认为000
PLL_LOCK
4
0
R/W
锁相环使能,测试下使用
RF_DR
3
1
R/W
数据传输率:
0:
1Mbps
1:
2Mbps
RF_PWR
2:
1
11
R/W
发射功率:
00:
-18dBm
01:
-12dBm
10:
-6dBm
11:
0dBm
LNA_HCURR
0
1
R/W
低噪声放大器增益
07
STATUS
状态寄存器
Reserved
7
0
R/W
默认值为0
RX_DR
6
0
R/W
接收数据中断位。
当收到有效数据包后置1。
写‘1’清除中断
TX_DS
5
0
R/W
发送数据中断。
如果工作在自动应答模式下,只有当接收到应答信号后置1。
写‘1’清除中断
MAX_RT
4
0
R/W
重发次数溢出中断。
写‘1’清除中断。
如果MAX_RT中断产生,则必须清除后才能继续通讯
RX_P_NO
3:
1
111
R
接收数据通道号:
000-101:
数据通道号
110:
未使用
111:
RXFIFO寄存器为空
TX_FULL
0
0
R
TXFIFO寄存器满标志位
08
OBSERVE_TX
发送检测寄存器
PLOS_CNT
7:
4
0
R
数据包丢失计数器。
当写RF_CH寄存器时,此寄存器复位。
当丢失15个数据包后,此寄存器重启。
ARC_CNT
3:
0
0
R
重发计数器。
当发送新数据包时,此寄存器复位。
09
CD
载波检测
Reserved
7:
1
000000
R
CD
0
0
R
0A
RX_ADDR_P0
39:
0
E7E7E7E7E7
R/W
数据通道0接收地址。
最大长度为5个字节。
0B
RX_ADDR_P1
39:
0
C2C2C2C2C2
R/W
数据通道1接收地址。
最大长度为5个字节。
0C
RX_ADDR_P2
7:
0
C3
R/W
数据通道2接收地址。
最低字节可设置,高字节必须与RX_ADDR_P1[39:
8]相等
0D
RX_ADDR_P3
7:
0
C4
R/W
数据通道3接收地址。
最低字节可设置,高字节必须与RX_ADDR_P1[39:
8]相等
0E
RX_ADDR_P4
7:
0
C5
R/W
数据通道4接收地址。
最低字节可设置,高字节必须与RX_ADDR_P1[39:
8]相等
0F
RX_ADDR_P5
7:
0
C6
R/W
数据通道5接收地址。
最低字节可设置,高字节必须与RX_ADDR_P1[39:
8]相等
10
TX_ADDR
39:
0
E7E7E7E7E7
R/W
发送地址。
在ShockBurstTM模式,设置RX_ADDR_P0与此地址相等来接收应答信号
11
RX_PW_P0
Reserved
7:
6
00
R/W
默认为00
RX_PW_P0
5:
0
0
R/W
数据通道0接收数据有效宽度:
0:
无效
1:
1个字节
……
32:
32个字节
12
RX_PW_P1
Reserved
7:
6
00
R/W
默认为00
RX_PW_P1
5:
0
0
R/W
数据通道1接收数据有效宽度:
0:
无效
1:
1个字节
……
32:
32个字节
13
RX_PW_P2
Reserved
7:
6
00
R/W
默认为00
RX_PW_P2
5:
0
0
R/W
数据通道2接收数据有效宽度:
0:
无效
1:
1个字节
……
32:
32个字节
14
RX_PW_P3
Reserved
7:
6
00
R/W
默认为00
RX_PW_P3
5:
0
0
R/W
数据通道3接收数据有效宽度:
0:
无效
1:
1个字节
……
32:
32个字节
15
RX_PW_P4
Reserved
7:
6
00
R/W
默认为00
RX_PW_P4
5:
0
0
R/W
数据通道4接收数据有效宽度:
0:
无效
1:
1个字节
……
32:
32个字节
16
RX_PW_P5
Reserved
7:
6
00
R/W
默认为00
RX_PW_P5
5:
0
0
R/W
数据通道5接收数据有效宽度:
0:
无效
1:
1个字节
……
32:
32个字节
17
FIFO_STATUS
FIFO状态寄存器
Reserved
7
0
R/W
默认为0
TX_REUSE
6
0
R
若TX_REUSE=1,则当CE置高时,不断发送上一数据包。
TX_REUSE通过SPI指令REUSE_TX_PL设置;通过W_TX_PALOAD或FLUSH_TX复位
TX_FULL
5
0
R
TX_FIFO寄存器满标志
1:
寄存器满
0:
寄存器未满,有可用空间
TX_EMPTY
4
1
R
TX_FIFO寄存器空标志
1:
寄存器空
0:
寄存器非空
Reserved
3:
2
00
R/W
默认为00
RX_FULL
1
0
R
RXFIFO寄存器满标志
1:
寄存器满
0:
寄存器未满,有可用空间
RX_EMPTY
0
1
R
RXFIFO寄存器空标志
1:
寄存器空
0:
寄存器非空
N/A
TX_PLD
255:
0
X
W
N/A
RX_PLD
255:
0
X
R
八、模块编程控制
1.ShockBurstTM发射模式
①设置PRIM_RX为低。
②通过SPI接口,将接收节点地址(TX_ADDR)和有效数据(TX_PLD)写入模块,写TX_PLD时,CSN必须一直置低。
③置CE为高,启动发射。
CE高电平持续时间至少为10us。
④ShockBurstTM发射模式:
系统上电
启动内部16MHz时钟
数据打包
数据发射
⑤若启动了自动应答模式(ENAA_P0=1),则模块立即进入接收模式(NO_ACK已设置)。
如果接收到应答信号,则表示发射成功,TX_DS置高且TXFIFO中的有效数据被移出;如果没有接收到应答信号,则自动重发(自动重发已设置);如果自动重发次数超过最大值(ARC),MAX_RT置高,在TXFIFO中的数据不被移出。
当MAX_RT和TX_DS置高时,IRQ激活。
只有重新写状态寄存器(STATUS)才能关闭IRQ。
如果重发次数达到最大后,仍没有接收到应答信号,在MAX_RT中断清除之前,不会再发射数据。
PLOS_CNT计数器会增加,每当有一个MAX_RT中断产生。
⑥如果CE置低,则系统进行待机模式I,否则发送TXFIFO寄存器中的下一个数据包。
当TXFIFO中的数据发射完,CE仍为高时,系统进入待机模式II。
⑦在待机模式II下,CE置低,则进入待机模式I。
2.ShockBurstTM接收模式
①设置PRIM_RX为高,配置接收数据通道(EN_RXADDR)、自动应答寄存器(EN_AA)和有效数据宽度寄存器(RX_PW_PX)。
②置CE为高,启动接收模式。
③130us后,模块检测空中信号,
④接收到有效的数据包后(地址匹配、CRC检验正确),数据储存在RXFIFO中,RX_DR置高。
⑤如果启动了自动应答功能,则发送应答信号。
⑥MCU置CE为低,进入先机模式I。
⑦MCU可通过SPI接口将数据读出
⑧模块准备好进入发射模式或接收模式或待机模式。
九、RF通道频率
RF通道频率指的是nRF24L01所使用的中心频率,该频率范围从2.400GHz到2.525GHz,以1MHz区分一个频点,故有125个频点可使用。
由参数RF_CH确定,公式为:
F0=2400+RF_CH(MHz)
十、示例程序
接收模块与发射模块大部分程序代码相同,如下:
1.SPI命令和寄存器配置头文件API.h(根据第六、七两点编写)
#ifndef_BYTE_DEF_
#define_BYTE_DEF_
typedefunsignedcharBYTE;
#endif
//SPI命令
#defineREAD_REG0x00//读第0个寄存器
#defineWRITE_REG0x20//写第0个寄存器
#defineRD_RX_PLOAD0x61//在接收模式下使用,读有效数据
#defineWR_TX_PLOAD0xA0//在发送模式下使用,写有效数据
#defineFLUSH_TX0xE1//在发送模式下使用,清TXFIFO寄存器
#defineFLUSH_RX0xE2//在接收模式下使用,清RXFIFO寄存器
#defineREUSE_TX_PL0xE3//发送方使用,重复发送最后的数据
#defineNOP0xFF//空操作,用于读状态寄存器STATUS的值
//nRF24L01寄存器地址
#defineCONFIG0x00//配置寄存器,8bit
#defineEN_AA0x01//自动应答设置寄存器,8bit
#defineEN_RXADDR0x02//接收地址设置寄存器,8bit
#defineSETUP_AW0x03//地址宽度设置寄存器,8bit
#defineSETUP_RETR0x04//自动重复发送设置寄存器,8bit
#defineRF_CH0x05//RF通道寄存器,8bit
#defineRF_SETUP0x06//RF设置寄存器,8bit
#defineSTATUS0x07//状态寄存器,8bit
#defineOBSERVE_TX0x08//发送观测寄存器,8bit
#defineCD0x09//载波检测寄存器,8bit,
#defineRX_ADDR_P00x0A//接收地址数据通道0,40bit
#defineRX_ADDR_P10x0B
#defineRX_ADDR_P20x0C
#defineRX_ADDR_P30x0D
#defineRX_ADDR_P40x0E
#defineRX_ADDR_P50x0F
#defineTX_ADDR0x10//发送地址.发送方使用,40bit
#defineRX_PW_P00x11//通道0接收的有效数据字节长度(1-32字节),8bit
#defineRX_PW_P10x12
#defineRX_PW_P20x13
#defineRX_PW_P30x14
#defineRX_PW_P40x15
#defineRX_PW_P50x16
#defineFIFO_STATUS0x17//FIFO状态寄存器,8bit
2.SPI操作头文件(与单片机的接口设置在此头文件中)
#defineucharunsignedchar
#defineTX_ADR_WIDTH5//地址长度为5个字节
#defineTX_PLOAD_WIDTH20//数据长度为20个字节
ucharconstTX_ADDRESS[TX_ADR_WIDTH]={0xE7,0xE7,0xE7,0xE7,0xE7};
charrx_buf[TX_PLOAD_WIDTH];//接收缓冲区
ucharflag;//标志位
inttest[12];
#defineCEP0_0//芯片使能:
ChipEnable
#defineCSNP0_1//片选信号:
ChipSelectNot
#defineSCKP1_2//串行时钟信号:
SerialClock
#defineMOSIP0_3//主发从收:
MasterInSlaveOut
#defineMISOP0_4//主收从发:
MasterOutSlaveIn
#defineIRQP3_2//中断查询:
InterruptRequest
ucharbdatasta;
sbitRX_DR=sta^6;
sbitTX_DS=sta^5;
sbitMAX_RT=sta^4;
ucharSPI_RW(ucharbyte)//写一个字节到nRF24L01,并返回此时nRF24L01的状态及数据
{
ucharbit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++)//先写字节的高位,再写低位
{
MOSI=(byte&0x80);//MOSI取byte最高位
byte=(byte<<1);//byte左移一位
SCK=1;//SCK从高到低时开始写入
byte|=MISO;
//获取MI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nRF24L01 无线通信 模块 使用手册
![提示](https://static.bdocx.com/images/bang_tan.gif)