3. Radio Control 无线电控制

nRF24L01+可以配置为:power down, standbyRx/Tx mode

3.1. 无线控制状态图

当VDD电压大于1.9V时,进入上电复位状态,并保持复位状态,直到进入掉电模式:

需要注意的是:

  1. 从待机模式到TX/RX模式的过度时间,和反过来,从TX/RX模式到待机模式的过渡时间是相同的;

  2. 芯片从掉电模式进入TX/RX模式前,必须经过待机I模式;也就是说需要在进入掉电模式后等待Tpd2stby(见表16,估计是晶体振荡器建立时间及稳定之类的时间)后,才能将CE拉高(至少10us)进入RX/TX模式

  3. 晶体振荡器的启动时间与晶体等效电感成正比。在一些晶体数据表中,等效串联电感Ls称为L1或Lm,Cs称为C1或Cm。

    Tpd2stby = Ls/30mH * 1.5ms ,可以这么粗略的计算

  4. 如果芯片掉电,原来寄存器的值不会保存,所以需要从新开始配置;





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_UPPRIM_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 无线电控制的更多相关文章

  1. WHAT IS PPM Encoder ?

    About PPM Encoder The PPM encoder allows to encode up to 8 PWM (pulse width modulated) signals into ...

  2. linux查看端口及端口详解

    今天现场查看了TCP端口的占用情况,如下图   红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...

  3. 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 ...

  4. 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证

    在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...

  5. linux 常用端口列表

    常见端口表汇总 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 2 compressnet Management Utility com ...

  6. uCGUI窗口重绘代码分析

    一.概述 µC/GUI的窗口重绘是学习者理解窗口工作原理和应用窗口操作的重点.µC/GUI的窗口重绘引入了回调机制,回调机制可以实现图形系统调用用户的代码,由于图形系统使用了剪切算法,使得屏幕重绘的效 ...

  7. USB设备类型代码(class类型)

    Base Class E0h (Wireless Controller) This base class is defined for devices that are Wireless contro ...

  8. boolean attribute(布尔值属性) attribute vs property

    boolean attribute(布尔值属性) boolean attribute     HTML - Why boolean attributes do not have boolean val ...

  9. 网络-05-端口号-F5-负载均衡设-linux端口详解大全--TCP注册端口号大全备

    [root@test1:Standby] config # [root@test1:Standby] config # [root@test1:Standby] config # [root@test ...

  10. 网络-02-端口号-linux端口详解大全

    端口详解 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器  2 compressnet Management Utility compr ...

随机推荐

  1. SVG <pattern> 标签的用法和应用场景

    通过使用 <pattern> 标签,可以在 SVG 图像内部定义可重复使用的任意图案.这些图案可以通过 fill 属性或 stroke 属性进行引用. 使用场景 例如我们要在 <sv ...

  2. 集成学习与随机森林(二)Bagging与Pasting

    Bagging 与Pasting 我们之前提到过,其中一个获取一组不同分类器的方法是使用完全不同的训练算法.另一个方法是为每个预测器使用同样的训练算法,但是在训练集的不同的随机子集上进行训练.在数据抽 ...

  3. 在C#中进行单元测试

    单元测试 前言 时隔多个月,终于抽空学习了点新知识,那么这次来记录一下C#怎么进行单元测试,单元测试是做什么的. 我相信大部分刚毕业的都很疑惑单元测试是干什么的?在小厂实习了6个月后,我发现每天除了写 ...

  4. Ubuntu 下 python 安装pip

    背景 python的强大在于它的第三方库. 安装 python2 sudo apt-get install python-pip python3 curl https://bootstrap.pypa ...

  5. 阿里云日志Nginx日志分析

    每分钟接口访问次数的前200条统计 not request_uri : "/heartbeat.html" | SELECT time_series(time, '1m', '%H ...

  6. 粗枝大叶记录一下java9模块化改造一个项目的过程(Jigsaw)

    假设项目结构如下: 其中的依赖关系为 我实际用的jdk是17 1. common模块创建描述文件,在common的src/main/java下创建module-info.java, 内容默认 /** ...

  7. Linux开发人员常用命令

    常用查询命令 # 查看ip地址 ip addr show # 查看当前目录路径 pwd # 当前目录下模糊查找文件 find / -name "*.pdf" 查看运行中进程 ps ...

  8. 从Java开发者到.NET Core初级工程师学习路线:C#语言基础

    1. C#语言基础 1.1 C#语法概览 欢迎来到C#的世界!对于刚从Java转过来的开发者来说,你会发现C#和Java有很多相似之处,但C#也有其独特的魅力和强大之处.让我们一起来探索C#的基本语法 ...

  9. Mybatis 二级缓存的使用

    Mybatis二级缓存 简介:二级缓存是namesace级别的,多个SqlSession去操作同个namespace下的Mapper的sql语句,多个SqlSession可以共用二级缓存,如果两个ma ...

  10. 图表绘制之RepeatNode的妙用

    图表绘制之RepeatNode的妙用 前言 最近接到许多大屏项目,其中有一个智慧大楼的项目,大致是由3d场景+数据图表组成,需要能监控实时数据.安防 监控.出入统计以及消防安全等功能如下图 但是在开发 ...