NRF24L01+中文翻译之附录(五)



附录 A - 增强型 ShockBurst - 配置和通信示例

增强 ShockBurst™传输有效载荷

1.将配置位 PRIM_RX 设置为低电平。

2.当应用 MCU 有数据要发送时,通过 SPI 锁定接收节点地址(TX_ADDR)和加载有效负载数据(TX_PLD)到 nRF24L01 +中。发送有效载荷的长度是通过 MCU 写入 TX FIFO 的字节数计算出来的。保持 CSN 为低电平时,TX_PLD 必须连续写入。如果 TX_ADDR 与上次传输不变,则 TX_ADDR 不必重写。如果 PTX 设备需要接收应答信号,则需要事先配置数据管道 0 接收 ACK 数据包。数据通道 0 的 RX 地址(RX_ADDR_P0)必须等于 PTX 设备中的 TX 地址(TX_ADDR)。有关第 41 页上的图 14 中的示例,请为 TX5 设备和 RX 设备执行以下地址设置:

TX5 设备:TX_ADDR = 0xB3B4B5B605

TX5 器件:RX_ADDR_P0 = 0xB3B4B5B605

RX 设备:RX_ADDR_P5 = 0xB3B4B5B605

3. CE 上的高脉冲开始传输。 CE 上的最小脉冲宽度为 10μs。

4. nRF24L01 + ShockBurst™:

无线电启动。

16MHz 内部时钟启动。

射频数据包已完成(请参阅数据包说明)。

数据以高速传输(由 MCU 配置 1Mbps 2Mbps)。

5.如果自动确认已激活(ENAA_P0 = 1),则 PTX 立即进入 RX 模式,除非收到的数据包中设置了 NO_ACK 位。如果在有效确认时间窗口中接收到有效数据包,则认为传输成功,STATUS 寄存器中的 TX_DS 位设置为高电平,并将有效负载从 TX FIFO 中移除。如果在指定的时间窗口内未收到有效的 ACK 数据包,则重新传送有效载荷(如果启用自动重新传输)。如果自动重发计数器(ARC_CNT)超过编程的最大限制值(ARC),则 STATUS 寄存器中的 MAX_RT 位置高。TX FIFO 中的有效载荷不会被删除。当 MAX_RT 或 TX_DS 为高电平时,IRQ 引脚有效。要关闭 IRQ 引脚,通过写入 STATUS 寄存器来复位中断源(参见中断章节)。如果在最大重传次数后没有收到 ACK 数据包,则在 MAX_RT 中断清零之前不能再发送数据包(译者注:一旦清零,则继续发送上一次的数据)。数据包丢失计数器(PLOS_CNT)在每次 MAX_RT 中断时递增。也就是说,ARC_CNT 计算获得单个数据包所需的重传次数。 PLOS_CNT 计算最大重传次数后没有通过的数据包数量。

6.如果 CE 为低电平,nRF24L01 +进入待机 I 模式。否则,发送 TX FIFO 中的下一个有效载荷。如果 TX FIFO 为空而 CE 仍然为高电平,nRF24L01 +进入待机 II 模式(译者注:可以在待机 II 模式下继续写入数据)。

7.如果 nRF24L01 +处于待机 II 模式,如果 CE 设置为低电平,立即进入待机 I 模式。

8.可以通过设置将发送端的发送速度最大化,可以利用 REUSE_TX_PL 操作指令,不断的发送,当然也可以放到接收中断中,但是要注意在使用这个操作指令前需要发送数据一次。(译者加)

9.可以通过查看 RPD(Received PowerDetector)接收功率检测器查看现在信号是否强,只有两个值 0 和 1,当射频信号高于 -64 dBm 时为 1,低于时为 0,其实在这个主要是用来设置射频信号功率的,用于节能。(译者加)

10. 这些功能只有在挪威的 NRF24L01+上才能使用,不带+的不行,有一种台湾产的也不太好用。 接收到的功率探测器(RPD),位于寄存器 09,位 0,在接收功率级以上-64dBm 的触发点,在你接收的射频通道中存在。如果接收到的功率小于- 64dbm,则 RDP = 0RPD 可以在任何时候读取,而 nRF24L01+处于接收模式。这提供了通道中当前接收到的功率级的快照。当收到一个有效的数据包时,RPD 状态被锁定,然后从你自己的发射机显示信号强度。如果没有收到数据包 RPD 锁定的接收期间由于主机单片机设置 CE 低或 RX 超时控制增强 ShockBurst™RX 模式启用时 RPD 的状态是正确的,在 Tstby2a +Tdelay_AGC=130us + 40us 的等待时间之后。RX 增益随温度变化,这意味着 RPD 阈值也会变化。温度在 T = -40 时,RPD 阈值降低了- 5dB,在 85 时增加了+ 5dB(译者加)

