天线|RF射频
直播中

李雅文

7年用户 132经验值
私信 关注
[问答]

nRF24L01模块资料是什么

以前在STM32发过帖子,6个发射机发信号,用1个接收机收。

发现还有个别人问我通讯的问题,基本都是没有好好看手册。

硬件io脚



1GND
    2VCC

        3CE       4CSN


        5SCK     6MOSI


        7MISO   8IRQ



1      2电源3.3v

3使能   4SPI通讯使能

5时钟   6输入

7输出    8中断输出



注io脚电平:CE为高电平时模块工作,CSN低电平时有效,SCK上升沿有效,IRQ中断时低电平





读寄存器地址        AAAAA                                  //读地址时,直接输入寄存器地址就可以。     

写寄存器地址     1 AAAAA                                  //相当于二进制100000是0x20,比如要写0x00寄存器的时候,要写0x00+0x20等于的值



空操作                     0xff                                  //空操作,把要读的地址用spi写入后,需要写0xff,(写0xff的同时无线模块会输出该寄存器的设置)



TX缓存包写              0xA0               1位~32位          无线发送寄存器(写入数据可以发送出去)(直接写0xA0,uchar数据,uchar数据 。。。32字节)

RX缓存包读              0x61         1位~32位          无线接收寄存器 (低字节先输出)



TX缓存包清空           0xE1        写0xff                 清空无线接收数据(写地址0xe1,0xff)



RX缓存包清空           0xE2                         写0xff                 清空无线接收数据(写地址0xe2,0xff)                                       



TX数据重发              0xE3                        数据重发(写地址0xe3,0xff)



寄存器 0x00

7不用

6
接收完成中断使能(1关0开,中断产生时IRQ脚底电平)

5
发送完成中断使能

4
重发中断使能

3
校验使能

2
校验位选择(0:8位1:16位)

1
无线电源(1开,0关)

0
无线工作方式(1接收模式0发送模式)



寄存器 0x01

7不用

6不用

5
地址5自动应答(1开0关)

4
地址4自动应答(1开0关)

3
地址3自动应答(1开0关)

2
地址2自动应答(1开0关)

1
地址1自动应答(1开0关)

0
地址0自动应答(1开0关)



寄存器 0x02

7不用

6 不用

5地址5接收允许(1开,0关)

4地址4接收允许(1开,0关)

3地址3接收允许(1开,0关)

2地址2接收允许(1开,0关)

1地址1接收允许(1开,0关)

0地址0接收允许(1开,0关)



寄存器 0x03

7

6

5

4

3

2

10通讯地址字节总长度00:无效01:3字节10:4字节11:5字节)





寄存器 0x04                 

7654自动重发延时     0000:250微秒  0001:500微秒。。。。1111:4000微秒

3210自动重发次数     0000:关           0001:1次    0002:2次   1111:15次

                                                         

                                             



寄存器 0x05

7不用

6543210 000 0000频率最低。    111 1111频率最高2.525GHz





寄存器 0x06

7连续载波传输(1开,0关)

6

5速率250kbps(1开,0关) (和位3配合使用,位5位3 =  00:1Mbps    01:2Mbps     10:250kbps   11:不使用)

4频率受晶振控制(1开,0关)

3数据速率(0:1Mbps    1:2Mbps)(和位5配合使用,位5位3 =  00:1Mbps    01:2Mbps     10:250kbps   11:不使用)

21发射功率(00:-18dbm 01:-12dbm   10:-6dbm   11:0dbm)(注:我的模块11是20dpm哈哈哈哈哈哈哈哈。。。)



0噪声放大(信号增益)(1开0关)



寄存器 0x07  状态寄存器(写1清除对应的中断)

7

6           接收完成

5           发送完成

4           重发失败(超过设定的重发次数)

321
         000通道0,       001通道1,       002通道2,。。。。(查看是哪个地址收到数据)

0          TX FIFO满标志(发射缓存包满)



寄存器 0x08

7654
:数据丢包  计数器



3210
:重发数据  计数器





寄存器 0x09

7:

6:

5:

4:

3:

2:

1:                                    

0
:载波检测(检查附近有无该频率。可检测是否有其他发射器在使用这个频率。)



寄存器 0x0a

40:39:38.。。。。。。2:1:0      (地址0 注: 位39到位0可以随意改 )





寄存器 0x0b

40:39:38.。。。。。。2:1:0      (地址1,注: 位39到位0可以随意改)





寄存器 0x0c

40:39:38.。。。。。。2:1:0      (通道2的地址,注:位39到位8的值和地址1共用,位7到位0可以随意改)





寄存器 0x0d

40:39:38.。。。。。。2:1:0      (通道3的地址,注:位39到位8的值和地址1共用,位7到位0可以随意改)







寄存器 0x0e

40:39:38.。。。。。。2:1:0      (通道4的地址,注:位39到位8的值和地址1共用,位7到位0可以随意改)







寄存器 0x0f

40:39:38.。。。。。。2:1:0      (通道5的地址,注:位39到位8的值和地址1共用,位7到位0可以随意改)







寄存器 0x10

40:39:38.。。。。。。2:1:0      (发射地址,注: 位39到位0可以随意改)数值要与接收模块一致



寄存器 0x11

7

6

543210        地址0传输的有效字节(设置32就是只接收32字节)



寄存器 0x12

7

6

543210        地址1的有效字节

寄存器 0x13

7

6

543210        地址2的有效字节

寄存器 0x14

7

6

543210        地址3的有效字节

寄存器 0x15

7

6

543210        地址4的有效字节

寄存器 0x16

7

6

543210        地址5的有效字节





寄存器 0x17  缓存包状态寄存器(只读)

7

6重发状态

5TX寄存器满(1满)

4TX寄存器空(1空)

3

2

1RX寄存器满(1满)

0RX寄存器空(1空)



寄存器 0x1c 启用动态载荷长度

7

6

5 通道5开

4 通道4开

3 通道3开

2 通道2开

1 通道1开

0 通道0开



寄存器 0x1d

7

6

5

4

3

2 使能动态载荷(1开)

1 使能载荷应答(1开)

0 使能发送载荷但不应答(1开)




寄存器0xA0 TX缓存包

位32~~~~~~~位0      (32字节)



寄存器0x61 RX缓存包

位32~~~~~~~位0      (32字节)


nRF2401编程指南 (1).pdf (233.07 KB )
NRF24L01_中文.pdf (890.66 KB )

回帖(12)

张璨

2020-4-26 12:01:03
不错,谢谢分享.
举报

闫雪花

2020-4-26 12:12:14
所谓的多从机发射,一主机接受,实际上不可能在一个时刻了同时接受6个发射机的数据。

这个接收主机只是开了了6个通道允许接受来自6个发射机的信息,但每个时刻只能接收一个通道的信息,至于优先级就无从可知了。
举报

彭铮

2020-4-26 12:26:34

正确,但手册上说应答模式下,数据不大会碰撞。基本不需要错开发射时间。可以检测CD寄存器0x09如果读到的是1才说明数据拥堵,需要改频率。数据字节越短,通讯时间也越短,几百微秒内完成。大数据,或250kps才会大于500us。
举报

俞舟群

2020-4-26 12:34:23
大神,啥时也弄下cc2540啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分