nRF24L01无线通信模块使用手册.docx

上传人:b****8 文档编号:30700144 上传时间:2023-08-19 格式:DOCX 页数:34 大小:199.08KB
下载 相关 举报
nRF24L01无线通信模块使用手册.docx_第1页
第1页 / 共34页
nRF24L01无线通信模块使用手册.docx_第2页
第2页 / 共34页
nRF24L01无线通信模块使用手册.docx_第3页
第3页 / 共34页
nRF24L01无线通信模块使用手册.docx_第4页
第4页 / 共34页
nRF24L01无线通信模块使用手册.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

nRF24L01无线通信模块使用手册.docx

《nRF24L01无线通信模块使用手册.docx》由会员分享,可在线阅读,更多相关《nRF24L01无线通信模块使用手册.docx(34页珍藏版)》请在冰豆网上搜索。

nRF24L01无线通信模块使用手册.docx

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=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1