[nRF24L01+] 3. Radio Control 无线电控制
3. Radio Control 无线电控制
nRF24L01+可以配置为:power down
, standby
, Rx/Tx mode
3.1. 无线控制状态图
当VDD电压大于1.9V时,进入上电复位状态,并保持复位状态,直到进入掉电模式:
需要注意的是:
从待机模式到TX/RX模式的过度时间,和反过来,从TX/RX模式到待机模式的过渡时间是相同的;
芯片从掉电模式进入TX/RX模式前,必须经过待机I模式;也就是说需要在进入掉电模式后等待
Tpd2stby
(见表16,估计是晶体振荡器建立时间及稳定之类的时间)后,才能将CE
拉高(至少10us)进入RX/TX模式晶体振荡器的启动时间与晶体等效电感成正比。在一些晶体数据表中,等效串联电感Ls称为L1或Lm,Cs称为C1或Cm。
Tpd2stby = Ls/30mH * 1.5ms
,可以这么粗略的计算如果芯片掉电,原来寄存器的值不会保存,所以需要从新开始配置;
3.2. Power Down Mode 掉电模式
可以通过把CONTROL
寄存器的PWR_UP
清零, 进入掉电模式,900nA;只有寄存器和SPI是活动的,以便可以通过SPI修改寄存器的值,即更改工作状态。
3.3. 待机1模式
把CONTROL
寄存器的PWR_UP
置1,可以进入待机I模式,26uA;这个模式下只有晶振一部分是活动的,它是在保持最小启动时间下的平均电流消耗最小的一个状态;
思考:这个状态下,晶振电路是工作的,也是耗电的;在按键扫描电路中,可以先使用电平触发让芯片从掉电模式下启动,然后再开始扫描判定是哪个按键按下,如此应该可以得到最小的功耗;前提是在掉电模式下GPIO的中断可以唤醒!
此外,在RX或者TX模式下,CE
拉低芯片同样会进入待机1模式;而拉高CE
则可以进入RX或者TX模式,取决于配置和寄存器的状态;
3.4. 待机II模式
相比待机I模式下,在待机II模式下更多的时钟和缓冲器处于活动状态下,因此更耗电;当CE
拉高准备进入TX模式时,如果此时的TX-FIFO为空(没有要发送的数据)就会进入待机II模式;而一旦TX-FIFO填充了数据,将在延迟130us等待PLL和配置稳定后进入TX模式。
3.5. RX接收模式
当PWR_UP
、PRIM_RX
控制位置一并且CE
管脚拉高时,会进入RX模式;
在RX模式下,接收机会持续将调制后的数据呈现给基带协议引擎,如果找到有效的数据包(通过匹配地址和有效的CRC),则数据包会出现在RXFIFO里;如果RX FIFO已满就会丢弃接收到的数据。
在MCU重新配置芯片为待机I或者掉电模式前,它都会一直保持在RX模式下;但是如果自动协议功能(Enhanced ShockBurst)启用后,芯片可以进入其他模式以执行协议;
在RX模式下,接收功率检测器(RPD,Received Power Dectector)信号可用。RPD当在接收频率信道内检测到高于-64dBm的RF信号时,会被设置为拉高的信号; RPD信号在呈现给寄存器之前会经过滤波,射频信号至少存在40us后才能被拉高。
RPD当成功接受到数据包时,状态将会被锁存,可以用来指示发射机的信号强度(也就是说如果地址或者CRC错误了,也会被置位,这样就知道你的接收机发送的信号到底有没有被收到了);如果没有收到数据包时,会保留最后一个接受周期的状态,这个状态会作为MCU将CE
拉低或者RX接收超时的结果,由增强型协议功能控制。
RPD的值需要等待 Tstby2a +Tdelay_AGC= 130us + 40us
后才是正确的(好理解,因为接收机自己配置好需要时间);接收的增益会随着温度变化而改变,所以RPD的曾因判定阈值也是如此:- 5dB at T = -40°C, + 5dB at 85°C
3.6. TX发射模式
进入TX模式需要把PWR_UP
置一, PRIM_RX
清零,往TX_FIFO
里存入数据,最后再把CE
管脚拉高至少10us
; 24L01+将会保持在TX模式,一直等到一包的数据发送完成;当CE=0
时,24L01+将会返回到待机I模式下;
TX模式下,PLL是在开环下运行的(不知道是否为其原因),不要在TX模式下超过4ms(在增强协议模式下,不会超过4ms)。
a. 如果CE=1
,所有的TX_FIFO
都会被清空,同时在发送过程中必要的ACK和可能的重发机制都会被执行。如果TX_FIFO为空
但是CE=1
仍然为高时,将会进入待机II模式;此模式下一旦TX_FIFO
不为空(SPI的数据传输进来后,管脚CSN
拉高),就会立即进入TX模式发送数据包;
b. 此操作模式使CE脉冲高至少10µs。这允许传输一个数据包。这是正常操作模式。数据包传输后,nRF24L01+进入待机I 模式。
3.7. Air data rate 空中数据速率
通过RF_SETUP
寄存器的RF_DR
控制,接收机和发射机的速率要配置成一样的;
空中数据速率是nRF24L01+在发送和接收数据时使用的调制信令速率。它可以是250kbps、1Mbps或2Mbps。
使用较低的空中数据速率可以获得更好的接收灵敏度,相比于更高的空气数据速率。但是,高空中数据速率会降低平均电流消耗,降低空中碰撞的概率。
3.8. RF Channel Frequency
nRF24L01+可以在2.400GHz至2.525GHz的频率范围内工作。RF信道频率设置的编程分辨率为1MHz,(525-400=125,即0~125)。
F0 = 2400 + RFCH [MHz]
RF信道频率决定nRF24L01+使用的信道中心。频道在250kbps和1Mbps时占用小于1MHz的带宽,在2Mhz时占用小于2MHz的带宽。
3.9. PA(Power Amplifier) Control
PA(功率放大器)控制用于设置nRF24L01+功率放大器的输出功率。PA控制由RF_SETUP
寄存器中的RF_PWR
位设置。
[nRF24L01+] 3. Radio Control 无线电控制的更多相关文章
- WHAT IS PPM Encoder ?
About PPM Encoder The PPM encoder allows to encode up to 8 PWM (pulse width modulated) signals into ...
- linux查看端口及端口详解
今天现场查看了TCP端口的占用情况,如下图 红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...
- Magic xpa 2.5发布 Magic xpa 2.5 Release Notes
Magic xpa 2.5發佈 Magic xpa 2.5 Release Notes Magic xpa 2.5 Release NotesNew Features, Feature Enhance ...
- 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...
- linux 常用端口列表
常见端口表汇总 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 2 compressnet Management Utility com ...
- uCGUI窗口重绘代码分析
一.概述 µC/GUI的窗口重绘是学习者理解窗口工作原理和应用窗口操作的重点.µC/GUI的窗口重绘引入了回调机制,回调机制可以实现图形系统调用用户的代码,由于图形系统使用了剪切算法,使得屏幕重绘的效 ...
- USB设备类型代码(class类型)
Base Class E0h (Wireless Controller) This base class is defined for devices that are Wireless contro ...
- boolean attribute(布尔值属性) attribute vs property
boolean attribute(布尔值属性) boolean attribute HTML - Why boolean attributes do not have boolean val ...
- 网络-05-端口号-F5-负载均衡设-linux端口详解大全--TCP注册端口号大全备
[root@test1:Standby] config # [root@test1:Standby] config # [root@test1:Standby] config # [root@test ...
- 网络-02-端口号-linux端口详解大全
端口详解 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 2 compressnet Management Utility compr ...
随机推荐
- SVG <pattern> 标签的用法和应用场景
通过使用 <pattern> 标签,可以在 SVG 图像内部定义可重复使用的任意图案.这些图案可以通过 fill 属性或 stroke 属性进行引用. 使用场景 例如我们要在 <sv ...
- 集成学习与随机森林(二)Bagging与Pasting
Bagging 与Pasting 我们之前提到过,其中一个获取一组不同分类器的方法是使用完全不同的训练算法.另一个方法是为每个预测器使用同样的训练算法,但是在训练集的不同的随机子集上进行训练.在数据抽 ...
- 在C#中进行单元测试
单元测试 前言 时隔多个月,终于抽空学习了点新知识,那么这次来记录一下C#怎么进行单元测试,单元测试是做什么的. 我相信大部分刚毕业的都很疑惑单元测试是干什么的?在小厂实习了6个月后,我发现每天除了写 ...
- Ubuntu 下 python 安装pip
背景 python的强大在于它的第三方库. 安装 python2 sudo apt-get install python-pip python3 curl https://bootstrap.pypa ...
- 阿里云日志Nginx日志分析
每分钟接口访问次数的前200条统计 not request_uri : "/heartbeat.html" | SELECT time_series(time, '1m', '%H ...
- 粗枝大叶记录一下java9模块化改造一个项目的过程(Jigsaw)
假设项目结构如下: 其中的依赖关系为 我实际用的jdk是17 1. common模块创建描述文件,在common的src/main/java下创建module-info.java, 内容默认 /** ...
- Linux开发人员常用命令
常用查询命令 # 查看ip地址 ip addr show # 查看当前目录路径 pwd # 当前目录下模糊查找文件 find / -name "*.pdf" 查看运行中进程 ps ...
- 从Java开发者到.NET Core初级工程师学习路线:C#语言基础
1. C#语言基础 1.1 C#语法概览 欢迎来到C#的世界!对于刚从Java转过来的开发者来说,你会发现C#和Java有很多相似之处,但C#也有其独特的魅力和强大之处.让我们一起来探索C#的基本语法 ...
- Mybatis 二级缓存的使用
Mybatis二级缓存 简介:二级缓存是namesace级别的,多个SqlSession去操作同个namespace下的Mapper的sql语句,多个SqlSession可以共用二级缓存,如果两个ma ...
- 图表绘制之RepeatNode的妙用
图表绘制之RepeatNode的妙用 前言 最近接到许多大屏项目,其中有一个智慧大楼的项目,大致是由3d场景+数据图表组成,需要能监控实时数据.安防 监控.出入统计以及消防安全等功能如下图 但是在开发 ...