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、地址要统一
2.4G NRF24L01无线模块总结相关推荐
- STM32系列(HAL库)——F103C8T6通过NRF24L01(2.4G)无线模块进行双机通信
本文参考:STM32L051C8T6 HAL库 + nRF24L01 收发案例(硬件SPI通讯) 1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件 ...
- STM32CubeMX系列08——SPI通信(W25Q64、NRF24L01无线模块)
文章目录 1. 准备工作 1.1. 所用硬件 1.2. SPI 简介 1.3. 生成工程 1.3.1. 创建工程选择主控 1.3.2. 系统配置 1.3.3. 配置工程目录 2. 读写EEPROM实验 ...
- NRF24L01无线模块设置发射接受模式方法
NRF24L01无线模块设置发射接受模式 NRF24L01无线模块通过设置CONFIG寄存器的最后一位,实现发射和接收模式的设定. CONFIG寄存器的内容: 具体程序如下: /函数:void Set ...
- Arduino开发遥控小车(三)基于nRF24L01无线模块实现舵机转向和直流电机调速
Arduino开发遥控小车(三)基于nRF24L01无线模块实现舵机转向和直流电机调速 前面和大家分享了通过nRF24L01无线模块实现数据发送和接收的基本方法,本次继续和大家分享最终实现遥控小车转向 ...
- nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)
俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经 ...
- STM32控制NRF24L01无线模块进行通信
一.NRF2401无线模块 1.模块介绍 功能介绍 (1)2.4Ghz 全球开放ISM 频段免许可证使 2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合 (3)126 ...
- 基于python的modbus协议编程_IM5D.6B利用(2.4G)无线模块实现远程控制(基于智能编程任务赛,2019版)...
点击「蓝色微信名」关注更多比赛信息 引 言 在<中国儿童青少年威盛中国芯计算机表演赛>从第十七届活动开始,搭建了一个全新的互联网技术支持平台,实现了网络在线比赛,在全国建立了三十个省级赛 ...
- c语言射频接受程序,NRF24L01无线模块C语言程序
闭门造车第三十五天. 所有零件在三号到我手中,下午组装起来,架上我古董般的51开发板,拉出我最熟悉的红外遥控程序,第二天便灵动了起来,之后陆陆续续做了什么?太琐碎理不顺了似乎.光电传感器做了两个小板, ...
- NRF24l01无线模块调试心得!STM32_SPI驱动NRF24L01+
原文链接:链接 经过两日的调试nRF24L01终于调试成功.耐心,细心.有想法.资料.数据手册.总就会成功. 下面是调试的基本方法: 24L01是收发双方都需要编程的器件 ...
最新文章
- windows 如何配置 Go 环境(Zip archive 方式)?
- django 模板语言之 simple_tag 自定义模板
- C#开发C/S结构如何通信的问题?
- tushare pro接口_利用tushare获取新闻联播文字稿并制作词云
- Linux经典问题—五哲学家就餐问题
- C++ 求一元二次方程的根
- poj 1969 Count on Canton 摘规律
- oracle sql 取日期,Oracle SQL日期及日期格式获取命令,oraclesql
- 牛逼!一款基于SpringBoot的微信点餐系统
- 农村三资管理平台app_鑫农三资app下载-鑫农三资app下载安卓版 v1.0.2_手机乐园
- R语言 线性混合效应模型实战案例
- 良心安利动物 恐龙unity3d模型素材网站
- 无线传感器网络(双语)复习
- 链塔区块链数据平台周报:新增富豪榜、项目点评、收藏等功能 | 链塔数据
- jcp jsr_JCP选举结果:LJC和CloudBees赢得EC席位
- SAP 发票凭证反向冲销
- 集群并行效率测试软件,并行集群系统的Linpack性能测试分析
- 各类文件的文件头标志[转]
- android cs,CS 1.6移植安卓手机:附安装教程
- 哈工大计算机学院博士毕业 要求,哈尔滨工业大学博士毕业要求.doc