首页 > 其他分享 >nRF24L01芯片驱动记录

nRF24L01芯片驱动记录

时间:2024-09-16 15:36:28浏览次数:8  
标签:芯片 代码 配置 手册 nRF24L01 驱动

nRF24L01芯片驱动记录

​ 学习完了usb,了解了部分元器件的功能以及用途后,打算在端午假期用一天的时间完成一个小目标,不过实际上是花了一天半才成功实现,现将驱动nRF24L01芯片的整个过程记录下来。

小目标

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

在淘宝问客服找驱动代码

​ 这个过程一言难尽,一开始因为贪便宜,我买芯片的店铺不是官方店铺,属于私营的店铺,卖的东西也很杂。虽然便宜了几块钱,但是资料相对来说会不全,而且比较老旧(都是10年11年的代码),在商家描述里面,资料里面有上位机,我把整个压缩文件翻了一遍又一遍,我找了半天也找不到,后面去问客服,客服说稍等技术现在没有空,过了半个小时再问,客服说技术已经下班了,让我明天再问。当时就差点和客服吵起来了。

​ 后面自己去别的淘宝店铺那里蹭到了上位机的下载链接,这样我的nRF24L01的一端可以用电脑来代替,而且确保没有错误。我只需要在mcu上实现nRF24L01的收或者发,另一端在上位机进行发和收就可以进行通讯了。

​ 后面整理了一下客服的驱动代码,没有一个是我可以直接拿来用的,而且驱动代码的芯片都是10年11年的老芯片,我个人觉得为了学一个驱动去学习一款过时的芯片在时间成本和收益上都很不理想,所以我也没去看源码,只是大概的看了一眼。

在github上找驱动代码

​ 最后我是在github上找到了我这个芯片的驱动代码,不过也是很久之前的代码,不过写的也是比较好的,虽然也是十多年前的代码,但是和淘宝客服给的资料完全不是一个档次的,这个代码就像之前技术总监给我的ST7789的驱动库一样,直接include进来,自己配置一些GPIO就可以直接拿来用了,而mcu和nRF24L01之间的通信完全不需要我操心和了解,直到现在目标完成了,里面的源码我也只是看了70%。

​ 这里有个小插曲

