Enhanced ShockBurstTM 发送流程
- 把地址和要发送的数据按时序送入nRF24l01
- 配置config寄存器,使之进入发送模式
- 把CE置高(至少10us),激发Enhanced ShockBurstTM发射
Enhanced ShockBurstTM 发送模式初始化流程
- 写Tx节点地址 TX_ADDR
- 写Rx节点的地址(使能
auto ack
) RX_ADDR_P0
- 使能
auto ack
EN_AA
- 使能PIPE0 EN_RXADDR
- 配置自动重发次数 SETUP_RETR
- 选择通信频率 RF_CH (2400 + RF_CH MHz) (0~125)
- 配置发射参数(低噪方法增益、发射功率、无线速率) RF_SETUP
- 配置24l01的基本参数以及切换工作模式 CONFIG
Enhanced ShockBurstTM 接收流程
- 配置接收地址和要接收的数据包大小
- 配置CONFIG寄存器,使之进入接收模式,置高CE
- 130us后,nrf24l01进入监视状态,等待接收数据包
- 当接收到正确的数据包,nrf24l01自动去除字头、地址和CRC校验码
- nrf24l01通过把STATUS寄存器的RX_DR置位(引起微控制器中断)通知微控制器
- 微控制器把数据从FIFO读出(0x61指令)
- 数据读取完毕后,可以清楚STATUS寄存器。nrf24l01进入四种主要模式之一
Enhanced ShockBurstTM 接收模式初始化
- 写Rx节点的地址 RX_ADDR_P0
- 使能
auto ack
EN_AA
- 使能PIPE0 EN_RX_ADDR
- 选择通信频率 RF_CH
- 选择通道0有效数据宽度 RX_PW_P0
- 配置发射参数(低噪放大增益、发射功率、无线速率) RF_SETUP
- 配置24l01的基本参数以切换工作模式 CONFIG
SPI指令
指令名称 |
指令格式 |
操作 |
R_REGISTER |
000A AAAA |
读寄存器。A AAAA为要读取的寄存器地址 |
W_REGISTER |
001A AAAA |
写寄存器。 |
R_RX_PAYLOAD |
0110 0001 |
读RX有效数据,1~32字节。读取操作从字节0开始,当读RX有效数据完成后,FIFO寄存器中的使有效数据将被清除。接收模式下使用 |
W_TX_PAYLOAD |
1010 0000 |
写有效数据,1~32字节。写操作从字节0开始。发送模式下用。 |
FLUSH_TX |
1110 0001 |
清除TX FIFO寄存器。发送模式下用。 |
FLUSH_RX |
1110 0010 |
清除RX FIFO寄存器。接收模式下用。 |
#define NRF_READ_REG 0x00
#define NRF_WRITE_REG 0x20
#define RD_RX_PLOAD 0x61
#define WR_TX_PLOAD 0xA0
#define FLUSH_TX 0xE1
#define FLUSH_RX 0xE2
#define NOP 0xFF
CONFIG寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x00 |
CONFIG |
|
|
|
配置寄存器 |
|
Reserved |
7 |
0 |
R/W |
保留位 |
|
MASK_RX_DR |
6 |
0 |
R/W |
可屏蔽中断 RX_RD<br /> 1: IRQ引脚不输出RX_RD中断<br />0: RX_RD中断时,IRQ输出低电平 |
|
MASK_TX_DS |
5 |
0 |
R/W |
可屏蔽中断 TX_DS<br /> 1: IRQ引脚不输出TX_DS中断<br />0: RX_DS中断时,IRQ输出低电平 |
|
MASK_MAX_RT |
4 |
0 |
R/W |
可屏蔽中断 MAX_RT<br />1: IRQ引脚不输出MAX_RT中断<br />0: MAX_RT中断时,IRQ输出低电平 |
|
EN_CRC |
3 |
1 |
R/W |
CRC使能。如果EN_AA中任意一位置高,则EN_CRC强迫为高 |
|
CRCO |
2 |
0 |
R/W |
CRC模式。<br />0: 8位CRC<br />1: 16位CRC |
|
PWR_UP |
1 |
0 |
R/W |
1: 上电<br />0: 掉电 |
|
PRIM_RX |
0 |
0 |
R/W |
1: 接收模式<br />0: 发送模式 |
自动应答使能寄存器 EN_AA
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x01 |
EN_AA |
|
|
|
自动应答使能寄存器<br /> 同时可以使能Enhanced模式
|
|
Reserved |
7~6 |
0 |
R/W |
保留位 |
|
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,自动应答允许 |
RX地址使能寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x02 |
EN_RX_ADDR |
|
|
|
RX地址使能寄存器 |
|
Reserved |
7~6 |
0 |
R/W |
保留位 |
|
ERX_P5 |
5 |
1 |
R/W |
数据接收通道5使能 |
|
ERX_P4 |
4 |
1 |
R/W |
数据接收通道4使能 |
|
ERX_P3 |
3 |
1 |
R/W |
数据接收通道3使能 |
|
ERX_P2 |
2 |
1 |
R/W |
数据接收通道2使能 |
|
ERX_P1 |
1 |
1 |
R/W |
数据接收通道1使能 |
|
ERX_P0 |
0 |
1 |
R/W |
数据接收通道0使能 |
自动重发设置寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x04 |
SETUP_RETR |
|
|
|
自动重发设置寄存器 |
|
ARD |
7~4 |
0000 |
R/W |
自动重发延时<br />0000~1111 -> 85us+250*(ARD+1)us |
|
ARC |
3~0 |
0000 |
R/W |
自动重发次数<br />0000~1111 -> 0代表禁止 |
射频频率设置寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x05 |
RF_CH |
|
|
|
射频频率设置寄存器 |
|
Reserved |
7 |
0 |
R/W |
保留位 |
|
RF_CH |
6~0 |
000 0010 |
R/W |
0~125,设置nrf24l01的射频频率 |
射频配置寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x06 |
RF_SETUP |
|
|
|
射频配置寄存器 |
|
COUNT_WAVE |
7 |
0 |
R/W |
使能连续载波发送 |
|
Reserved |
6 |
0 |
R/W |
保留位 |
|
RF_DR_LOW |
5 |
0 |
R/W |
射频数据速率设置低位<br />1: 250Kbps |
|
PLL_LOCK |
4 |
0 |
R/W |
PLL_LOCK允许,仅用于测试模式 |
|
RF_DR_HIGH |
3 |
0 |
R/W |
射频数据速率设置高位,和低位配置设置速率[ RF_DR_HIGH RF_DR_LOW ]<br />00: 1Mbps <br />10: 2Mbps <br />01: 250Kbps <br />11: 保留 |
|
RF_PWR |
2~1 |
11 |
R/W |
设置射频输出功率<br />00: -18dBm <br />01: -12dBm <br />10: -6dBm <br />11: 0bBm |
|
Obsolete |
0 |
1 |
R/W |
- |
状态寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x07 |
STATUS |
|
|
|
状态寄存器 |
|
Reserved |
7 |
0 |
R/W |
保留位 |
|
RX_DR |
6 |
0 |
R/W |
数据接收标志,收到数据后置一。写1清0 |
|
TX_DS |
5 |
0 |
R/W |
数据发送完成标志,如果工作在自动应答模式,则必须收到ACK才会置1。写1清0 |
|
MAX_RT |
4 |
0 |
R/W |
达到最大重发次数。写1清0 |
|
RX_P_NO |
3~1 |
111 |
R/W |
接收数据通道<br />000~111: 数据通道号 <br />110: 未使用 <br />111: RX_FIFO寄存器空 |
|
TX_FULL |
0 |
1 |
R/W |
TX_FIFO寄存器满标志<br />1: 满 <br />0: 未满 |
数据通道接收地址寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x0A |
RX_ADDR_P0 |
|
|
|
数据通道0接收地址寄存器 |
|
RX_ADDR_P0 |
39~0 |
0xe7e7e7e7e7 |
R/W |
数据通道0接收地址寄存器,最大长度5个字节<br />由SETUP_AW(0x03)寄存器控制地址长度(默认是5个字节) |
类似的,还有通道1~5接收地址 设置寄存器: RX_ARRD_P1~5。
不过P1~P5共用32位高位地址,由P1设置,
P2~P4只可以设置8位地址(低8位)。
发送地址设置寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x10 |
TX_ADDR |
|
|
|
发送地址设置寄存器 |
|
TX_ADDR |
39~0 |
0xe7e7e7e7e7 |
R/W |
发送地址设置(先写低字节)。在Enhanced模式下,RX_ADDR_P0的地址应与此地址相同 |
接收通道有效数据宽度设置寄存器
地址 |
参数 |
位 |
复位值 |
类型 |
描述 |
0x11 |
RX_PW_P0 |
|
|
|
接收通道0有效数据宽度设置寄存器 |
|
Reserved |
7~6 |
0 |
R/W |
保留位 |
|
RX_PW_P0 |
5~0 |
0 |
R/W |
数据通道0接收区有效数据宽度<br />0: 非法 <br />1~32: 表示1~32字节 |
类似的还有通道1~5有效数据宽度设置寄存器: RX_PW_P1~5,
对应通道1~5的接收有效数据宽度,方法同RX_PW_P0