NRF24L01无线通信模块学习 来自正点原子标准库

news2024/12/24 17:03:31

SPI通信

自动ACK,发送完数据后可等对方回你

NRF24L01介绍

时序介绍,数据位多字节传输时,低字节在前,高字节在后

工作模式介绍,当处于发送模式的时候,CE脚电平为1,延时10ms,CE脚电平为0,进入待机模式I,CE在设置为,进入待机模式2

收发模式有两种

ENhanced shockBurstTm收发模式好处多,在发送模式下,置CE为1,至少10us,就使能了发送过程

发送方要求终端设备在收到数据后有应答信号,以便检测有无数据丢失,一旦丢失则重发数据

一个接收可以与6个发送匹配,它们都在同一频道,通道0是唯一可以配置为40位自身地址的数据通道,1~5数据通道都为8位自身地址和·32位公用地址(由通道1设置)

在发送端的通道0被用作接收应答信号,因此通道0的接收地址要与发送地址端地址相等,以确保接收到正确的应答信号,  下图中有6个发送端,一个接收端,因为接收模式下,可以接收6路不同数据,下面的数据通道1~5高32位为固定地址,后8位为自身地址

发送流程,配置CONFIG寄存器,使之进入发送模式,微控制器把CE拉高(至少10us),激活enhanced shockedburstTM发射

发送模式初始化流程,写Tx节点的地址TX_ADDR要和RX_ADDR_P0的地址相等

接收模式流程,这里的接收地址是针对一个Nrf在发送模式和接收模式的地址都是通道0的TX_ADDR

接收模式初始化

NRF24l01指令   0xAAAAA | 0x00, 0xAAAAA | 0x20,   payload有效负荷,在这里是有效数据,fLush是冲洗,这里是清除的意思

配置寄存器

自动应答使能寄存器,设置为1允许自动应答,设置为0禁止自动应答

自动重发,发送没有收到ACK后多少延时后重发,自动重发次数设置最大15次,就是在设置的自动重发次数完了还没收到ACK后就不发了,为0禁止自动重发

射频频率设置寄存器

RF_DR_HIGH和LOW配合10就可以把射频数据速率设置成2Mhz   RF_PWR默认设置为11发射功率最大

状态寄存器

通道0到5接收地址设置寄存器

发送地址设置寄存器,先写低字节,在enhanced模式下发送后会自动应答,所以P0的接收地址应该与Tx的地址相等

0x11有效数据宽度设置寄存器

探索者F4硬件部分,NRF24L01与norflash共用SPI1,注意分时复用

战舰版F1

miniF103硬件连接

源码位置

NRF24F0l驱动函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos 2.2.x版本配置详解(鉴权版本)

Nacos 2.2.x 一、安装和鉴权二、项目中配置集成1.位置问题2.namespace命名空间3.username和password4.group5.file-extension6.prefix7.shared-configs 三、实战1.新建一个命名空间,取名wq-config(这个你随意),会随机生成一个命名…

vulnhub-Kioptrix_Level_2_update靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、解决检测不到IP的问题 2、信息搜集 3、Getshell 4、提权 四、结论 一、测试环境 1、系统环境 渗透机:kali2021.1(192.168.202.134) 靶 机:Linux kioptrix.l…

【springboot9730】基于springboot+vue的网吧管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 随着信息技术和网络技术的飞速发展,人类已进…

摩托车一键启动兼容机械钥匙点火

摩托车无钥匙一键启动 工作原理 摩托车无钥匙一键启动系统的工作原理主要依赖于RFID无线射频技术和车辆身份编码识别系统。这种技术能够通过小型化、小功率的射频天线来识别车辆的身份,并与遥控系统结合,实现双重射频系统和双重防盗保护。这意味着&…

CV实战01 YOLOv5实现图像分割

网上翻了一天,没找到称心的教程,最后发现还是Ultralytics官方的教程文档好用!这里贴上官方教程一起学习! 【1:找到官方教程文档】 yolov5官方下载地址:GitHub - ultralytics/yolov5: YOLOv5 &#x1f680…

【p2p、分布式,区块链笔记 UPNP】: Libupnp test_init.c 02 初始化SDK --- UpnpInitPreamble

启动前全局资源配置 代码解析函数分析代码中的重要部分1. Winsock 初始化 (WinsockInit):2. 锁初始化资源 (UpnpInitMutexes):3. 句柄表HandleTable(SDK 内部资源的表)初始化:4.线程池初始化 (UpnpInitThreadPools):5. 回调函数设…

Android OpenGLES2.0开发(四):矩阵变换和相机投影