/* ----------------------------------------------------------------------------
* “THE COFFEEWARE LICENSE” (Revision 1):
* <[email protected]> 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插入电脑那一刻的初始化数据,看看他是怎么配置的,然后在我的工程项目里面使用一样的配置。在抓取数据的时候我发现,有一些参数的配置,居然在上位机里面已经写死了(比如RX payload上位机写死的是32个字节),而我的工程项目里面是2个字节。修改完之后进行上电运行,结果还是失败了。

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

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

坑点总结

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

  • 最好选芯片的官方店铺,这样售后的服务和样例代码能得到保障
  • github / CSDN上面也有不错的样例代码,有的时候可以花一点时间来找一下,如果找到了会达到事半功倍的效果。如果我自己写SPI驱动nRF24L01,我需要配置SPI,而且我也不知道他们通讯的具体过程是什么样的,这样我可能需要花大量时间来阅读整整78页的英文手册来寻找答案,而且直到了通讯过程,通讯过程的实现也不一定正确。而且时间开销也会很大。
  • 中文手册可能是最简单易懂的,但是大概率不是最准确详细的。有中文手册的话可以先看中文手册,看完之后再花2分钟时间大概过一下英文手册,知道英文手册中有哪些东西是中文手册没有的,这时候需要用的时候就可以针对性的去看英文手册了,而且在看过中文手册的情况下,读英文手册看过的部分也会轻松不少(对于我这种英语不太好的人来说)。
  • 当自我感觉配置已经好了的时候,用逻辑分析仪抓取发送端和接收端的配置,检查是否符合预期

标签:芯片,代码,配置,手册,nRF24L01,驱动
From: https://www.cnblogs.com/xddisme/p/18416315

相关文章

  • VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Serve
    VMwareESXi7.0U3qmacOSUnlocker集成驱动版更新OEMBIOS2.7支持WindowsServer2025VMwareESXi7.0U3qmacOSUnlocker&OEMBIOS2.7集成网卡驱动和NVMe驱动(集成驱动版)ESXi7.0U3标准版集成Intel网卡、RealtekUSB网卡和NVMe驱动请访问原文链接:h......
  • 系统 HIVE 文件是 Windows 注册表中的数据文件,保存系统级的配置信息和设置。它们存储
    系统HIVE文件是Windows注册表中的数据文件,保存系统级的配置信息和设置。它们存储操作系统的配置、驱动程序信息、硬件设置以及系统服务的参数。这些文件在Windows启动时加载,用于系统的正常运行和管理。系统HIVE文件包括几个关键部分,如HKEY_LOCAL_MACHINE\SYSTEM、HKEY_......
  • 唤醒数据中台的数据,分享我的数据驱动秘籍
    1.自我介绍虽然我是Java开发工程师,但最初的项目是数据治理相关的内容,主要使用的是ETL工具KETTLE现在这个工具已经改名为Pentaho,具体的工作内容如下:数据的抽取(从不同的数据库、ftp)获取数据转换(数据合并、统计)生成宽表(用于支撑BI部门的数据展示)这份工作跟数据打交道比较多,当......
  • AI商业广告与智能办公实战【技术驱动下的变革】(好书推荐)
    文章目录AI商业广告与智能办公实战【技术驱动下的变革】(好书推荐)AI在商业广告中的应用AI在智能办公中的应用AI商业广告设计实战108招:ChatGPT+Photoshop+Firefly+Midjour【书籍推荐】AI智能办公实战108招:ChatGPT+Word+PowerPoint+WPS【书籍推荐】AI数据处理实战108招:Ch......
  • 【有奖征文】分享你的数据驱动秘籍
    在数据驱动的时代,每一次商业模式的创新和技术的飞跃都是对未知领域的一次探索。面对这些日新月异的数据理念和技术,你有何独到见解?有哪些数据观念的转变让你印象深刻?你是否掌握了一些独到的数据运用秘籍,能够从海量数据中,挖掘出数据的真正价值?参与征文活动,和大家聊聊自己见证数据技术......
  • 信息架构的战略视角:驱动数字化转型的设计原则与实践创新
    在数字经济快速发展的今天,企业的成功越来越依赖于其信息架构的稳健性和灵活性数字化转型不仅要求技术创新,更需要架构设计上的深思熟虑。《信息架构:商业智能&分析与元数据管理参考模型》作为信息架构领域的权威指南,为企业提供了宝贵的实践经验和应用策略。《信息架构:商业智能&......
  • 高级java每日一道面试题-2024年9月12日-架构篇[DDD领域驱动篇]-如何使用领域驱动设计(D
    如果有遗漏,评论区告诉我进行补充面试官:如何使用领域驱动设计(DDD)中的事务脚本模式?我回答:在Java高级面试中,讨论如何使用领域驱动设计(DDD)中的事务脚本模式是一个很好的话题,因为它不仅考察了面试者对DDD原则的理解,还检验了其在实际项目中应用这些原则的能力。事务脚本模......
  • USB总线-Linux内核USB3.0 Hub驱动分析(十四)
    1.概述USBHub提供了连接USB主机和USB设备的电气接口。USBHub拥有一个上行口,至少一个下行口,上行口连接上一级的Hub的下行口或者USB主机,连接主机的为RootHub,下行口连接下一级Hub的上行口或者USB设备。经过Hub的扩展,一个USB主机可以和多个USB设备通信。USBHub有如下特性:良好的......
  • 企业“数据飞轮”数据平台落地实践驱动电商企业数智化
    一、前言:数据飞轮的概念强调的是将海量而复杂的数据转化为推动业务发展的强大动力,而并不是死的数据,通过数据飞轮能够“唤醒”和“解锁”数据潜力,来实现业务价值的探索,让数据中台焕发活力,企业通过利用数据飞轮实现数据驱动。数据飞轮能够帮助企业激活数据的潜在价值,将“沉睡”的数据......
  • stm32驱动HX711称重传感器 c++代码分享
    一、HX711模块介绍HX711模块是一种专门用于称重传感器的放大器模块。它的主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围。HX711模块通常配合称重传感器一起使用,例如压力传感器、负载细胞等。它采用24位的模数转换器(ADC)来精确测量传感器的电压变化。HX711模块具......