增强 ShockBurst™接收有效载荷

1.通过将 CONFIG 寄存器中的 PRIM_RX 位设置为高来选择 RX 模式。必须启用所有需要接收数据的数据通道(EN_RXADDR 寄存器),为运行增强型 ShockBurst™(EN_AA 寄存器) 模式下的所有管道使能自动确认功能,并设置正确的有效负载宽度(RX_PW_Px 寄存器)。按照上述 Enhanced ShockBurst™传输有效载荷示例中的第 2 项中所述设置地址

2.通过将 CE 设置为高来启动主动接收模式。

3.130μs 后,nRF24L01 +监测进入通信的空气。

4.当收到一个有效的数据包(匹配地址和正确的 CRC)时,有效载荷存储在 RX-FIFO 中,且 STATUS 寄存器中的 RX_DR 位置高。当 RX_DR 为高电平时,IRQ 引脚有效。STATUS 寄存器中的 RX_P_NO 指示已接收有效负载的数据管道。

5.如果启用了自动确认功能,则将传回 ACK 数据包,除非收到的数据包中设置了 NO_ACK 位。如果 TX_PLD FIFO 中有有效载荷,则将该有效载荷添加到 ACK 数据包中。

6. MCU CE 引脚设置为低电平以进入待机 I 模式(低电流模式)。

7. MCU 可以通过 SPI 以合适的速率输出有效载荷数据。

8. nRF24L01 +现在已准备好进入 TX RX 模式或掉电模式。

附录 B - nRF24XX 兼容的配置

如何设置 nRF24L01 +从 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 接收:

1.使用与 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 相同的 CRC 配置。

2.将 PWR_UP 和 PRIM_RX 位设置为 1。

3.在被寻址的数据管道上禁用自动确认。

4.使用与 PTX 设备相同的地址宽度。

5.使用与 PTX 设备相同的频道。

6.在 nRF24L01 +和 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 上选择数据速率 1Mbps 或 250kbps。

7.在所寻址的数据管道上设置正确的有效负载宽度。

8.将 CE 设置为高。

如何将 nRF24L01 +设置为发送到 nRF2401 / nRF24E1:

1.使用与 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 相同的 CRC 配置。

2.将 PRIM_RX 位设置为 0。

3.将自动重传计数设置为 0 以禁用自动重传功能。

4.使用与 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 相同的地址宽度。

5.使用与 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 相同的频道。

6.在 nRF24L01 +和 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 上选择数据速率 1Mbps 或 250kbps。

7.将 PWR_UP 设置为高。

8.与 nRF2401 / nRF2402 / nRF24E1 / nRF24E2 配置为接收长度相同的有效负载中的时钟。

9.脉冲 CE 传输数据包。

附录 C - 用于测试的恒定载波输出

无线通信的输出功率是实现想要的范围的关键因素。 输出功率也是符合所有电信法规要求的第一个测试标准。

配置
1. CONFIG 寄存器中设置 PWR_UP = 1 PRIM_RX = 0

2.等待 1.5ms PWR_UP->待机。

3. RF 寄存器组中:

X CONT_WAVE = 1

X PLL_LOCK = 1

X RF_PWR

4.设置所需的 RF 信道。

5. CE 设置为高。

6.只要需要一直输出载波保持 CE 高。

注意:不要在 CONT_WAVE = 1 时使用 REUSE_TX_PL。当 CE 置低时两个寄存器都置位芯片不会产生反应。但是,如果两个寄存器都置位,PWR_UP = 0 将关闭 TX 模式。

现在 nRF24L01 +应该输出一个未调制的中心载波。


推荐阅读:

为什么说你一定要掌握 KEIL 调试方法?


-THE END-



如果觉得文章对你有帮助,欢迎转发、分享给朋友,感谢你的支持!


如果对本文有问题,欢迎留言!即使没有问题也可以留下的神评论


如需转载请联系我。


微信公众号「鱼鹰谈单片机

每周一更单片机知识

长按后识别图中二维码关注


    这位道友,请留步,点完再走可好