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

上传人:b****1 文档编号:933270 上传时间:2023-04-30 格式:DOCX 页数:34 大小:197.84KB
下载 相关 举报
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_第6页
第6页 / 共34页
nRF24L01无线通信模块使用手册.docx_第7页
第7页 / 共34页
nRF24L01无线通信模块使用手册.docx_第8页
第8页 / 共34页
nRF24L01无线通信模块使用手册.docx_第9页
第9页 / 共34页
nRF24L01无线通信模块使用手册.docx_第10页
第10页 / 共34页
nRF24L01无线通信模块使用手册.docx_第11页
第11页 / 共34页
nRF24L01无线通信模块使用手册.docx_第12页
第12页 / 共34页
nRF24L01无线通信模块使用手册.docx_第13页
第13页 / 共34页
nRF24L01无线通信模块使用手册.docx_第14页
第14页 / 共34页
nRF24L01无线通信模块使用手册.docx_第15页
第15页 / 共34页
nRF24L01无线通信模块使用手册.docx_第16页
第16页 / 共34页
nRF24L01无线通信模块使用手册.docx_第17页
第17页 / 共34页
nRF24L01无线通信模块使用手册.docx_第18页
第18页 / 共34页
nRF24L01无线通信模块使用手册.docx_第19页
第19页 / 共34页
nRF24L01无线通信模块使用手册.docx_第20页
第20页 / 共34页
亲,该文档总共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〕

mA

电流消耗〔接收模式,2Mbps〕

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〕增强其驱动能力〔如下列图:

〕。

假设使用其它单片机与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命令和存放器配置头文件〔根据第六、七两点编写〕

#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左移一位

S

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2