2 Star 5 Fork 0

alicedodo / nrf24l01在PRX模式下ACK时机问题验证

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

nrf24l01 PRX ACK payload与130uS的关系验证

简述:

没什么特别的含义,只是写了一个nrf2401+芯片功能验证的测试代码,丢到这里供感兴趣的人查看。

代码拉下来可以直接放arduino里运行验证。

想自己验证的先看下面的实验条件。

起因:

许久之前在“arduino”中文社区发了一个nrf24l01入门相关的帖子,后来又网友对其中一个知识点提出质疑,原始回复链接:

https://www.arduino.cn/forum.php?mod=redirect&goto=findpost&ptid=86275&pid=555251

这个"PRX ACK payload和130uS关系"的知识点实在太偏僻,而且官方文档语焉不详,相当于彩蛋。

是我自己对文档理解加实验得出的结论,写出来之后当时也没觉得有人会感兴趣。

当时帖子打算就此弃坑(实在太忙^_^)了,不曾想几个月之后,还真有人对这内容感兴趣,见上面链接中的网友。

再后来两个多月后无意中登陆了一次社区账号,才发现了这条回复。
看得出这个回复比较用心,但很遗憾,得出的结论是错误的。

用心且错误的结论其误导性是最大的,为了避免后续看帖的人对帖子内容正确性的怀疑,也为了纠正这个网友,我把我的测试代码整理成了这个项目。

实验条件:

arduino uno/nano X 2
nrf24l01+模块 X 2

接线图(PTX/PRX均适用):

测试方法:回环测试

  1. PTX发一个字符串给PRX
  2. PRX收到数据后反转字符串,将反转结果作为ACK payload
  3. PRX尽量在130uS时间内将ACK写入TX FIFO
  4. PTX侧IRQ触发,检查TX-DS和RX-DR是否同时触发,取出结果
  5. 单轮测试结束

测试结论:

实测发现,2Mbps下,PRX在RX转TX的间隔(130uS)期间,如果想ACK立即生效,那么能处理的字符串最长不能超过16-18字节,距离理论上限有一定差距。

总结一下大概的原因(定性分析,未严格论证):
一是因为操作接口时序上没专门优化(每次SPI读写至少delay 2uS)
二是nrf24的SPI时钟速度没有用满(最高10M,实际用的8M)
三是MEGA328P性能不高(16M主频的8位机,要什么自行车)

最后:

几位爷,都看到这儿了,给个star呗!

MIT License Copyright (c) 2020 alicedodo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

nrf24l01+官方文档彩蛋测试例程: PRX端到底能不能在RX转TX的130uS时间内立即回复ACK payload给PTX端,以至于PTX在收到TX_DS IRQ时就能立即拿到ACK payload?? 展开 收起
C
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/alicedodo/nrf24l01_prx_130uS_on_arduino.git
git@gitee.com:alicedodo/nrf24l01_prx_130uS_on_arduino.git
alicedodo
nrf24l01_prx_130uS_on_arduino
nrf24l01在PRX模式下ACK时机问题验证
master

搜索帮助