arduino笔记37:nrf24l01的数据缓冲区(TX FIFO、RX FIFO)

本文档详细介绍了nRF24L01无线收发芯片的数据缓冲区管理,包括如何写入TX FIFO、读取RX FIFO、清空FIFO以及检查FIFO状态等操作。重点讲解了W_TX_PAYLOAD、FLUSH_TX、REUSE_TX_PL、FLUSH_RX和R_RX_PAYLOAD/R_RX_PL_WID等相关指令的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

从本节开始,关于nrf24l01使用,我只会讲和【Enhanced ShockBurst( 增强型短时猝发工作模式 )】有关的内容
【Enhanced ShockBurst】就是前面屡次提到的【自动回复】工作模式的官方称呼。

所以那种使用PTX/PRX身份互换而实现双向通信的方式就不会做太多涉及了,因为这两种模式对模块的使用差别非常大,交叉写的话可能会对初学的同学造成困扰,对期待这部分内容的同学表示抱歉。

而其实,对于PTX/PRX身份互换双向通信的方式,当你对通信可靠性(丢包/确认/超时/重发)有很高要求时,仔细考虑一下,你会豁然发现,这些要求不早就在【Enhanced ShockBurst】中得到满足了嘛!
 
上一节在描述状态迁移条件时,简单提过nrf24l01内部数据缓冲区的问题,这节正式讲解一下:

 

 

上面这个图就是缓冲区的框图。

可以看到,nrf24l01既有 发送缓冲区 TX FIFO ,也有 接收缓冲区 RX FIFO

FIFO意思是先入先出队列,一个数据结构的概念,不多说,不了解的可以搜索引擎之。
 
首先需要说明的是:
仅就数据无线传输这个功能来说,数据缓冲区并不是必要的,这个东西仅仅是为了缓解SPI接口和射频模块之间数据传输速度差距巨大的问题而存在的。

就算不给nrf24l01设计这两组缓冲区,无线传输照样可以实现。

实际上,我相信绝大多数人在使用nrf24l01进行双向通信的时候,根本没把【 数据缓冲 】的这个功能利用上:
发一包 --> 收一包 --> 再发一包 --> 再收一包 【你中枪了没?】
 
不管是发数据还是收数据,我们的程序其实只和T X/RX FIFO 打交道:
发送数据时,程序通过SPI指令将数据写入TX FIFO,启动发送后,nrf24l01再从TX FIFO中取出数据发送出去;
接收数据时,nrf24l01先将收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值