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寄存器。接收模式下用。 |
1 |
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