可以设置接收发送模式下地址的宽度,默认使用5字节的宽度。
2.2.5自动重发寄存器(地址:04)
nRF24L01配置为Enhanced ShockBurst 发送模式下时,自动重发功能是针对自动应答系统的发送方。在每次发送结束后系统都会进入接收模式并在设定的时间范围内等待应答信号,如果没有收到应答信号,则系统返回到发送模式并重发数据直到收到确认信号或重发次数超过设定值(达到最大的重发次数。
2.2.6射频频率设置寄存器(地址:05)
频率计算公式:2400+RF_CH(MHz),即NRF可设置的频率为2400~2525(MHZ)之间
2.2.7射频配置寄存器(地址:06)
2.2.8状态寄存器(地址:07)
nRF24L01的中断引脚(IRQ)为低电平触发,当状态寄存器中TX_DS、RX_DR、MAX_RT 为高时触发中断。当MCU给中断源写‘1’时,中断引脚被禁止。可屏蔽中断可以被IRQ中断屏蔽。通过设置可屏蔽中断位为高,则中断响应被禁止。默认状态下所有的中断源是被禁止的。
2.2.9数据通道接收地址配置寄存器(地址0A-0F)
注意,数据通道2~数据通道5的地址高四字节,与数据通道1地址的高四字节相同。
2.2.10发送地址配置寄存器(地址10)
2.2.11接收通道0有效数据宽度配置寄存器(地址11)
2.2.12FIFO状态寄存器(地址17)
三、NRF24L01驱动程序
根据NRF官方手册的寄存器操作,这里编写了基于STM32 HAL库的驱动程序,.c文件和.h文件如下。代码里有详细的函数注释
//NRF24L01 驱动函数
#include "NRF24L01.h"
#include "main.h"
#include "spi.h"
#include "stdio.h"
#include "string.h"
unsigned char INIT_ADDR[5]= {0x00,0x1A,0xB1,0xB1,0x01}; //节点地址
void delay\_us(uint32\_t n)
{
unsigned char i;
while(n--)
{
i = 8;
while(i--);
}
}
//初始化24L01的IO口
void NRF24L01\_Init(void)
{
Clr_NRF24L01_CE; // chip enable
Set_NRF24L01_CSN; // Spi disable
delay\_us(100);
}
//上电检测NRF24L01是否在位
//写5个数据然后再读回来进行比较,
//相同时返回值:0,表示在位;否则返回1,表示不在位
unsigned char NRF24L01\_Check(void)
{
unsigned char buf[5]= {0XA5,0XA5,0XA5,0XA5,0XA5};
unsigned char buf1[5];
unsigned char i;
NRF24L01\_Write\_Buf(SPI_WRITE_REG+TX_ADDR,buf,5);//写入5