2 Star 5 Fork 0

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

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.33 KB
一键复制 编辑 原始数据 按行查看 历史
alicedodo 提交于 2020-07-07 18:43 . 一次性提交所有文件

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呗!

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

搜索帮助

53164aa7 5694891 3bd8fe86 5694891