完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
nRF24L01+ 数据手册
目录
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+支持的功能:
2 引脚信息 2.1 引脚分配 2.2 引脚功能 DI=Digital Input,DO=Digital Output,AI=Analog Input、AO=Analog Output,PO=Power Output。
超过如下数值会导致永久性损坏。
@page 14-20 一堆的表格参数 6 无线控制 本章描述nRF24L01+无线收发器的操作模式和控制参数。 nRF24L01+有内置的状态机来控制收发器的工作模式。状态机接收用户定义的寄存器数值和内部信号作为输入。 6.1 工作模式 可配置的工作模式:掉电、待机、RX、TX模式。 6.1.1 状态图 如下状态图展示了操作模式,及其功能。有三种类型的严格状态。
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 操作模式配置 如何配置操作模式:
如果CE为一个大于10uS的高电平脉冲。则允许发送一个数据包,这是平常的操作模式。在包发送完成后,进入待机I模式。 6.1.7 时序信息 这里的时序信息是关于模式之间过渡的,以及CE引脚。从TX到RX模式的过渡,或相反(vice versa),以及待机模式与TX/RX模式之间的过渡都是相同的时间,最大130uS。
如果掉电时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设置:
6.6 RX/TX控制 RX和TX的控制通过CONFIG寄存器的PRIM_RX位来控制。 7 Enhanced ShockBurst (TM) Enhanced ShockBurst是基于包的数据链路层,支持自动包组装和计时,自动应答和重发。允许实现超低功耗,和高性能的通信,在低成本的MCU。功能允许显著改善功效,无论是单向还是双向通信系统,而无需增加唉上位机的复杂性。 7.1 功能 Enhanced ShockBurst的主要功能:
用于自动包处理和时序。在发射时,会组装包,并时钟输出数据包的每个位来发射。在接收时,会在调制信号搜索有效地址。当找到有效地址,会处理包剩余的部分,并验证CRC。如果包有效,载荷会移动到空的RX_FIFO。所有高速位处理和时序都由ShockBurst控制。 Enhanced ShockBurst功能的自动包事务管理,使得实现双向灵活数据连接变得简单。一个包事务是在两个收发器之间的数据包交换,包括一个收发器作为主接收机(PRX=Primary Receiver),以及其他收发器作为主发射机(PTX=Primary Transmitter)。一个包事务总是通过一次PTX的包发送来初始化,事务在发射机接到PRX的应答包后完成。PRX可以在ACK包附加用户数据来实现双向数据连接。 自动包事务管理工作如下:
7.3 Enhanced ShockBurst包格式 Enhanced ShockBurst的包按照如下格式,包含包头、地址、包控制、载荷、CRC,MSB优先在左侧。
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模式的周期基于如下条件:
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的启动时间和空中时间:
对250kbps和5字节地址,如下值的限制:
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功能。 如下设置对所有数据通道共用的:
每个通道最高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包结构
数据和控制接口允许访问nRF24L01+的所有功能。使用6个5V容忍的数字信号:
8.1 功能
SPI是标准的SPI,最高速率10Mbps。 8.3 SPI操作 8.3.1 SPI命令 SPI命令如下表,每个新的命令必须以CSN的下降沿开始。 STATUS寄存器的值,会在SPI命令字输入的同时输出。 串行的SPI命令格式如下:
W_REGISTER和R_REGISTER命令基于单字节或多字节寄存器。当访问多字节寄存器时,读写是LSB优先。你可以在所有字节写入前终止写入,此时离开会保持后续的MSB部分字节不变。例如RX_ADDR_P0的LSB可以通过修改一个字节来改变。而STATUS寄存器总是在CSN拉低后首次SPI通信输出。 STATUS寄存器的3bit管道信息会在IRQ的下降沿更新。在IRQ从高到低转换过程中STATUS寄存器的管道信息是不可信的。 8.3.2 SPI时序 SPI操作和时序如下图。nRF24L01+必须在待机或掉电模式才能哪过写配置寄存器。 如下缩写:
如下则是表格22和27对应的R_pull和C_load: @page 53-55 后续是一堆表格,展示各种时序对应的时间 8.4 数据FIFO 数据FIFO存储传输的载荷(TX_FIFO)或接收的载荷(RX_FIFO)。FIFO可以在PTX模式或PRX模式访问。 nRF24L01+有如下FIFO:
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。
地址0x01,默认值0x3f。
地址0x02,默认值0x03。
地址0x03,默认值0x03,应用于所有数据通道。
9.1.5 SETUP_RETR-自动重发设置 地址0x04,默认值0x03。
ARD的定义需要小心,如果ACK载荷超过15byte @ 2Mbps,则ARD必须>=500uS,如果ACK载荷5byte @ 1Mbps,则ARD>=500uS,在250kbps模式,哪怕载荷不在ACK中,ARD>=500uS。 9.1.6 RF_CH-射频频道 地址0x05,默认值0x02。
地址0x06,默认值0x0e。
地址0x07,默认值0x0e。在SPI命令模式,输入命令字的时候输出的就是STATUS的值。
地址0x08,默认值,0x00。
地址0x09,默认值0x00。与nRF24L01不同。
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。
地址0x17,默认值0x11。
无地址,无默认值。长度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。
地址0x1d,默认值0x00。
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发送载荷:
|
||||||||
|
||||||||
只有小组成员才能发言,加入小组>>
4522个成员聚集在这个小组
加入小组3339 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4268 浏览 1 评论
4295 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 13:20 , Processed in 0.694543 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号