NRF24L01模块使用(老干妈笔记)
- CE: 模块控制线,CSN为低时,CE协同CONFIG寄存器共同决定NRF24L01状态
- CSN: SPI片选线
- SCK: SPI时钟线
- MOSI:SPI数据线(主机输出从机输入)
- MISO:SPI数据线(主机输入从机输出)
- IRQ: 中断信号线。中断时变为低电平,在以下三种情况变低:Tx FIFO发完并且收到ACK(使能ACK情况下)、Rx FIFO收到数据、达到最大重发次数
空闲状态SCK为0,CPOL=0;数据在时钟第一个跳变沿采集,CPHA=0;
- Cn:SPI命令位
- Sn:STATUS寄存器位
- Dn:数据位(MSB,多字节传输时,低字节在前)
3、工作模式
NRF24L01工作模式,由CE和CONFIG寄存器(0x00)的PWR_UP(第1位)和PRIM_RX(第0位)共同控制:
NRF24L01工作模式 | PWR_UP位状态 | PRIM_RX位状态 | CE引脚电平 | FIFO寄存器状态 |
---|---|---|---|---|
接收模式 | 1 | 1 | 1 | - |
发送模式 | 1 | 0 | 1 | 数据在TX FIFO寄存器中 |
发送模式 | 1 | 0 | 1 ----> 0 | 停留在发送模式,直至发送完 |
待机模式II | 1 | 0 | 1 | TX FIFO为空 |
待机模式I | 1 | - | 0 | 无数据传输 |
掉电模式 | 0 | - | - | - |
- Enhanced ShockBurstTM收发模式
发送数据时,自动加上字头和CRC校验码, 在发送模式下,置CE为高,至少10us,将使能发送过程;接收数据时,自动把字头和CRC校验码移去。
在 接收端,确认收到数据后记录地址,并以此地址为目标地址发送应答信号。在 发送端,通道0被用作接收应答信号,故 通道0的接收地址与发送地址端地址相等,以确保接收到正确应答信号。
Enhanced ShockBurstTM发送流程:
A. 把地址和要发送的数据按时序送入NRF24L01;
B. 配置CONFIG寄存器,使之进入发送模式;
C. MCU把CE置高(至少10us),激发Enhanced ShockBurstTM发射;
D. Enhanced ShockBurstTM发射:a)给射频前端供电;
b)射频数据打包(加字头、CRC校验码);
c)高速发射数据包;
d)发射完成,NRF24L01进入空闲状态
Enhanced ShockBurstTM接收流程:
A. 配置接收地址和要接收的数据包大小;
B. 配置CONFIG寄存器,使之进入接收模式,把CE置高;
C. 130us后,NRF24L01进入监视状态,等待数据包的到来;
D. 当接收到正确的数据包(正确的地址和CRC校验码),NRF24L01自动移去字头、地址和CRC校验位
E. NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起MCU中断)通知MCU;
F. MCU把数据从FIFO读出(0x61指令);
G. 所有数据读取完毕后,可清除STATUS寄存器;NRF24L01可以进入四中主要的模式之一。
4、SPI指令
指令名称 | 指令格式 | 操作 |
---|---|---|
R_REGISTER | 000A AAAA | 读寄存器。AAAAA为要读取的寄存器地址 |
W_REGISTER | 001A AAAA | 写寄存器。AAAAA为要写入的寄存器地址 |
R__RX_PAYLOAD | 0110 0001 |
读 RX 有效数据,1-32字节。 读操作从字节0开始,当读RX有效数 据完成后,FIFO寄存器中的使有效数据将被清除。接收模式下用。 |
W_TX_PAYLOAD | 1010 0000 | 写TX有效数据,1-32字节。写操作从0字节开始,发送模式下用。 |
FLUSH_TX | 1110 0001 | 清除TX FIFO寄存器。发送模式下用 |
FLUSH_RX | 1110 0010 | 清除RX FIFO寄存器。接收模式下用 |
NRF24L01模块使用(老干妈笔记)相关推荐
- 开源自制6通道航模遥控器,Arduino Pro Mini NRF24L01模块
前言 前段时间跟着LOLI大神的教程制作了LOLI三代控,效果很好.但是,由于LOLI三代控的接收机带有数据回传功能,也就是接收机的无线模块也承担了发射数据功能,所以接收机也要使用带有功率放大芯片的N ...
- 【STM32】NRF24L01模块的收发调试
NRF24L01 发送端.c文件 发送端.h文件 接收端.c文件 接收端.h文件 接收端main函数 总结: 这里我是用了两块板子来做通信实验,这里我就直接贴发送端和接收端的.c.h文件,一个是用标准 ...
- NRF24L01模块实现一发一收和多发一收
折腾了两天还是弄出来了.什么24L01介绍就不要了,淘宝资料一堆. 使用的单片机型号是STMF103ZET6.还是简单介绍几点: 1.硬件连接 如图标记右下角是1脚 CE:模式控制线 CSN:SPI片 ...
- NRF24L01+模块实现双向通信(带ACK payload)
本文主要关于NRF24L01+ 2.4GHz无线模块的应用. 目录 说明 模块开发的大致步骤 使用方式 一.单向通信 二.双向通信(有应答包(ACK payload)) 寄存器配置 三.星状组网 注意 ...
- 基于2.4GHz射频NRF24L01模块的智能家居项目总结
1. 经过陆陆续续的几个双休日和考试周里的空闲时间里的编写和调试,终于于2015/12/26今天晚上大体完成了智能家居的调试工作!总算是没有半途而废,耐心也受到挑战. 2. 几个比 ...
- 【STM32CubeMX】NRF24L01模块实现“1对1“及“1对多“无线通信
大家好,我是小政.本篇文章我将针对NRF24L01模块实现"1对1"及"1对多"无线通信的STM32CubeMX配置过程进行详细的讲解,让准备学习HAL库的 ...
- 51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信
51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信 NRF24L01 一.简介 二.引脚功能描述 程序设计 一.对 24L01 的程序编程的基本思路如下: 二.Tx 与 ...
- 基于STM32F1与NRF24L01模块的SPI简单通信
一.前言 1.简介: 本文是基于STM32F1,将数据发送至NRF模块的寄存器,并将数据重新读取,通过串口发送出来的简单SPI单通信. 2.SPI简介: 调过STM8的都已经对SPI有所了解,调法都一 ...
- NRF24L01模块多发一收通信(STM32)
NRF24L01模块多发一收通信(STM32) 目录 NRF24L01模块多发一收通信(STM32) 前言 一.解决思路 二.实验过程 1.设备ID号定义 2.数据打包发送 3.数据接收拆解 总结 前 ...
- arduino笔记32:nRF24l01模块使用 电磁波频率 距离限制 掉电模式 热待机模式
最近再arduino中文社区看到了一篇介绍nrf24l01基本原理的帖子,内容感觉蛮不错的,学习一下,记录一下学习笔记. 大部分内容都是Arduino中文社区的帖子,附上自己的一点点体会. 目录 一. ...
最新文章
- 实战!工作中常用到哪些设计模式
- 颜色,形状,纹理特征
- “进度条”博客——第十六周
- web安全_皮卡丘_csrf
- Failed to get response from /vue-cli-version-marker
- Python 进阶之路 (十) 再立Flag, 社区最全的itertools深度解析(中)
- 【转】我们今年二十三四岁。。。
- python列表生成多个号码_python遍历多个列表生成列表或字典
- LeetCode 1673. 找出最具竞争力的子序列(单调栈)
- paip.输入法编程---带ord gudin去重复-
- Nexus3 功能介绍
- js调用Bartender
- 市场战略再升级 解析融云的生态平台+纵深发展
- 使用 Excel 中的函数准确计算周岁年龄
- unixprocess+java+186_interproscan 的使用和遇到的问题
- 【百度大脑新品体验】人脸面部动作识别
- MKOnlinePlayer在线音乐播放器
- openssh卸载了怎么连接linux,源码安装的openssh肿么卸载
- 如何将html转成PDF文件
- css3实现旋转魔方