事物的本质是事物本身所固有的、深藏于‌现象背后并决定或支配现象的方面‌。 还记得我们上一篇绘制的三角形吗,我们确实能够顺利用OpenGL ES绘制出图形了,这是一个好的开始,但这还远远不够。我们定义的坐标是正三角形,但是绘制出…

解决无法安装“vue.volar“扩展,跟vscode版本不兼容问题

问题:安装volar插件的时候提示跟vscode版本不兼容 解决方案 1、进入VSCode插件市场,搜索Vue.volar(直达链接:volar下载界面) 2、点击download Extension(下载插件) 3、下载.vsix文件完成后&a…

杨中科 .netcore Linq 。一前期准备知识

为什么要学Linq 一、为什么要学LINQ? 让数据处理变得简单: 统计一个字符串中每个字母出现的频率(忽略大小写),然后按照从高到低的顺序输出出现频率高于2次的单词和其出现的频率。 var itemss.Where(c >char.lsLetter(c))//过滤非字母 .Select(c>char.ToLo…

【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF

未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …

55100-3H-02微型法兰安装霍尔效应传感器

55100-3H-02微型法兰安装霍尔效应传感器应用领域如:位置和极限感应、无刷换向、RPM测量、直流电机、流量计量、角度感应、磁编码器。 概述 55100微型法兰安装霍尔效应传感器,尺寸为25.5mmx 11.00m,高度仅为3.00mm,可选择数字或可…

生物制药洁净室:设计、施工及常见问题解决

生物制药洁净室的设计施工要点对于保障生产环境的洁净度至关重要。生物制药洁净室的建设不仅是为了符合行业标准,更是确保产品安全和质量的重要环节。生物制药洁净室设计与生物制药洁净室施工是相辅相成的,接下来,我们将深入探讨这两方面的关…

交易中心态管理和情绪控制是第一位

情绪是交易中常见的障碍,无论是负面情绪还是喜悦等正面情绪,都可能成为妨碍交易的关键因素。交易的核心在于保持客观理性,而情绪的起伏往往不经意间扰乱我们的思绪。因此,成功的交易员若想突破自我,首要任务便是克服情…

事件轮询机制

引出闭包案例 for(var i 0; i < 5; i) {setTimeout(function () {console.log(i); // &#xff1f;}); } console.log(a); // 结果是什么&#xff1a;&#xff1f; 2.事件轮询机制&#xff08;Event Loop&#xff09; 事件轮询&#xff08;Event Loop&#xff09;是一个…

调整ApplyItem的界面

调整ApplyItem的界面 前言 在上一集&#xff0c;我们就完成了一个clickItem的一个函数&#xff0c;继承SessionFriendItem并通过它添加不同的Item&#xff0c;并且我添加了它的枚举类。 在上一集的最后&#xff0c;我们提了一嘴&#xff0c;我们要修改ApplyItem的样式。 分…

Flink 04 | 窗口介绍 - 无界数据流的核心

窗口介绍 Flink中Windows&#xff08;窗口&#xff09;是处理无界数据流的核心。因为无界数据集是不断增长的&#xff0c;无法直接对整个数据集进行操作。窗口将数据流分成有限大小的Buckets&#xff0c;我们可以在这些Buckets上应用计算。本文档重点介绍如何在 Flink 中选择合…

三菱FX3UPLC机械原点回归- DSZR/ZRN指令

机械原点回归用指令的种类 产生正转脉冲或者反转脉冲后&#xff0c;增减当前值寄存器的内容。可编程控制器的定位指令&#xff0c;可编程控制器的电源0FF后&#xff0c;当前值寄存器清零&#xff0c;因此上电后&#xff0c;请务必使机械位置和当前值寄存器的位置相吻合…

10.模拟实现s

前面我们了解了string类的常用接口使用&#xff0c;那么现在就来模拟实现一下。 1.constructor string.h namespace Ro {class string{public:string(){}string(const char* str){}~string(){}private:char* _str;size_t _size;size_t _capacity;}; } 为了和库里面的string…

Jenkins+kubernetes流水线构建java项目

在传统的业务环境中&#xff0c;我们的应用部署或者更新都是采用手工的方式&#xff0c;但是在企业内部&#xff0c;应用架构一般都采用微服务&#xff0c;大部分项目都会对应几十个、上百甚至上千个微服务&#xff0c;并且还不仅仅只有一个项目&#xff0c;所以采用收工方式上…

godot帧同步-关于“显示与逻辑分离”

很多教程说帧同步的关键是“显示与逻辑分离”&#xff0c;但是又没有具体讲解&#xff0c;我起初也没有搞懂这句话的意思&#xff0c;就直接上手开发帧同步了。在开发的过程中&#xff0c;一下子就悟了&#xff0c;所以分享一下。 显示与逻辑未分离&#xff08;单机&#xff0…