我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

nRF24L01芯片驱动记录

来源:网络 更新时间:2024-09-17 09:33:52

学习了usb后,我打算在端午假期用一天的时间完成一个小目标:驱动nRF24L01芯片,实现nRF24L01芯片之间的通讯。然而实际情况是,这个小目标花了我一天半的时间才成功实现。现在我将记录驱动nRF24L01芯片的整个过程。

小目标

驱动nRF24L01芯片,实现nRF24L01芯片之间的通讯。

在淘宝问客服找驱动代码

一开始,由于贪图便宜,我选择了一个非官方的淘宝店铺购买芯片。虽然便宜了几块钱,但是所提供的资料相对不全,而且比较陈旧。在商家描述里,资料中包含了上位机,然而我找遍整个压缩文件也没有找到。之后联系客服,却得到了诸多阻碍和不周到的回答。最终,我在另一个淘宝店铺找到了上位机的下载链接,这样我可以用电脑替代nRF24L01的一端,并确保没有错误。

整理客服提供的驱动代码后,发现没有一个是我可以直接使用的。考虑到驱动代码的芯片都是10年11年的老型号,我认为为了学一个驱动去学习一款过时的芯片在时间成本和收益上都不划算,因此我没有去深入研究源码。

在github上找驱动代码

最终我在github上找到了nRF24L01芯片的驱动代码。尽管这也是很久以前的代码,但写得相当不错。这个代码就像之前技术总监给我的ST7789的驱动库一样,只需include进来,自己配置一些GPIO就可以直接使用。而mcu和nRF24L01之间的通信完全不需要我操心和了解。终于,我的目标完成了,里面的源码我也只是大概了解了70%。

在这个过程中,我发现了一个有趣的小插曲:

/* ----------------------------------------------------------------------------
* “THE COFFEEWARE LICENSE” (Revision 1):
*  wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff. If we meet some day, and you think
* this stuff is worth it, you can buy me a coffee in return.
* -----------------------------------------------------------------------------/

这个版权声明意思是,你可以拿这个文件做你想做的任何事情,如果有一天我们相遇了,你觉得我对你有所帮助的话,你可以请我喝一杯咖啡作为回报。在淘宝找商家、网上找资源、最后在github找了好久,终于找到了这个代码。当看到这个版权声明时,我感受很深,很感动。只有同样经历的人才能共鸣吧。

配置GPIO,初次失败

配置好GPIO后,我进行了首次上电测试,但结果出乎意料地失败了。

配置地址,第二次失败

在观察main函数的初始化、配置和通讯过程后,我发现需要配置地址码。我开始配置RX_address和TX_address,然后在工程里面进行地址配置。然而,即使我配置了地址,第二次的上电测试依然失败了。

配置参数,第三次失败

在此过程中,我发现中文手册里的内容并不全面(仅仅只有 26页 ),于是打开了英文手册(共有 78页 )。配合中文手册和有道翻译,读完英文手册后发现有很多的配置需要收发端一一对应,并不是用一台nRF24L01设备发出信号另一台nRF24L01设备就可以直接读取到。尽管他们都是基于2.4Ghz的频段,但是2.4Ghz频段里面有很多子频段,而且还有通讯速率等。于是,我兴冲冲地配置完了,心想这一次总算能成功了吧。然而,通讯还是失败了。这时候第一天已经接近尾声,但我觉得已经离成功越来越近了。

抓取上位机数据,第四次失败

我决定使用逻辑分析仪抓取nRF24L01插入电脑时的初始化数据,以查看配置情况。然而,在抓取数据的过程中,我发现一些参数的配置居然在上位机中已经写死了,而我的工程项目中是不同的。修改完后进行再次上电运行,结果还是失败了。

抓取mcu数据,终于成功了!

后来我再次抓取mcu的数据,发现我的RX地址和TX地址好像设置反了,于是进行了修改。终于,成功了!

坑点总结

以下是这两天踩坑的一些总结:

  • 最好选芯片的官方店铺,这样售后的服务和样例代码能得到保障。
  • Github/CSDN上也有不错的样例代码,有时可以花一点时间来找一下,如果找到了会达到事半功倍的效果。
  • 中文手册可能是最简单易懂的,但是大概率不是最准确详细的。有中文手册的话可以先看中文手册,看完之后再花2分钟时间大概过一下英文手册,知道英文手册中有哪些东西是中文手册没有的,这时候需要用的时候就可以针对性的去看英文手册了。
  • 当自我感觉配置已经好了的时候,用逻辑分析仪抓取发送端和接收端的配置,检查是否符合预期。