IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    nRF24L01+数据手册

    gashero的Geek前哨发表于 2016-10-26 15:04:10
    love 0

    nRF24L01+ 数据手册

    译者:

    gashero

    日期:

    2016-04-01

    nRF24L01+是NORDIC公司的单芯片2.4GHz收发器。我得到的版本是V1.0,发布日期为2008-09。文件是78页的PDF,1,134,034字节。

    目录

    • 1   介绍
      • 1.1   功能
      • 1.2   功能框图
    • 2   引脚信息
      • 2.1   引脚分配
      • 2.2   引脚功能
    • 3   绝对参数范围
    • 4   工作条件
    • 5   电气规范
    • 6   无线控制
      • 6.1   工作模式
        • 6.1.1   状态图
        • 6.1.2   掉电模式
        • 6.1.3   待机模式
        • 6.1.4   RX模式
        • 6.1.5   TX模式
        • 6.1.6   操作模式配置
        • 6.1.7   时序信息
      • 6.2   空中速率 Air data rate
      • 6.3   RF频道频率
      • 6.4   接收功耗检测器测量
      • 6.5   PA控制
      • 6.6   RX/TX控制
    • 7   Enhanced ShockBurst (TM)
      • 7.1   功能
      • 7.2   Enhanced ShockBurst概览
      • 7.3   Enhanced ShockBurst包格式
      • 7.4   自动包事务处理
        • 7.4.1   自动应答AA
        • 7.4.2   自动重传ART
      • 7.5   流程图
        • 7.5.1   PTX操作
        • 7.5.2   PRX操作
      • 7.6   MultiCeiver
      • 7.7   时序图
      • 7.8   事务流程图
        • 7.8.1   单一事务包含ACK和中断
        • 7.8.2   单一事务包含丢包
        • 7.8.3   单一事务包含丢失ACK包
        • 7.8.4   单一事务包括ACK载荷包
        • 7.8.5   单一事务包括ACK载荷和丢包
        • 7.8.6   两个事务包括ACK载荷和第一个ACK包丢失
        • 7.8.7   两个事务,到达最大重传次数
      • 7.9   兼容ShockBurst
        • 7.9.1   ShockBurst包结构
    • 8   数据和控制接口
      • 8.1   功能
      • 8.2   功能描述
      • 8.3   SPI操作
        • 8.3.1   SPI命令
        • 8.3.2   SPI时序
      • 8.4   数据FIFO
      • 8.5   中断
    • 9   寄存器映射
      • 9.1   寄存器映射表
        • 9.1.1   CONFIG-配置寄存器
        • 9.1.2   EN_AA-Enhanced ShockBurst的自动应答控制
        • 9.1.3   EN_RXADDR-启用RX接收地址
        • 9.1.4   SETUP_AW-设置地址宽度
        • 9.1.5   SETUP_RETR-自动重发设置
        • 9.1.6   RF_CH-射频频道
        • 9.1.7   RF_SETUP-射频设置
        • 9.1.8   STATUS-状态寄存器
        • 9.1.9   OBSERVE_TX-发射观察
        • 9.1.10   RPD-接受功率检测器
        • 9.1.11   RX_ADDR_P<N>-接收地址<N>
        • 9.1.12   TX_ADDR-发送地址
        • 9.1.13   RX_PW_P<N>-接收数据宽度
        • 9.1.14   FIFO_STATUS-FIFO状态
        • 9.1.15   ACK_PLD-应答包载荷
        • 9.1.16   TX_PLD-发射载荷
        • 9.1.17   RX_PLD-接收载荷
        • 9.1.18   DYNPD-启用动态载荷长度
        • 9.1.19   FEATURE-功能寄存器
    • 10   外设RF信息
    • 11   应用示例
    • 12   机械规范
    • 13   订购信息
    • 14   术语表
    • 15   附录A 配置和通信实例
    • 16   附录B 配置兼容nRF24XX
    • 17   附录C 测试波形

    关键功能:

    1. 世界范围2.4GHz ISM频段
    2. 250kbps、1Mbps、2Mbps的空中速率
    3. 超低功耗
    4. 11.3mA发射电流,在0dBm输出功率
    5. 13.5mA接收电流,在2Mbps速率
    6. 900nA的掉电模式电流
    7. 26uA在待机I模式
    8. 片内的稳压器
    9. 1.9~3.6V供电范围
    10. 增强的ShockBurst模式
    11. 自动包处理
    12. 自动包事务处理
    13. 6个数据管道MultiCeiver
    14. 向下兼容nRF24L01
    15. 空中兼容250kbps和1Mbps,与nRF24L01A、nRF2402、nRF24E1、nRF24E2
    16. 超低BOM成本
    17. 使用+/-60ppm的16MHz晶振
    18. 5V容忍输入
    19. 20引脚4x4mm的QFN封装

    应用:

    1. 无线PC外设
    2. 鼠标、键盘、遥控
    3. 3合1桌面集线器
    4. 高级媒体重心遥控
    5. VoIP痛耳机
    6. 游戏控制器
    7. 运动手表和传感器
    8. RF遥控,给其他消费级产品
    9. 家庭和商业自动化
    10. 超低功耗传感器网络
    11. 活跃的RFID标签
    12. 资产跟踪系统
    13. 玩具

    1   介绍

    nRF24L01+是单芯片2.4GHz收发器,使用内置的基带协议引擎(Enhanced ShockBurst(TM)),适合超低功耗无线应用。nRF24L01+设计用于世界范围的ISM频段,2.400~2.4835GHz。

    要设计一个基于nRF24L01+的无线系统,你只需要一个MCU和一些外围元件。

    你可以通过SPI来操作和控制nRF24L01+。寄存器映射可以通过SPI控制,包括所有配置寄存器,可以操作芯片所有模式。

    内置的基带协议引擎(Enhaced ShockBurst TM)基于包通信,支持多种模式,从手动到自动协议操作。内部的FIFO会确保无线前端与MCU的平滑数据流动。Enhanced ShockBurst会降低系统开销,通过处理所有高速连接层操作。

    无线电前端使用GFSK调制。可以通过用户配置频率通道、输出功率、空中速率。nRF24L01+支持空中速率包括250kbps、1Mbps、2Mbps。内置的两种省电模式使得nRF24L01+非常适合超低功耗设计。

    nRF24L01+向下兼容nRF24L01,以及空中兼容nRF2401A、nRF2402、nRF24E1、nRF24E2。交互调制和宽带阻塞值比nRF24L01改进了许多。nRF24L01+内部的滤波器在满足RF监管的情况下改进了边际。

    内部的稳压器确保了电源抑制比(PSRR=Power Supply Rejection Ratio),以适应更宽的电源范围。

    1.1   功能

    nRF24L01+支持的功能:

    1. 无线电:
      1. 世界范围的2.4GHz ISM频段
      2. 126 RF通道
      3. 通用的RX和TX接口
      4. GFSK调制
      5. 250kbps、1Mbps、2Mbps速率
      6. 1MHz非交叠频道空间在1Mbps
      7. 2MHz非交叠频道空间在2Mbps
    2. 发射器:
      1. 可编程输出功率:0、-6、-12、-18dBm
      2. 11.3mA在0dBm输出功率
    3. 接收器:
      1. 快速AGC用以改进动态范围
      2. 集成频道滤波器
      3. 13.5mA在2Mbps
      4. -82dBm灵敏度在2Mbps
      5. -85dBm灵敏度在1Mbps
      6. -94dBm灵敏度在250kbps
    4. RF合成器(Synthesizer):
      1. 全集成合成器
      2. 没有外部环滤波器,VCO变容二极管、谐振器
      3. 可以接受低成本的+/-60ppm 16MHz晶振
    5. Enhanced ShockBurst (TM):
      1. 1到32字节动态负载长度
      2. 自动包处理
      3. 自动包事务处理
      4. 6个数据管道MultiCeiver (TM)供1:6星形网络
    6. 电源管理:
      1. 集成稳压器
      2. 1.9~3.6V电源范围
      3. 空闲模式支持快速启动,用于高级电源管理
      4. 26uA的待机I电流,900nA的掉电模式
      5. 最大1.5mS的启动时间,从掉电模式
      6. 最大130uS的启动时间,从待机I模式
    7. 上位机接口:
      1. 4脚硬件SPI
      2. 最大10Mbps
      3. 3个独立的32byte TX和RX FIFO
      4. 5V容忍输入
    8. 20引脚4x4mm,QFN封装

    1.2   功能框图

     

    2   引脚信息

    2.1   引脚分配

     

    2.2   引脚功能

    DI=Digital Input,DO=Digital Output,AI=Analog Input、AO=Analog Output,PO=Power Output。

    名字

    序号

    功能

    描述

    CE

    1

    DI

    片选,激活RX或TX模式

    CSN

    2

    DI

    SPI片选

    SCK

    3

    DI

    SPI时钟

    MOSI

    4

    DI

    SPI MOSI

    MISO

    5

    DO

    SPI MISO

    IRQ

    6

    DO

    可屏蔽中断引脚,低电平有效

    VDD

    7

    Power

    电源,1.9~3.6V DC

    VSS

    8

    Power

    地线

    XC2

    9

    AO

    晶振

    XC1

    10

    AI

    晶振

    VDD_PA

    11

    PO

    电源输出1.8V,必须按照Figure32连接到ANT1和ANT2

    ANT1

    12

    RF

    天线接口1

    ANT2

    13

    RF

    天线接口2

    VSS

    14

    Power

    地线

    VDD

    15

    Power

    电源,1.9~3.6V DC

    IREF

    16

    AI

    参考电流,连接22kR到地线

    VSS

    17

    Power

    地线

    VDD

    18

    Power

    电源,1.9~3.6V DC

    DVDD

    19

    PO

    内部数字电压输出,用以解耦

    VSS

    20

    Power

    地线

    3   绝对参数范围

    超过如下数值会导致永久性损坏。

    工作条件

    Min

    Max

    单位

    电源VDD

    -0.3

    3.6

    V

    电源VSS

    x

    0

    V

    输入电压V_I

    -0.3

    5.25

    V

    输出电压V_O

    VSS~VDD

    VSS~VDD

     

    总功耗P_D T_A=85

    x

    60

    mW

    工作温度

    -40

    +85

    摄氏度

    存储温度

    -40

    +125

    摄氏度

    4   工作条件

    符号

    参数条件

    最小

    典型

    最大

    单位

    VDD

    电源电压

    1.9

    3.0

    3.6

    V

    VDD

    电源电压,如果输入信号>3.6V

    2.7

    3.0

    3.6

    V

    TEMP

    工作温度

    -40

    +27

    +85

    摄氏度

    5   电气规范

    @page 14-20 一堆的表格参数

    6   无线控制

    本章描述nRF24L01+无线收发器的操作模式和控制参数。

    nRF24L01+有内置的状态机来控制收发器的工作模式。状态机接收用户定义的寄存器数值和内部信号作为输入。

    6.1   工作模式

    可配置的工作模式:掉电、待机、RX、TX模式。

    6.1.1   状态图

    如下状态图展示了操作模式,及其功能。有三种类型的严格状态。

    1. 推荐操作模式:就是推荐的状态,在正常操作
    2. 可能的操作模式:有可能的操作模式,但在正常操作中不会用到
    3. 过渡状态(transition state):有时间限制的状态,用于晶振启动,以及设置PLL

    当VDD到达1.9V或更高,nRF24L01+进入上电复位状态,并保持直到进入掉电模式。

     

    6.1.2   掉电模式

    在掉电模式,nRFL24L01+被禁用,并消耗最少的电流。所有寄存器值会保留,SPI保持活跃,允许修改配置和传输数据寄存器。掉电模式通过CONFIG.PWR_UP=0来进入。

    6.1.3   待机模式

    待机I模式

    通过设置CONFIG.PWR_UP=1,设备进入待机1模式。该模式用于最小化电源消耗的同时最短的启动时间。此模式只有一部分晶振有效。进入活跃状态仅在CE变为高电平。而CE变低的过程,无论之前是TX还是RX模式,都会进入待机I模式。

    待机II模式

    此模式外部时钟缓冲有效,以及更加节电。仅在PTX设备上空TX_FIFO且CE保持高电平。如果有新的包上传到TX_FIFO,PLL立即启动,并发送包,在特定的PLL设置延迟(130uS)之后。

    寄存器值会保留,SPI可以激活两种待机模式。

    6.1.4   RX模式

    RX模式是作为接收机的模式。要进入这个模式,需要PWR_UP=1、PRIM_RX=1、CE=1。

    在RX模式接收机解调RF频道的信号处理基带协议引擎。基带协议引擎会搜索有效的包。如果找到了有效的包(匹配地址和有效的CRC),包的载荷就会先发送到一个RX_FIFO的空槽。如果RX_FIFO已经满了,接受到的包会被丢弃。

    nRF24L01+在MCU配置进入待机I模式或掉电模式之前会一直保持在RX模式。如果自动协议功能被启用,则nRF24L01+可以进入其他模式来执行协议。

    在RX模式,RPD信号有效。当接收到的信号大于-64dBm则RPD=1。内部的RPD信号会在进入RPD寄存器之前进行滤波。RF信号必须持续超过40uS才会影响RPD信号。

    6.1.5   TX模式

    TX模式用以激活数据发送。需要PWR_UP=1,PRIM_RX=0,TX_FIFO中有载荷,CE的一个超过10uS的高电平脉冲。

    在发送完成数据包以后,会停留在TX模式。如果CE=0则回到待机I模式。如果CE=1则TX_FIFO的状态决定了下一步动作。如果TX_FIFO不为空则会继续在TX模式发送数据。如果TX_FIFO为空则进入待机II模式。TX模式下发射器的PLL工作在开环。注意不要保持TX模式超过4mS。如果在Enhanced ShockBurst功能则TX模式不会持续超过4mS。

    6.1.6   操作模式配置

    如何配置操作模式:

    模式

    PWR_UP

    PRIM_RX

    CE

    FIFO状态

    RX模式

    1

    1

    1

    无

    TX模式

    1

    0

    1

    数据在TX_FIFO并清空TX_FIFO

    TX模式

    1

    0

    1@10uS

    数据在TX_FIFO并清空TX_FIFO

    待机II

    1

    0

    1

    TX_FIFO为空

    待机I

    1

    x

    0

    没有需要发送的包

    掉电

    0

    x

    x

    x

    如上的两种模式,对于CE持续为高,则发送完成TX_FIFO里所有东西后,会立即进入待机II模式。此模式下如果上传数据到TX_FIFO,并CSN重新拉高,则立即会继续发送数据。

    如果CE为一个大于10uS的高电平脉冲。则允许发送一个数据包,这是平常的操作模式。在包发送完成后,进入待机I模式。

    6.1.7   时序信息

    这里的时序信息是关于模式之间过渡的,以及CE引脚。从TX到RX模式的过渡,或相反(vice versa),以及待机模式与TX/RX模式之间的过渡都是相同的时间,最大130uS。

    名字

    状态转换

    Max

    Min

    注释

    Tpd2stby

    掉电=>待机

    150uS

    x

    外部时钟

    Tpd2stby

    掉电=>待机

    1500uS

    x

    外部晶振,Ls<30mH

    Tpd2stby

    掉电=>待机

    3000uS

    x

    外部晶振,Ls=60mH

    Tpd2stby

    掉电=>待机

    4500uS

    x

    外部时钟,Ls=90mH

    Tstby2a

    待机=>TX/RX

    130uS

    x

     

    Thce

    CE高电平宽度

    x

    10uS

     

    Tpece2csn

    从CE正CSN低

    x

    4uS

     

    要葱掉电模式进入TX/RX模式,必须先经过待机模式。延时至少要达到Tpd2stby,从离开掉电模式到CE设置为高。

    如果掉电时VDD也关闭了,则重新进入TX/RX之前需要重新配置。

    6.2   空中速率 Air data rate

    就是调制信号的速率,用以发射和接收。可以是250kbps、1Mbps、2Mbps。使用较低的速率会有更好的接收灵敏度。但更高的速率使得功耗降低,并降低空中碰撞的机率。

    空中速率通过RF_SETUP.RF_DR来设置。发射机和接收机必须使用相同的速率才能通信。

    nRF24L01+全兼容nRF24L01。要兼容nRF2401A、nRF2402、nRF24E1、nRF24E2,空中速率必须设置为250kbps或1Mbps。

    6.3   RF频道频率

    RF频道是指实际使用的频道重心。频道占用的带宽在250kbps和1Mbps时小于1MHz,在2Mbps时小于2MHz。可操作频率范围在2.400GHz到2.525GHz。编程控制的分辨率是1MHz。

    在2Mbps时,频道占用比实际设置的要宽。要确保在2Mbps时频道之间不要重叠,频道空间至少留出2MHz或更多。在1Mbps和250kbps,频道带宽与RF设置的分辨率相同。

    RF频道通过RF_CH寄存器设置,遵循如下公式 F0 = 2400 + RFCH ⁄ MHz 。

    你必须确保发射机和接收机使用相同的频道来通信。

    6.4   接收功耗检测器测量

    Received Power Detector=RPD,地址是0x09,其bit0指出接收功率是否低于-64dBm。如果接收功率低于-64dBm,RDP=0。

    RPD可以在接收模式的任何时间读取。这提供了当前频率接收功率级别的信息。当接到无效包时,RDP状态会锁存,指出从发射机获得的信号强度。如果没有收到包,则RPD是上次接收结果,即MCU设置CE=0而RX超时。

    RPD的状态通过RX模式校验启用且等待时间为Tstby2a+Tdelay_AGC=130uS+40uS。RX增益会随着温度变化,所以RPD的阈值也会随着温度变化。RPD阈值在T=-40时-5dB,在T=+85时+5dB。

    6.5   PA控制

    PA=Power Amplifier时用于设置输出功率的。在TX模式,有4种可编程功率,通过RF_SETUP.RF_PWR设置:

    RF_SETUP.RF_PWR

    RF输出功率

    直流电流

    11

    0dBm

    11.3mA

    10

    -6dBm

    9.0mA

    01

    -12dBm

    7.5mA

    00

    -18dBm

    7.0mA

    条件时VDD=3.0V、VSS=0V、T_A=27、负载阻抗15R+j88R。

    6.6   RX/TX控制

    RX和TX的控制通过CONFIG寄存器的PRIM_RX位来控制。

    7   Enhanced ShockBurst (TM)

    Enhanced ShockBurst是基于包的数据链路层,支持自动包组装和计时,自动应答和重发。允许实现超低功耗,和高性能的通信,在低成本的MCU。功能允许显著改善功效,无论是单向还是双向通信系统,而无需增加唉上位机的复杂性。

    7.1   功能

    Enhanced ShockBurst的主要功能:

    1. 1~32自己诶动态负载长度
    2. 自动包处理
    3. 自动包事务处理
      1. 自动应答
      2. 自动重发
    4. 6个数据管道MultiCeiver (TM)用于1:6的星形网络

    7.2   Enhanced ShockBurst概览

    用于自动包处理和时序。在发射时,会组装包,并时钟输出数据包的每个位来发射。在接收时,会在调制信号搜索有效地址。当找到有效地址,会处理包剩余的部分,并验证CRC。如果包有效,载荷会移动到空的RX_FIFO。所有高速位处理和时序都由ShockBurst控制。

    Enhanced ShockBurst功能的自动包事务管理,使得实现双向灵活数据连接变得简单。一个包事务是在两个收发器之间的数据包交换,包括一个收发器作为主接收机(PRX=Primary Receiver),以及其他收发器作为主发射机(PTX=Primary Transmitter)。一个包事务总是通过一次PTX的包发送来初始化,事务在发射机接到PRX的应答包后完成。PRX可以在ACK包附加用户数据来实现双向数据连接。

    自动包事务管理工作如下:

    1. 开始事务通过PTX发射数据包到PRX,Enhanced ShockBurst会自动设置PTX到接收模式来等待ACK包
    2. 如果PRX收到数据包,Enhanced ShockBurst会自动组装和发送应答包ACK到PTX,然后才会回到接收模式
    3. 如果PTX没有立即接到ACK包,会在可编程的时延后自动重发原始数据包,并设置PTX到接收模式来等待ACK包

    Enhanced ShockBurst可以配置的参数如最大重传次数,以及重发延迟时间。所有自动处理都会自动完成,而无需MCU的介入。

    7.3   Enhanced ShockBurst包格式

    Enhanced ShockBurst的包按照如下格式,包含包头、地址、包控制、载荷、CRC,MSB优先在左侧。

    前言1字节

    地址3-5byte

    包控制9bit

    载荷0~32byte

    CRC1-2byte

    @page 28-32

    7.4   自动包事务处理

    有两个自动包事务处理功能:自动应答和自动重传。

    7.4.1   自动应答AA

    自动应答是接收端收到有效数据包后,自动发送一个ACK包给PTX。自动应答功能降低了MCU的系统负载,并可以去掉对专用SPI硬件的需求。折页降低了成本和功耗。自动应答功能通过EN_AA寄存器启用。

    如果收到的包有NO_ACK标识,自动应答就不会执行。

    一个ACK包包含可选的载荷,从PRX到PTX。想要使用该功能,动态载荷长度(DPL=Dynamic Payload Length)需要启用。PRX一端的MCU必须上传载荷到TX_FIFO,通过W_ACK_PAYLOAD命令。载荷会在TX_FIFO中等待(PRX),直到从PTX收到了有效数据包。nRF24L01+可以同时有3个ACK包载荷处于PRX的TX_FIFO中等待。

     

    上图展示了PRX种TX_FIFO种如何处理应答包载荷的。MCU将载荷用W_ACK_PAYLOAD命令传入。地址解码器和缓冲控制器确保了载荷存储在空的TX_FIFO。当收到了包,地址解码器和缓冲控制器会通知PTX地址。这确保了正确的载荷会被传入ACK生成器。

    如果TX_FIFO包含了多于一个到PTX的载荷,载荷会使用先入先出原则处理。TX_FIFO会阻塞,如果所有到PTX的载荷,但连接却丢失了。此时MCU应该清空TX_FIFO,通过FLUSH_TX命令。

    想要启用包含载荷的自动应答,使用FEATURE.EN_ACK_PAY=1。

    7.4.2   自动重传ART

    自动重传是一个功能来在没收到ACK时重新发射数据包。用于PTX的自动应答系统。当一个数据包没有得到应答,你可以设置SETUP_RETR.ARC来决定重传多少次。每次重传后PTX进入接收模式来等待应答包。PTX进入RX模式的周期基于如下条件:

    1. 自动重传延迟(ARD=Auto Retransmit Delay)的设置
    2. 没有地址匹配在250uS(或250kbps的500uS)
    3. 在接收到数据包后(CRC正确与否)

    nRF24L01+会确保收到数据包后设置TX_DS事件。

    nRF24L01+在TX模式里没有更多需要传输的数据而CE=0时,就进入待机1模式。如果ACK包还没收到,则nRF24L01+在ARD延迟后进入TX模式并重传数据。这会持续,直到接到应答,或到达重传限制ARC。

    有两个丢包计数器会在丢包时自增,ARC_CNT和PLOS_CNT,在OBSERVE_TX寄存器。ARC_CNT会统计当前事务种重传的次数。开始新的事务会自动对ARC_CNT复位。PLOS_CNT则统计改变通道以来重传的总次数。通过写RF_CH来复位PLOS_CNT。可以用OBSERVE_TX来评估频道的质量。

    ARD定义了重传的事件延迟,通过SETUP_RETR设置,步幅是250uS。PTX没收到ACK就重传。

    使用带载荷的ACK时有个ARD限制。ARD事件必须不能短于ACK的启动时间和空中时间:

    1. 对2Mbps数据,5字节地址,15byte最大ACK载荷,对应ARD=250uS
    2. 对1Mbps速度,5字节地址,5byte最大ACK载荷,对应ARD=250uS

    ARD=500uS就足够ACK在1Mbps和2Mbps中带有足够在载荷了。

    对250kbps和5字节地址,如下值的限制:

    ARD

    ACK包大小/字节

    1500uS

    任何大小

    1250uS

    <=24

    1000uS

    <=16

    750uS

    <=8

    500uS

    空ACK无载荷

    与其自动重传,还可以手工重传。通过REUSE_TX_PL命令实现。MCU必须初始化每个包的发送,以及在该命令后给CE一个高脉冲。

    7.5   流程图

    7.5.1   PTX操作

    如下是PTX在待机I模式后的操作:

     

    通过CE=1激活PTX模式。如果TX_FIFO中有包需要发送,则进入TX模式并发射数据包。如果自动重传启用了,则状态机会检查NO_ACK标识,如果=0,则nRF24L01+进入RX模式等待ACK包。如果收到的ACK包为空,则只要设置TX_DS事件。如果ACK包包含载荷,则同时设置TX_DS和RX_DR事件,之后才会让nRF24L01+回到待机I模式。

    如果ACK包在超时前没收到,则nRF24L01+回到待机II模式。会持续在待机II模式知道ARC到达。如果重传次数还没到ARC,则会进入TX模式来发射上次的包。

    当执行自动重传功能时,重传次数可以达到最大ARC次。如果这发生了,则nRF24L01+会设置MAX_RT事件,并返回待机I模式。

    如果CE=1且TX_FIFO为空,则nRF24L01+进入待机II模式。

    7.5.2   PRX操作

    如下时PRX在待机I模式后的操作:

     

    CE=1来激活PRX模式。nRF24L01+进入RX模式并开始搜索包。如果收到的有效的包,且自动应答启用了,则nRF24L01+决定包是否是新的,或者是之前收到包的拷贝。如果包是新的,载荷会进入RX_FIFO,且设置RX_DR事件。如果上次收到的包是应答包,且包含ACK载荷,TX_DS会指出PTX收到的ACK包有载荷。如果收到的包没有NO_ACK标识,PRX会进入TX模式。如果有未决的载荷在TX_FIFO,则会自动附加到ACK包里。在ACK包发送后,nRF24L01+回到RX模式。

    一个之前收到包的拷贝会被直接丢弃。此时PRX丢弃接到的包并重新发射ACK包,随后回到RX模式。

    7.6   MultiCeiver

    MultiCeiver是一个RX模式的功能,包含了一组6个并行数据通道,每个有独立的地址。一个数据通道是个逻辑通道,在物理RF通道之内。每个数据通道都有自己的物理地址。

     

    配置位PRX后可以接收最多6个数据通道地址的数据,在同一频率通道。每个数据通道都有独立地址,并可以配置为独立的行为。

    最高留个PTX可以与这个PRX模块通信。所有数据通道都会同时搜索。同一时间只有一个数据通道可以接收数据包。所有数据通道都可以作为Enhanced ShockBurst功能。

    如下设置对所有数据通道共用的:

    1. CRC启用/禁用,在Enhanced ShockBurst功能里总是启用
    2. CRC编码样式
    3. RX地址宽度
    4. 频率通道
    5. 空中速率
    6. LNA增益

    通过EN_RXADDR可以启用数据通道。缺省时只有通道0和1是启用的。每个数据通道地址通过RX_ADDR_P<N>来配置。

    每个通道最高5字节地址。数据通道0拥有唯一的5字节地址。数据通道1~5共享后4字节地址。LSB字节必须与其他留个不同。

    使用MultiCeiver的PRX可以从多个PTX接收数据包。要确保PRX的ACK正确发到PTX,PRX接收的数据通道地址会处理对应TX地址的ACK。而PTX上的TX_ADDR与RX_ADDR_P0的地址必须相同。

     

    一个数据通道拿到完整的包以后,其他数据通道才会开始接收数据。当多个PTX一起发送到PRX时,ARD可以用于歪斜自动重发,因此他们只是互相阻塞。

    7.7   时序图

    @page 42-44

    7.8   事务流程图

    自动包处理的脚本。下载(Download=DL)是包到MCU,而上传(Upload=UL)是将负载送入发射机。

    7.8.1   单一事务包含ACK和中断

    如下包含自动应答。在包被PTX发送并接到PRX的ACK包之后。PRX的RX_DR被设置,而PTX接收到ACK并设置TX_DS。

     

    7.8.2   单一事务包含丢包

    如下是包含重传的,第一个包丢了。在包被发送之后,PTX进入RX模式来接收ACK包。第一次发送后,PTX等待ACK包超时,就会重新发送这个包。

     

    当一个地址发现PTX在RX模式直到接到数据包。当重发的包被PRX接收到,RX_DR事件就发生,并发出ACK到PTX。当ACK被PTX收到,就发生TX_DS事件。

    7.8.3   单一事务包含丢失ACK包

    丢失ACK包之后还要重传,对应中断也是现在的。

     

    7.8.4   单一事务包括ACK载荷包

    如下是基本的自动应答包含载荷。在PTX发送数据包,PRX接收数据包后,ACK+载荷就会从PRX发到PTX。之后PRX的RX_DR才被设置,而PTX的TX_DS在接到应答包后,新的包被接收了才设置。具体事件取看对应的IRQ。

     

    7.8.5   单一事务包括ACK载荷和丢包

    第一个包丢了,并在PRX的RX_DR设置前重传。对PTX,在收到ACK包以后会设置TX_DS和RX_DR。在第二个包(PID=2)被PRX收到后,同时设置RX_DR(PID=2)和TX_DS(ACK包载荷)事件。

     

    7.8.6   两个事务包括ACK载荷和第一个ACK包丢失

    ACK包丢失,PTX需要重传,然后才设置TX_DS,但RX_DR会立即设置。重传的包(PID=1)结果被丢弃。对于PTX,TX_DS和RX_DR都会在收到第二次发射的ACK后设置。在第二个包(PID=2)被PRX收到后,RX_DR(PID=2)和TX_DS(ACK1PAY)会被设置。

     

    7.8.7   两个事务,到达最大重传次数

    MAX_RT是在ARC_CNT到达ARC时被设置的。包重传以MAX_RT结束。TX_FIFO种的载荷不会倍删除,而由MCU决定下一步如何处理。一个CE的翻转会重新开始发射序列。FLUSH_TX可以删除TX_FIFO种的内容。

     

    7.9   兼容ShockBurst

    要兼容nRF2401A、nRF2402、nRF24E1、nRF24E2,必须禁用Enhanced ShockBurst功能。设置EN_AA=0x00和ARC=0来禁用。另外nRF24L01+的空中速率必须是1Mbps或2Mbps。

    nRF24L01+是支持Enhanced ShockBurst的,而其他同一公司的产品则是支持ShockBurst。

    7.9.1   ShockBurst包结构

    前言1字节

    地址3~5字节

    载荷1~32字节

    CRC 1~2字节

    Enhanced ShockBurst与ShockBurst的包结构区别:

    1. 后者没有9bit的Packet Control字段
    2. CRC是后者可选的,使用CONFIG.EN_CRC来控制

    8   数据和控制接口

    数据和控制接口允许访问nRF24L01+的所有功能。使用6个5V容忍的数字信号:

    1. IRQ:低电平有效,由3个可屏蔽中断源来控制
    2. CE:高电平有效,用以激活RX或TX模式
    3. CSN:SPI片选
    4. SCK:SPI时钟
    5. MOSI:SPI数据
    6. MISO:SPI数据

    使用1字节SPI命令,可以激活nRF24L01+的数据FIFO或寄存器映射,在任何模式。

    8.1   功能

    1. 指定SPI命令用以快速访问大部分常用功能
    2. 0-10Mbps,4线SPI
    3. 8bit命令集
    4. 基于配置的寄存器映射
    5. 全三级FIFO用于TX和RX方向

    8.2   功能描述

    SPI是标准的SPI,最高速率10Mbps。

    8.3   SPI操作

    8.3.1   SPI命令

    SPI命令如下表,每个新的命令必须以CSN的下降沿开始。

    STATUS寄存器的值,会在SPI命令字输入的同时输出。

    串行的SPI命令格式如下:

    1. 命令字:MSB到LSB
    2. 数据字节:LSB到MSB,每个字节中MSB

    命令名

    命令字

    字节数

    操作

    R_REGISTER

    000A-AAAA

    1~5字节,LSB优先

    读取命令和STATUS寄存器,AAAAA为5bit的寄存器地址

    W_REGISTER

    001A-AAAA

    1-5字节,LSB优先

    写入命令和STATUS寄存器,AAAAA为5bit的寄存器地址, 仅在掉电和待机可用

    R_RX_PAYLOAD

    0110-0001

    1~32字节,LSB优先

    读取RX载荷,1~32字节,读出后自动删除FIFO,用于RX模式

    W_TX_PAYLOAD

    1010-0000

    1~32字节,LSB优先

    写入TX载荷,1~32字节,用于TX模式

    FLUSH_TX

    1110-0001

    0

    清空TX FIFO,用于TX模式

    FLUSH_RX

    1110-0010

    0

    清空RX FIFO,用于RX模式,不应该在传输期间执行,否则无应答

    REUSE_TX_PL

    1110-0011

    0

    用于PTX设备,复用上次发送载荷,TX载荷被复用直到 W_TX_PAYLOAD或FLUSH_TX被执行,不能在传输期间改变复用状态

    R_RX_PL_WID

    0110-0000

    1

    读取RX载荷宽度,用于顶层RX FIFO的R_RX_PAYLOAD, 读取值大于32字节则表示RX FIFO被清空了

    W_ACK_PAYLOAD

    1010-1PPP

    1~32字节,LSB优先

    用于RX模式,写载荷供发送,以及ACK包到管道PPP(PPP在000~101间), 最大3个ACK包载荷可以在未决,相同PPP的载荷按先入先出规则

    W_TX_PAYLOAD_NOACK

    1011-0000

    1~32字节,LSB优先

    用于TX模式,禁用AUTOACK在这个特定的包

    NOP

    1111-1111

    0

    无操作,用以读取STATUS寄存器

    如上的R_RX_PL_WID、W_ACK_PAYLOAD、W_TX_PAYLOAD_NOACK需要FEATURE寄存器的设置。

    W_REGISTER和R_REGISTER命令基于单字节或多字节寄存器。当访问多字节寄存器时,读写是LSB优先。你可以在所有字节写入前终止写入,此时离开会保持后续的MSB部分字节不变。例如RX_ADDR_P0的LSB可以通过修改一个字节来改变。而STATUS寄存器总是在CSN拉低后首次SPI通信输出。

    STATUS寄存器的3bit管道信息会在IRQ的下降沿更新。在IRQ从高到低转换过程中STATUS寄存器的管道信息是不可信的。

    8.3.2   SPI时序

    SPI操作和时序如下图。nRF24L01+必须在待机或掉电模式才能哪过写配置寄存器。

    如下缩写:

    1. Cn:SPI命令位
    2. Sn:STATUS寄存器位
    3. Dn:数据位,LSB到MSB,每个字节里MSB优先

     

    如下则是表格22和27对应的R_pull和C_load:

     

    @page 53-55 后续是一堆表格,展示各种时序对应的时间

    8.4   数据FIFO

    数据FIFO存储传输的载荷(TX_FIFO)或接收的载荷(RX_FIFO)。FIFO可以在PTX模式或PRX模式访问。

    nRF24L01+有如下FIFO:

    1. TX三级,32byte FIFO
    2. RX三级,32byte FIFO

    这两个FIFO都有控制器,并通过SPI访问,使用特定的SPI命令。一个PRXTX FIFO可以存储ACK包载荷对应三个不同的PTX设备。如果TX_FIFO包含多余一个载荷,载荷使用先入先出策略处理。PRX的TX_FIFO在地址到管道连接的PTX丢失时会阻塞。此时,MCU可以清空TX_FIFO,通过FLUSH_TX命令。

    PRX的RX_FIFO可以包含载荷,来自最高3个不同的PTX设备,一个PTX的TX_FIFO可以最高存储3个载荷。

    可以用W_TX_PAYLOAD写TX_FIFO,以及PTX模式的W_TX_PAYLOAD_NO_ACK和PRX模式的W_ACK_PAYLOAD。所有三个命令都提供了访问TX_PLD寄存器。

    RX_FIFO可以在PTX/PRX模式通过R_RX_PAYLOAD读取。这个命令提供了RX_PLD寄存器的访问。

    PTX模式的TX_FIFO载荷在MAX_RT IRQ发生时不会被删除。

     

    可以通过FIFO_STATUS寄存器获得TX_FIFO或RX_FIFO是否为满或空的信息。

    8.5   中断

    nRF24L01+有个低电平有效的IRQ引脚。可以通过TX_DS、RX_DR、MAX_RT来激活。IRQ通过STATUS寄存器设置为高,IRQ会在MCU写1到STATUS对应的中断源为1时复位。IRQ屏蔽在CONFIG寄存器,用以选择允许哪些事件来激活IRQ。通过设置MASK位,对应的中断源可以被禁用。缺省所有中断源都启用。

    STATUS的3bit管道信息在IRQ的下降沿更新。在IRQ的下降沿时读取STATUS不可信。

    9   寄存器映射

    通过SPI访问如下寄存器映射来控制和访问。

    9.1   寄存器映射表

    所有未定义的位都是多余的,读出的值都是0。

    地址0x18到0x1b都保留供测试目的,修改他们可能导致芯片功能异常。

    Reserved对应的位,如果需要写则必须写0。

    9.1.1   CONFIG-配置寄存器

    地址:0x00,默认值0x08。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    MASK_RX_DR

    MASK_TX_DS

    MASK_MAX_RT

    EN_CRC

    CRCO

    PWR_UP

    PRIM_RX

    默认值

    0

    0

    0

    0

    1

    0

    0

    0

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. MASK_RX_DR:屏蔽RX_DR中断,1=中断不影响IRQ,0=映射RX_DR为低电平激活IRQ
    2. MASK_TX_DS:屏蔽TX_DS中断,1=中断不影响IRQ,0=映射TX_DS为低电平激活IRQ
    3. MASK_MAX_RT:屏蔽MAX_RT中断,1=中断不影响IRQ,0=映射MAX_RT为低电平激活IRQ
    4. EN_CRC:启用CRC,如果EN_AA中任意一位为高,则自动启用
    5. CRCO:CRC编码样式,0=1字节,1=2字节
    6. PWR_UP:上电,1=上电,0=掉电
    7. PRIM_RX:RX/TX控制,1=PRX、0=PTX

    9.1.2   EN_AA-Enhanced ShockBurst的自动应答控制

    地址0x01,默认值0x3f。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    ENAA_P5

    ENAA_P4

    ENAA_P3

    ENAA_P2

    ENAA_P1

    ENAA_P0

    默认值

    0

    0

    1

    1

    1

    1

    1

    1

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. ENAA_P<N>:启用数据通道<N>的自动应答,N取0~5

    9.1.3   EN_RXADDR-启用RX接收地址

    地址0x02,默认值0x03。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    ERX_P5

    ERX_P4

    ERX_P3

    ERX_P2

    ERX_P1

    ERX_P0

    默认值

    0

    0

    0

    0

    0

    0

    1

    1

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. ERX_P<N>:启用数据通道<N>,N取0~5

    9.1.4   SETUP_AW-设置地址宽度

    地址0x03,默认值0x03,应用于所有数据通道。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    AW

    AW

    默认值

    0

    0

    0

    0

    0

    0

    1

    1

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. AW:RX/TX地址字段宽度,00=无效,01=3字节,10=4字节,11=5字节

    如果地址长度低于5字节,则优先使用LSB。

    9.1.5   SETUP_RETR-自动重发设置

    地址0x04,默认值0x03。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    ARD

    ARD

    ARD

    ARD

    ARC

    ARC

    ARC

    ARC

    默认值

    0

    0

    0

    0

    0

    0

    1

    1

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. ARD:自动重发的延迟,0000=250uS,0001=500uS,0010=750uS,继续向上每次递增250uS,直到1111=4000uS
    2. ARC:自动重发次数,0000=禁用,0001=1次重发,继续向上,1111=15次重发

    ARD延迟的定义是上次发送结束到下次发送之前的时间。ARD是PTX在重传之前等待ACK包的时间,如果PTX在RX模式有250uS(500uS@250kbps)等待地址匹配。如果检测到地址匹配,会保持RX模式一直到包结束,除非ARD到达。然后进入待机II模式来等待剩余的ARD。在ARD之后进入TX模式,然后重传包。

    ARD的定义需要小心,如果ACK载荷超过15byte @ 2Mbps,则ARD必须>=500uS,如果ACK载荷5byte @ 1Mbps,则ARD>=500uS,在250kbps模式,哪怕载荷不在ACK中,ARD>=500uS。

    9.1.6   RF_CH-射频频道

    地址0x05,默认值0x02。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    RF_CH

    RF_CH

    RF_CH

    RF_CH

    RF_CH

    RF_CH

    RF_CH

    默认值

    0

    0

    0

    0

    0

    0

    1

    0

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. RF_CH:设置频率通道

    9.1.7   RF_SETUP-射频设置

    地址0x06,默认值0x0e。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    CONT_WAVE

    Reserved

    RF_DR_LOW

    PLL_LOCK

    RF_DR_HIGH

    RF_PWR

    RF_PWR

    Obsolete

    默认值

    0

    0

    0

    0

    1

    1

    1

    0

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. CONT_WAVE:启用持续发送
    2. RF_DR:设置数据速率,注意高位和低位,00=1Mbps、01=2Mbps、10=250kbps、11=保留
    3. PLL_LOCK:强制PLL锁定信号,仅用于测试
    4. RF_PWR:发射输出功率,00=-18dBm、01=-12dBm、10=-6dBm、11=0dBm
    5. Obsolete:无所谓

    9.1.8   STATUS-状态寄存器

    地址0x07,默认值0x0e。在SPI命令模式,输入命令字的时候输出的就是STATUS的值。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    RX_DR

    TX_DS

    MAX_RT

    RX_P_NO

    RX_P_NO

    RX_P_NO

    TX_FULL

    默认值

    0

    0

    0

    0

    1

    1

    1

    0

    读写

    RW

    RW

    RW

    RW

    R

    R

    R

    R

    1. RX_DR:数据就绪,RX_FIFO中断,写1清零
    2. TX_DS:数据发送出去了,TX_FIFO中断,如果AUTO_ACK被激活,当收到ACK后才会设置为1,写1清零
    3. MAX_RT:达到最大重发次数中断,写1清零,如果达到了则必须清零后才能继续通信
    4. RX_P_NO:收到数据载荷的管道,000-101对应数据管道,110未用,111=RX_FIFO空
    5. TX_FULL:TX_FIFO满了

    RX_DR事件断言新的包到达事件。处理这个中断的流程是:

    1. 通过SPI读取载荷
    2. 清除RX_DR IRQ
    3. 读取FIFO_STATUS来检查是否还有RX_FIFO的包可用
    4. 如果RX_FIFO中还有数据,就继续回到1读取

    9.1.9   OBSERVE_TX-发射观察

    地址0x08,默认值,0x00。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    PLOS_CNT

    PLOS_CNT

    PLOS_CNT

    PLOS_CNT

    ARC_CNT

    ARC_CNT

    ARC_CNT

    ARC_CNT

    默认值

    0

    0

    0

    0

    0

    0

    0

    0

    读写

    R

    R

    R

    R

    R

    R

    R

    R

    1. PLOS_CNT:对丢包计数,最高到15来溢出保护,知道复位前不会继续,写RF_CH来复位计数器
    2. ARC_CNT:对重发计数,计数器在新的包开始后复位

    9.1.10   RPD-接受功率检测器

    地址0x09,默认值0x00。与nRF24L01不同。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    RPD

    默认值

    0

    0

    0

    0

    0

    0

    0

    0

    读写

    R

    R

    R

    R

    R

    R

    R

    R

    1. RPD:接收功率检测器,在nRF24L01里叫CD(Carrier Detect),对应不同的输入功率门限

    9.1.11   RX_ADDR_P<N>-接收地址<N>

    N取0~5,地址0x0a~0x0f。0x0a的默认值0xe7e7e7e7e7,0x0b默认值0xc2c2c2c2c2,后续4个寄存器的后4字节必须与0x0b的后4字节相同,第一字节分别是0xc3、0xc4、0xc5、0xc6,即LSB。

    最大允许5字节地址,LSB优先,有效地址长度由SETUP_AW决定。

    9.1.12   TX_ADDR-发送地址

    地址0x10,默认值0xe7e7e7e7e7。

    仅用于PTX设备,LSB优先。设置RX_ADDR_P0等于这个地址来处理自动包应答,如果这个设备也支持Enhanced ShockBurst。

    9.1.13   RX_PW_P<N>-接收数据宽度

    N取0~5,地址0x11~0x16。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    RX_PW_<N>

    RX_PW_<N>

    RX_PW_<N>

    RX_PW_<N>

    RX_PW_<N>

    RX_PW_<N>

    默认值

    0

    0

    0

    0

    0

    0

    0

    0

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. RX_PW_P<N>:数据通道<N>的接收数据载荷字节数,0=该通道未用,1~32字节

    9.1.14   FIFO_STATUS-FIFO状态

    地址0x17,默认值0x11。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    TX_REUSE

    TX_FULL

    TX_EMPTY

    Reserved

    Reserved

    RX_FULL

    RX_EMPTY

    默认值

    0

    0

    0

    1

    0

    0

    0

    1

    读写

    RW

    R

    R

    R

    RW

    RW

    R

    R

    1. TX_REUSE:仅用于PTX设备,脉冲rfce为高至少10uS来复用上次发送的载荷;TX载荷复用在W_TX_PAYLOAD或FLUSH_TX执行前一直有效,TX_REUSE通过SPI命令REUSE_TX_PL来设置,通过W_TX_PAYLOAD或FLUSH_TX来复位
    2. TX_FULL:TX_FIFO满,1=满,0=还有有效位置
    3. TX_EMPTY:TX_FIFO空,1=空,0=TX_FIFO中有数据
    4. RX_FULL:RX_FIFO满,1=满,0=还有有效位置
    5. RX_EMPTY:RX_FIFO空,1=空,0=RX_FIFO中有数据

    9.1.15   ACK_PLD-应答包载荷

    无地址,无默认值。长度256bit。只能写不能读。

    用W_ACK_PAYLOAD来写入到数据通道PPP。仅用于RX模式。最大3个ACK包载荷可以在未决状态。相同PPP的载荷,先入先出。

    9.1.16   TX_PLD-发射载荷

    无地址,无默认值。长度256bit。只能写不能读。

    用W_TX_PAYLOAD来写入1~32字节。这个寄存器实现为FIFO,有3级。仅用于TX模式。

    9.1.17   RX_PLD-接收载荷

    无地址,无默认值。长度256bit。只能读不能写。

    用R_RX_PAYLOAD读出,1~32字节。实现为3级FIFO。所有RX通道共享相同的FIFO。

    9.1.18   DYNPD-启用动态载荷长度

    地址0x1c,默认值0x00。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    DPL_P5

    DPL_P4

    DPL_P3

    DPL_P2

    DPL_P1

    DPL_P0

    默认值

    0

    0

    0

    0

    0

    0

    0

    0

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. DPL_P<N>:启用数据通道<N>的动态载荷长度,需要EN_DPL和ENAA_P<N>

    9.1.19   FEATURE-功能寄存器

    地址0x1d,默认值0x00。

    bit No

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    EN_DPL

    EN_ACK_PAY

    EN_DYN_ACK

    默认值

    0

    0

    0

    0

    0

    0

    0

    0

    读写

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    RW

    1. EN_DPL:启用动态载荷长度
    2. EN_ACK_PAY:允许载荷带ACK
    3. EN_DYN_ACK:允许W_TX_PAYLOAD_NOACK命令

    如果ACK包载荷被激活(EN_ACK_PAY),ACK包哟你欧冠有动态载荷长度,以及动态载荷长度应该在PTX和PRX设备的pipe0启用。这确保了他们可以接收到带有载荷的ACK包。如果ACK载荷多于15字节,在2Mbps模式,ARD必须是500uS或以上,如果ACK载荷多于5字节,在1Mbps模式,ARD必须在500uS或以上。在250kbps模式(哪怕载荷不在ACK中),ARD也必须在500uS以上。

    10   外设RF信息

    外设电路与PCB布局需求,这些都会影响nRF24L01+的性能。

    @page 64-65

    11   应用示例

    只有单端匹配网络晶振,偏置电阻和解耦电容:

     

    @page 66-70 只有电路设计的例子

    12   机械规范

    @page 71-72

    13   订购信息

    @page 73-73

    14   术语表

    @page 74-74

    15   附录A 配置和通信实例

    Enhanced ShockBurst发送载荷:

    1. 设置CONFIG.PRIM_RX=0
    2. 把接收端地址TX_ADDR和载荷数据TX_PLD通过SPI写入nRF24L01+,发送数据宽度会在写入TX FIFO时自动计数;TX_PLD在CSN=0时必须持续写入,TX_ADDR如果没有改变则不用重新写入;如果PTX设备要接收应答,配置数据通道0为接收ACK包;RX_ADDR_P0必须等于TX_ADDR
    3. 一个CE上的高电平脉冲会开启发送,脉冲最小宽度10uS
    4. nRF24L01+ ShockBurst:
      1. Radio上电
      2. 16MHz内部时钟启动
      3. RF包完成
      4. Data发送以高速度
    5. 如果自动应答开启了(ENAA_P0=1),芯片会立即进入RX模式,除非接收包使用了NO_ACK位;如果收到有效的包并在有效应答时间内,发送会看做成功,STATUS.TX_DS=1,TX_FIFO被清空;如果没能在时间窗口内收到有效的ACK包,载荷会被重新发送(启用了自动重发);如果自动重发计数器ARC_CNT到达最大值ARC,STATUS.MAX_RT=1,TX_FIFO中的载荷不会被清空;如果MAX_RT或TX_DS为高,则IRQ会激活,要关闭IRQ,写STATUS对应中断源;如果重发后还没收到ACK,则MAX_RT中断被清除之前不会发送任何包了;丢包计数器PLOS_CNT会在每次MAX_RT中断时自增;这是因为ARC_CNT对重发计数,需要通过一个包,PLOS_CNT计数没有在最大重发后通过的包数量
    6. nRF24L01+会在CE=0时进入待机I模式,否则下一个TX_FIFO载荷会被发送,如果CE=1时TX_FIFO为空,则nRF24L01+进入待机II模式
    7. 如果nRF24L01+在待机II模式,CE=0时会立刻进入待机I模式

    Enhanced ShockBurst接收载荷:

    1. 通过CONFIG.PRIM_RX=1选中RX模式,所有要接收数据的管道都需使用EN_RXADDR启用,用EN_AA启用自动应答进入Enhanced ShockBurst模式,用RX_PW_P<N>设置正确的载荷宽度,设置地址通过发射流程的第二步
    2. 让CE进入高电平激活RX模式
    3. 在130uS后,nRF24L01+会开始监听输入的通信
    4. 当收到有效数据包(地址匹配且CRC正确),载荷会存入RX_FIFO,STATUS.RX_DR=1,IRQ会被激活,STATUS.RX_P_NO指出实际收到数据的管道
    5. 如果启用了自动应答,会自动发送ACK包,除非接收到的包有NO_ACK位,如果TX_PLD FIFO中有载荷,载荷会自动添加ACK包
    6. MCU设置CE进入低电平进入待机I模式(低电流模式)
    7. MCU可以读出数据
    8. nRF24L01+现在可以进入TX、RX、掉电模式

    16   附录B 配置兼容nRF24XX

    @page 77-77

    17   附录C 测试波形

    @page 78-78



    已有 0 人发表留言,猛击->>这里<<-参与讨论


    ITeye推荐
    • —软件人才免语言低担保 赴美带薪读研!—





沪ICP备19023445号-2号
友情链接