nRF24L01详解Word文件下载.docx
《nRF24L01详解Word文件下载.docx》由会员分享,可在线阅读,更多相关《nRF24L01详解Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
CE
协同nRF24L01状态寄存器共同控制芯片模式
2
CSN
片选线,低电平有效
3
SCK
SPI时钟线
4
MOSI
SPI,数据输入线
5
MISO
SPI,数据输出线
6
IRQ
可屏蔽中断引脚
7
VDD
电源(+3V)
8
VSS
电源(0V)
9
XC2
晶体振荡器2脚(输出)
10
XC1
晶体振荡器1脚/外部时钟输入脚
11
VDD_PA
给RF功率放大器提供1.8V电源
12
ANT1
天线接口1
13
ANT2
天线接口2
14
接地(0V)
15
16
IREF
参考电流(模拟输入)
17
18
19
DVDD
去耦电路电源正极端(电源输出)
20
1.3、寄存器地址及一些重要寄存器详细介绍
(1)寄存器地址
地址
名字及其描述
00
CONFIG(配置寄存器,配置nRF24L01一些工作方式)
01
EN_AA(使能自动应答功能)
02
EN_RXADDR(使能接收数据通道0-5地址)
03
SETUP_AW(设置地址宽度)
04
SETUP_RETR(设置自动重发等信息)
05
RF_CH(射频通道,设置nRF24L01工作通道频率
)
06
RF_SETUP(射频寄存器,设置数据传输率、发射功率、低噪声增益等)
07
STATUS状态寄存器(反应芯片当前工作的各种状态)
08
OBSERVE_TX(发送检测寄存器)
09
CD(载波检测)
0A
RX_ADDR_P0(数据通道0接收地址)
0B
RX_ADDR_P1(数据通道1接收地址)
0C
RX_ADDR_P2(数据通道2接收地址)
0D
RX_ADDR_P3(数据通道3接收地址)
0E
RX_ADDR_P4(数据通道4接收地址)
0F
RX_ADDR_P5(数据通道5接收地址)
TX_ADDR(发送地址,先写低字节)
RX_PW_P0(数据通道0接收数据长度)
RX_PW_P1(数据通道1接收数据长度)
RX_PW_P2(数据通道2接收数据长度)
RX_PW_P3(数据通道3接收数据长度)
RX_PW_P4(数据通道4接收数据长度)
RX_PW_P5(数据通道5接收数据长度)
FIFO_STATUS(FIFO
状态寄存器,TXFIFO与RXFIFO空满状态)
(2)状态寄存器
寄存器地址:
07名称:
STATUS
D7
D6
D5
D4
D3
D2
D1
D0
保留
RX_DR
TX_DS
MAX_RT
RX_P_NO
TX_FULL
·
RX_DR:
接收数据中断位。
芯片接收到有效数据时置1,写“1”清楚中断。
复位值为0。
TX_DS:
数据发送成功中断位。
芯片数据发送成功后中断置1。
但如果nRF24L01工作在自动应答模式下,只有当接收到应答信号才置1,写“1”清除中断。
MAX_RT:
达到最多次重发中断位。
写“1”清除中断,如果MAX_RT中断产生则必须清除后芯片才能进行通讯。
RX_P_NO:
接收数据通道号位。
000-101:
数据通道号,110:
未使用,111:
RXFIFO寄存器为空。
复位值为111。
TX_FULL:
TXFIFO寄存器满标志。
1:
TXFIFO寄存器满,0:
TXFIFO未满,有用空间。
(3)配置寄存器
00名称:
CONFIG
MASK_RX_DR
MASK_TX_DS
MASK_MAX_RT
EN_CRC
CRC0
PWR_UP
PRIM_RX
MASK_RX_DR:
可屏蔽中断RX_RD位。
MASK_RX_DR=1,IRQ引脚不显示RX_DR中断。
MASK_RX_DR=0,RX_DR中断引起IRQ引脚拉低。
MASK_TX_DS:
可屏蔽中断TX_DS位。
MASK_TX_DS=1,IRQ引脚不显示TX_DS中断。
MASK_TX_DS=0,IRQ引脚显示TX_DS中断。
MASK_MAX_RT:
可屏蔽中断MAX_RT位。
MASK_MAX_RT=1,IRQ引脚不显示MAX_RT中断。
MASK_MAX_RT=0,IRQ引脚显示MAX_RT中断。
EN_CRC:
CRC使能位。
如果EN_AA中任意一位为高,则EN_CRC强迫为高。
复位值为1。
CRC0:
CRC模式选择位。
0:
8位CRC校验,1:
16位CRC校验。
PWR_UP:
nRF24L01上电掉电模式设置位。
上电,0:
掉电。
PRIM_RX:
nRF24L01接收、发射模式设置位。
接收模式,0:
发射模式。
1.4、nRF24L01功能描述
(1)nRF24L01主要的工作模式设置
模式
FIFO寄存器状态
接收模式
×
发送模式
数据存放在TXFIFO中
1跳变0
数据发送
待机模式Ⅱ
TXFIFO为空
待机模式Ⅰ
待机
掉电模式
芯片不工作
待机模式:
待机模式I在保证快速启动的同时减少系统平均消耗电流。
在待机模式I下,晶振正常工作。
在待机模式II下,部分时钟缓冲器处在工作模式。
当发送端TX
FIFO寄存器为空并且CE为高电平时进入待机模式II。
在待机模式期间,寄存器配置字内容保持不变。
掉电模式:
在掉电模式下,nRF24L01各功能关闭,保持电流消耗最小。
进入掉电模式后,nRF24L01停止工作,但寄存器内容保持不变。
掉电模式由寄存器中PWR_UP位来控制。
(2)增强型的ShockBurstTM收发模式
增强型ShockBurstTM模式可以使得双向链接协议执行起来更为容易、有效。
典型的双向链接为:
发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失。
一旦数据丢失,则通过重新发送功能将丢失的数据恢复。
增强型的ShockBurstTM模式可以同时控制应答及重发功能而无需增加MCU工作量。
nRF24L01在接收模式下可以接收6路不同通道的数据。
每一个数据通道使用不同的地址,但是共用相同的频道。
也就是说6个不同的nRF24L01设置为发送模式后可以与同一个设置为接收模式的nRF24L01进行通讯,而设置为接收模式的nRF24L01可以对这6个发射端进行识别。
数据通道0是唯一的一个可以配置为40位自身地址的数据通。
道1-5数据通道都为8位自身地址和32位公用地址。
所有的数据通道都可以设置为增强型ShockBurst模式。
nRF24L01在确认收到数据后记录地址,并以此地址为目标地址发送应答信号。
在发送端,数据通道0被用做接收应答信号。
因此,数据通道0的接收地址要与发送端地址相等以确保接收到正确的应答信号。
nRF24L01配置为增强型的ShockBurstTM发送模式下,时只要MCU有数据要发送,nRF24L01就会启动ShockBurstTM模式来发送数据。
在发送完数据后nRF24L01转到接收模式并等待终端的应答信号。
如果没有收到应答信号,nRF24L01将重发相同的数据包,直到收到应答信号或重发次数超过SETUP_RETR_ARC寄存器中设置的值为止,如果重发次数超过了设定值则产生MAX_RT中断。
只要收到确认信号,nRF24L01就认为最后一包数据已经发送成功(接收方已经收到数据),把TX
FIFO中的数据清除掉并产生TX_DS中断IRQ引脚置高)。
增强型ShockBurstTM模式下数据包的格式
前导码
TX_ADDR(3-5字节)
9位(标志位)
DATA(1-32字节)
CRC校验
增强型ShockBurstTM发送模式:
1.配置寄存器位PRIM_RX为低
2.当MCU有数据要发送时,接收节点地址(TX_ADDR)和有效数据(TX_PLD)通过SPI接口写入nRF24L01。
发送数据的长度以字节计数从MCU写入TXFIFO。
当CSN为低时数据被不断的写入。
发送端发送完数据后,将通道0设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同
3.设置CE为高,启动发射。
CE高电平持续时间最小为10us。
4.nRF24L01ShockBurstTM模式:
无线系统上电
启动内部16MHz时钟
无线发送数据打包(见数据包描述)
高速发送数据(由MCU设定为1Mbps或2Mbps)
5.如果启动了自动应答模式(自动重发计数器不等于0,ENAA_P0=1),无线芯片立即进入接收模式。
如果在有效应答时间范围内收到应答信号,则认为数据成功发送到了接收端,此时状态寄存器的TX_DS位置高并把数据从TXFIFO中清除掉。
如果在设定时间范围内没有接收到应答信号,则重新发送数据。
如果自动重发计数器(ARC_CNT)溢出(超过了编程设定的值),则状态寄存器的MAX_RT位置高。
不清除TXFIFO中的数据。
当MAX_RT或TX_DS为高电平时IRQ引脚产生中断。
IRQ中断通过写状态寄存器来复位。
如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX中断清除之前不会重发数据包。
数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT中断后加一。
也就是说