1. nRF24l01使用说明

Enhanced ShockBurstTM 发送流程

  1. 把地址和要发送的数据按时序送入nRF24l01
  2. 配置config寄存器,使之进入发送模式
  3. 把CE置高(至少10us),激发Enhanced ShockBurstTM发射

Enhanced ShockBurstTM 发送模式初始化流程

  1. 写Tx节点地址 TX_ADDR
  2. 写Rx节点的地址(使能auto ack) RX_ADDR_P0
  3. 使能auto ack EN_AA
  4. 使能PIPE0 EN_RXADDR
  5. 配置自动重发次数 SETUP_RETR
  6. 选择通信频率 RF_CH (2400 + RF_CH MHz) (0~125)
  7. 配置发射参数(低噪方法增益、发射功率、无线速率) RF_SETUP
  8. 配置24l01的基本参数以及切换工作模式 CONFIG

Enhanced ShockBurstTM 接收流程

  1. 配置接收地址和要接收的数据包大小
  2. 配置CONFIG寄存器,使之进入接收模式,置高CE
  3. 130us后,nrf24l01进入监视状态,等待接收数据包
  4. 当接收到正确的数据包,nrf24l01自动去除字头、地址和CRC校验码
  5. nrf24l01通过把STATUS寄存器的RX_DR置位(引起微控制器中断)通知微控制器
  6. 微控制器把数据从FIFO读出(0x61指令)
  7. 数据读取完毕后,可以清楚STATUS寄存器。nrf24l01进入四种主要模式之一

Enhanced ShockBurstTM 接收模式初始化

  1. 写Rx节点的地址 RX_ADDR_P0
  2. 使能auto ack EN_AA
  3. 使能PIPE0 EN_RX_ADDR
  4. 选择通信频率 RF_CH
  5. 选择通道0有效数据宽度 RX_PW_P0
  6. 配置发射参数(低噪放大增益、发射功率、无线速率) RF_SETUP
  7. 配置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寄存器。接收模式下用。
1
2
3
4
5
6
7
#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
1: IRQ引脚不输出RX_RD中断
0: RX_RD中断时,IRQ输出低电平
MASK_TX_DS 5 0 R/W 可屏蔽中断 TX_DS
1: IRQ引脚不输出TX_DS中断
0: RX_DS中断时,IRQ输出低电平
MASK_MAX_RT 4 0 R/W 可屏蔽中断 MAX_RT
1: IRQ引脚不输出MAX_RT中断
0: MAX_RT中断时,IRQ输出低电平
EN_CRC 3 1 R/W CRC使能。如果EN_AA中任意一位置高,则EN_CRC强迫为高
CRCO 2 0 R/W CRC模式。
0: 8位CRC
1: 16位CRC
PWR_UP 1 0 R/W 1: 上电
0: 掉电
PRIM_RX 0 0 R/W 1: 接收模式
0: 发送模式

自动应答使能寄存器 EN_AA

地址 参数 复位值 类型 描述
0x01 EN_AA 自动应答使能寄存器
同时可以使能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 自动重发延时
0000~1111 -> 85us+250*(ARD+1)us
ARC 3~0 0000 R/W 自动重发次数
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 射频数据速率设置低位
1: 250Kbps
PLL_LOCK 4 0 R/W PLL_LOCK允许,仅用于测试模式
RF_DR_HIGH 3 0 R/W 射频数据速率设置高位,和低位配置设置速率[ RF_DR_HIGH RF_DR_LOW ]
00: 1Mbps
10: 2Mbps
01: 250Kbps
11: 保留
RF_PWR 2~1 11 R/W 设置射频输出功率
00: -18dBm
01: -12dBm
10: -6dBm
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 接收数据通道
000~111: 数据通道号
110: 未使用
111: RX_FIFO寄存器空
TX_FULL 0 1 R/W TX_FIFO寄存器满标志
1: 满
0: 未满

数据通道接收地址寄存器

地址 参数 复位值 类型 描述
0x0A RX_ADDR_P0 数据通道0接收地址寄存器
RX_ADDR_P0 39~0 0xe7e7e7e7e7 R/W 数据通道0接收地址寄存器,最大长度5个字节
由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接收区有效数据宽度
0: 非法
1~32: 表示1~32字节

类似的还有通道1~5有效数据宽度设置寄存器: RX_PW_P1~5, 对应通道1~5的接收有效数据宽度,方法同RX_PW_P0