2.4G NRF24L01无线模块总结

前言

  最近野火STM32论坛(www.firebbs.cn)发起了一个开源平衡车的项目,于是就跟着大家一起动手做起了开源平衡车,其中就用到了2.4G NRF24L01无线模块。通过对NRF24L01中英文手册的参考,对其做如下总结,将主要的知识点以博客的形式呈现出来。如果想要对NRF24L01进行更深入的理解,还请以中英文手册为主(本博文内容都能在中英文手册中找到)。

一、概述

   NRF24L01是一款工作在2.4G~2.5GHz世界通用的ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型ShockBurst模式控制器、功率放大器、晶体振荡器、调制器、解调器。

二、基本功能

  1)真正的GFSK单片式收发芯片
  2)增强型ShockBurst功能
  3)地址及CRC校验功能
  4)无线速率:1或2Mbps
  5)SPI接口速率:0~8Mbps
  6)125个可选的工作频道
  7)低工作电压:1.9~3.6V

三、模块引脚说明

  下面以深圳云佳科技有限公司的NRF24L01模块为例,对2.4G NRF24L01模块引脚进行说明。模块如下图所示。
这里写图片描述
  GND——GND
  VCC——VCC
  CE——数字输入,RX或TX模式选择
  CSN——数字输入,SPI片选信号
  SCK——数字输入,SPI时钟
  MOSI——数字输入,从SPI数据输入脚
  MISO——数字输出,从SPI数据输出脚
  IRQ——数字输出,可屏蔽中断脚

四、NRF24L01的SPI命令宏定义

    #define NRF_READ_REG        0X00    //读配置寄存器
    #define NRF_WRITE_REG       0X20    //写配置寄存器
    #define RD_RX_PLOAD         0X61    //读RX有效数据:1~32个字节
    #define WR_TX_PLOAD         0XA0    //写TX有效数据:1~32个字节
    #define FLUSH_TX            0XE1    //清除TX FIFO寄存器,发射模式下
    #define FLUSH_RX            0XE2    //清除RX FIFO寄存器,接收模式下
    #define REUSE_TX_PL         0XE3    //重新使用上一包有效数据
    #define NOP                 0xFF    //空操作

五、NRF24L01相关寄存器地址宏定义

    #define CONFIG          0X00     //配置寄存器
    #define EN_AA           0X01     //使能自动应答功能
    #define EN_RXADDR       0X02     //接收地址允许
    #define SETUP_AW        0X03     //设置地址宽度
    #define SETUP_RETR      0X04     //建立自动重发
    #define RF_CH           0X05     //射频通道
    #define RF_SETUP        0X06     //射频寄存器
    #define STATUS          0X07     //状态寄存器
    #define OBSERVE_TX      0X08     //发送检测寄存器
    #define CD              0X09     //载波检测
    #define RX_ADDR_P0      0X0A     //数据通道0接收地址
    #define RX_ADDR_P1      0X0B     //数据通道1接收地址
    #define RX_ADDR_P2      0X0C     //数据通道2接收地址
    #define RX_ADDR_P3      0X0D     //数据通道3接收地址
    #define RX_ADDR_P4      0X0E     //数据通道4接收地址
    #define RX_ADDR_P5      0X0F     //数据通道5接收地址
    #define TX_ADDR         0X10     //发送地址
    #define RX_PW_P0        0X11     //接收数据通道0有效数据宽度
    #define RX_PW_P1        0X12     //接收数据通道1有效数据宽度
    #define RX_PW_P2        0X13     //接收数据通道2有效数据宽度
    #define RX_PW_P3        0X14     //接收数据通道3有效数据宽度
    #define RX_PW_P4        0X15     //接收数据通道4有效数据宽度
    #define RX_PW_P5        0X16     //接收数据通道5有效数据宽度
    #define FIFO_STATUS     0X17     //FIFO 状态寄存器

六、NRF24L01的工作模式

6.1、NRF24L01模式配置

这里写图片描述

6.2、发射模式函数配置
void NRF_TX_Mode(void)
    {  
        NRF_CE_LOW();       

         NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);    
         NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);  
         NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01);       
         NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01); 
         NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);
         NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANNEL);       
         NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f);  
         NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0e);  

        NRF_CE_HIGH();
        delay_us(130); 
    }
6.3、接收模式函数配置
void NRF_RX_Mode(void)
    {
        NRF_CE_LOW();

        NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);
        NRF_WriteReg(NRF_WRITE_REG+EN_AA,0X01);
        NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0X01);
        NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANNEL);
        NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);
        NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f);
        NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0f);

        NRF_CE_HIGH();
    }
6.4、发射接收模式说明

  1)在发射模式下,CE至少要拉高10us。
  2)NRF24L01在接收模式下可以接收6路不同通道的数据,每一个数据通道使用不通的地址,但是共用相同的频道。
  3)数据通道0是唯一一个可以配置为40位自身地址的数据通道,1~5数据通道都为8位自身地址和32位共用地址。
  4)所有的数据通道都可以设置为增强型ShockBurst模式。

七、NRF24L01的打包格式

7.1、增强型ShockBurst模式下的数据包形式

前导码 | 地址(3~5字节) | 9位(标志位) | 数据(1~32字节) | CRC校验(0/1/2字节)

7.2、ShockBurst模式下与NRF2401等相兼容的数据包形式

前导码 | 地址(3~5字节) | 数据(1~32字节) | CRC校验(0/1/2字节)

7.3、数据包说明

  前导码:在发送模式下加入,接收模式下去除,用来检测0和1。
  地址:1)地址内容为接收机地址
     2)地址宽度可以是3、4或5字节宽度
     3)地址可以对接收通道和发射通道分别进行配置
     4)从接收的数据包中自动去除地址
  标志位:1)PID,数据包识别。其中两位是用来每当接收到新的数据包后加一。
      2)七位保留,用作将来与其他产品相兼容
      3)当NRF24L01与NRF2401/NRF24E1通讯时不起作用
  数据:1~32字节宽度
  CRC:CRC校验是可选的

八、小结

  1、对于NRF24L01,在使用的时候要注意收发双方的频道要相同(NRF24L01总共有40个可选频道)
  2、注意寄存器的配置
  3、地址要统一

  • 12
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值