nrf24l01 数据手册 -凯发k8国际

`
gashero
  • 浏览: 938464 次
  • 性别:
  • 来自: 北京
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 3)
    • ( 0)
    存档分类
    最新评论

    nrf24l01 数据手册

    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-接收地址
        • 9.1.12   tx_addr-发送地址
        • 9.1.13   rx_pw_p-接收数据宽度
        • 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

    数据在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来配置。

    每个通道最高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取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取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()等待地址匹配。如果检测到地址匹配,会保持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取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取0~5,地址0x11~0x16。

    bit no

    7

    6

    5

    4

    3

    2

    1

    0

    位段

    reserved

    reserved

    rx_pw_

    rx_pw_

    rx_pw_

    rx_pw_

    rx_pw_

    rx_pw_

    默认值

    0

    0

    0

    0

    0

    0

    0

    0

    读写

    rw

    rw

    rw

    rw

    rw

    rw

    rw

    rw

    1. rx_pw_p:数据通道的接收数据载荷字节数,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:启用数据通道的动态载荷长度,需要en_dpl和enaa_p

    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设置正确的载荷宽度,设置地址通过发射流程的第二步
    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
    2
    分享到:
    评论

    相关推荐

      nrf24l01 单芯片 2.4ghz 收发器产品数据手册 中文版 nrf24l01 是具有嵌入式基带协议引擎(enhanced shockburst)的单芯片 2.4ghz 收发器,适用于超 低功耗无线应用。nrf24l01 设计用于在 2.400-2.4835ghz 的全球 ...

      nrf24l01p-ek:文档、代码、硬件设计

      nrf24l01 半孔带天线 无线模块 51软件源码 protel原理图 数据手册等资料

      nrf24l01 中文数据手册及示例代码,包含中英文数据手册,应用手册,stm32,51示例代码,多对一发送接收代码等。

      nrf24l01 资料合集,包括以下部分: 1.单片机c语言代码: (1)stm32系列单片机的收发代码。 (2)stc12系列(增强版51单片机)单片机的收发代码。 2.nrf24l01 的芯片手册文档资料。

      nrf24l01 pa lna无线模块集成度极高,尺寸也只有45.54mm*16.46mm,方便嵌入于任何空间紧张的产品中,客户只要增加一个mcu通过spi口控制,nrf24l01 pa lna无线模块即可完成超远距离无线数据传送系统的设计。...

      nrf24l01

      nrf24l01_data 数据手册

      nrf24l01 是一款工作在 2.4~2.5ghz 世界通用 ism 频段的单片无线收发器芯片。无线收发器包括:频 率发生器、增强型 schockbursttm 模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、 频道选择和协议的...

      nrf24l01英文数据手册,讲解非常清楚,比中文的实用许多。

      nrf24l01数据手册;很详细,英文的!要的赶快下啊!

      nrf24l01--中文资料,详细的解释了nrf24l01驱动程序的编写

      无线收发芯片nrf24l01数据手册 中文版

      nrf24l01模块数据手册 用于无线数传,可以有多个通道

      51单片机控制的nrf24l01和stm32控制的nrf24l01进行实时通信(单点)

      射频模块中文数据手册很实用的工具书,射频开发必备

      nrf24l01 是一款工作在 2.4~2.5ghz 世界通用 ism 频段的单片无线收发器芯片 无线收发器包括:频 率发生器 增强型 schockburst tm 模式控制器 功率放大器 晶体振荡器 调制器 解调器 输出功率 频道选择和协议的设置可以...

      从网上收集到的nrf24l01中英文资料

      nrf24l01p_datasheet数据手册

      nrf24l01 一对六 无线232通信 中英文数据手册

    global site tag (gtag.js) - google analytics
    网站地图