2.4G无线通信_2.4g通信-程序员宅基地

技术标签: stm32  网络  

NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。NRF24L01采用SPI通信,可以很方便的连接到MCU上面。

NRF24L01的特点

①2.4G全球开放的ISM频段,免许可证使用。

②最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。

③126个可选的频道,满足多点通信和调频通信的需要。

④内置CRC检错和点对多点的通信地址控制。

⑤可设置自动应答,确保数据可靠传输。

NRF24L01模块介绍

 CE:模式控制线。在 CSN为低的 情况下,CE 协同CONFIG 寄存器 共同决定NRF24L01 的状态(参照 NRF24L01 的状态机)                 

CSN:SPI片选线

SCK:SPI时钟线

MOSI:SPI数据线(主机输出,从机输入)

MISO:SPI数据线(主机输入,从机输出)

IRQ:中断信号线。中断时变为低电平,在以下三种情况变低:Tx FIFO 发完并且收到ACK(使能ACK情况下)、Rx FIFO 收到数据、达到最大重发次数。

SPI时序

 空闲状态SCK为0,CPOL=0;数据在时钟第一个时间边沿采集,CPHA=0;

Cn:SPI命令位

Sn:STATUS寄存器位        

Dn:数据位( MSB,多字节传输时,低字节在前)

NRF24L01的工作模式,由CE和CONFIG寄存器(0X00)的PWR_UP(第1位)和PRIM_RX(第0位)位共同控制:

其中,收发模式又有: Enhanced ShockBurstTM收发模式和ShockBurstTM收发模式,只有Enhanced ShockBurstTM收发模式支持自动ACK和自动重发。开启自动ACK,则默认选择Enhanced模式 。

Enhanced ShockBurstTM模式介绍

Enhanced ShockBurstTM收发模式,使用片内的先入先出堆栈区,数据可以低速从微控制器送入,但高速(1Mbps/2Mbps)发射,这样可以尽量节能。与射频协议相关的所有高速信号处理都在片内进行,这种做法有大好处:

1,节能;

2,低的系统费用(低速微处理器也能进行高速射频发射);

3,数据在空中停留时间短,抗干扰性高;    

在Enhanced ShockBurstTM收发模式下, NRF24L01自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将使能发送过程。

Enhanced ShockBurstTM发送流程

1. 把地址和要发送的数据按时序送入NRF24L01;

2. 配置CONFIG寄存器,使之进入发送模式;

3. 微控制器把CE置高(至少10us),激发Enhanced ShockBurstTM发射;

4. Enhanced ShockBurstTM发射:① 给射频前端供电;②射频数据打包(加字头、CRC校验码); ③ 高速发射数据包; ④发射完成,NRF24L01进入空闲状态。

Enhanced ShockBurstTM发送模式初始化

1)写Tx 节点的地址 TX_ADDR

2)写Rx 节点的地址(主要是为了使能Auto Ack) RX_ADDR_P0

3)使能AUTO ACK EN_AA

4)使能PIPE 0 EN_RXADDR

5)配置自动重发次数 SETUP_RETR

6)选择通信频率 RF_CH

频率计算公式:2400+RF_CH  (Mhz)

7)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP

8)配置24L01 的基本参数以及切换工作模式 CONFIG。

Enhanced ShockBurstTM接收流程

1. 配置接收地址和要接收的数据包大小;

2. 配置CONFIG寄存器,使之进入接收模式,把CE置高。

3. 130us后,NRF24L01进入监视状态,等待数据包的到来;

4. 当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、地址和CRC校验位移去;

5. NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;

6. 微控制器把数据从FIFO读出(0X61指令);

7. 所有数据读取完毕后,可以清除STATUS寄存器。NRF2401可以进入 四种主要的模式之一;

Enhanced ShockBurstTM接收模式初始化

1)写Rx 节点的地址 RX_ADDR_P0

2)使能AUTO ACK EN_AA

3)使能PIPE 0 EN_RXADDR

4)选择通信频率 RF_CH

5)选择通道0 有效数据宽度 RX_PW_P0

6)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP

7)配置24L01 的基本参数以及切换工作模式 CONFIG。
硬件设计

这里NRF24L01也是使用的SPI1,和W25Q128共用一个SPI接口,所以在使用的时候,他 们分时复用SPI1。本章我们需要把W25Q128的片选信号置高,以防止这个器件对NRF24L01 的通信造成干扰。另外,NRF_IRQ和RS485_RE共用了PG8,所以,他们不能同时使用,不过 我们一般用不到NRF_IRQ这个信号,因此,RS485和NRF一般也可以同时使用。 

代码讲解

打开 24l01.c 文件,在 NRF24L01_Init 函数里面, 我们调用了 SPI1_Init()函数,SCK 空闲的时候是低电平的,而数据在 SCK 的上升沿被读写。所以,我们需要设置 SPI 的 CPOL 和 CPHA 均为 0,来满足 NRF24L01 对 SPI 操作的要求。所以,我们在 NRF24L01_Init 函数里面又单独添 加了将 CPOL 和 CPHA 设置为 0 的函数 NRF24L01_SPI_Init。

24l01.h 头文件,部分代码,主要定义了一些 24L01 的命令字,以及函数声明,这里还通过 TX_PLOAD_WIDTH 和 RX_PLOAD_WIDTH 决定了发射和接收的数据宽度,也就是我们每次发射和接受的有效字节数。NRF24L01 每次最多传输 32 个字节,再多的字节传输则需要多次传送。

main函数,程序运行时先通过 NRF24L01_Check 函 数检测 NRF24L01 是否存在,如果存在,则让用户选择发送模式(KEY1)还是接收模式(KEY0), 在确定模式之后,设置 NRF24L01 的工作模式,然后执行相应的数据发送/接收处理。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_64531765/article/details/127040774

智能推荐

servlet注解开发-程序员宅基地

文章浏览阅读820次。跟请求对象/响应对象一样,也是在容器初始化时被创建好的对象;该对象可用于容器初始化时 servlet 辅助信息的设置;例如:编码格式的设置、servlet 在执行时需要的一些数据。在 web.xml 中 servlet 标签下可以进行 ServletConfig 辅助信息的设置格式:ServletConfig 对象和 Servlet 类是一对一的关系;只有 web.xml 配置文件中配置了。_servlet注解开发

从零开始学Python第19课:面向对象编程进阶(2024版)-程序员宅基地

文章浏览阅读661次,点赞24次,收藏13次。例如,我们定义一个学生类和一个老师类,我们会发现他们有大量的重复代码,而这些重复代码都是老师和学生作为人的公共属性和行为,所以在这种情况下,我们应该先定义人类,再通过继承,从人类派生出老师类和学生类,代码如下所示。子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本,这样的方法在程序运行时就会表现出多态行为(调用相同的方法,做了不同的事情)。需要提醒大家的是,对象的方法其实本质上也是对象的属性,如果给对象发送一个无法接收的消息,引发的异常仍然是。

初步了解SequoiaDB巨杉数据库-程序员宅基地

文章浏览阅读658次。1.SequoiaDB 简介2.整体架构3.数据库存储引擎4.核心特性。_sequoiadb

2020 年中国程序员薪资和生活现状调查报告_2020年薪酬数据报告-程序员宅基地

文章浏览阅读1.7k次,点赞6次,收藏3次。作者 | 程序员客栈来源 | ID:proginnwx根据中国互联网络信息中心(CNNIC)近日发布第 44 次《中国互联网络发展状况统计报告》。截至 2019 年 06 月,中国网民规模为 8.54 亿,较 2018 年底增加 2598 万。网上外卖用户规模达 4.21 亿,较 2018 年底增长 1516 万;网络视频用户规模达 7.59 亿,较 2018 年底增长 3391 万;我..._2020年薪酬数据报告

从 NASL 说开:低代码编程语言能饭否_网易nasl语言-程序员宅基地

文章浏览阅读1.3w次,点赞78次,收藏73次。轻舟低代码平台,NASL是其中的关键,也是最大的差异化。回头看Gartner的定义,也有LCAP(低代码平台)和CADP(无代码平台)之分,前者对开发完整性、应用独立性、逻辑完备性、可接入可集成等都有要求,所以说,NASL的实现使得轻舟低代码更符合这一理念。说到框架,大家首先想到肯定是是react,springboot这种被广泛使用的前后端框架,低代码框架本质上跟他们类似,差别在于,低代码框架通常支持从前后端到数据库的全栈模型实现,而且封装程度更高。_网易nasl语言

数字音频总线A2B开发详解三(A2B系统的Flash Program详解)_a2b技术学习-程序员宅基地

文章浏览阅读1.2k次。A2B系统的EEPROM自启动如何做,本文来告诉你_a2b技术学习

随便推点

Unhandled exceptions: java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException_unhandled exceptions: java.lang.instantiationexcep-程序员宅基地

文章浏览阅读3.2k次。可能是没有异常处理,只需要加上throws Exception就解决问题了。_unhandled exceptions: java.lang.instantiationexception, java.lang.illegalacc

webview ERROR_UNSUPPORTED_SCHEME ,errorcode=-10问题处理-程序员宅基地

文章浏览阅读1.5k次。webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { try{ if(url.startsWith("baidumap://")){ Intent _error_unsupported_scheme

embed标签-程序员宅基地

文章浏览阅读66次。Embed  (一)、基本语法:  embed src=url  说明:embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等, Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。  示例:<embed src="your.mid">  (二)、属性设置:  1、自动播放...

php 上传文件漏洞,PHP -- 文件包含、文件上传漏洞-程序员宅基地

文章浏览阅读330次。PHP -- 文件包含、文件上传漏洞PHP -- 文件包含、文件上传漏洞文件包含文件引入漏洞,是由一个动态页面编译时引入另一个文件的操作。文件引入本身是没有问题,它是用于统一页面风格,减少代码冗余的一种技术。但是在特定的场景下就会形成漏洞jsp:include指令和include动作,其中include动作用于引入动态文件php:include(),include_once(),require()..._php文件上传4漏洞

配置NGINX同时运行 https 和 http_nginx 和 http无法同时启动-程序员宅基地

文章浏览阅读406次。SSL 是需要申请证书的,key和PEM文件要放到服务器路径。然后NGINX下要进行443端口和80端口的绑定。server { listen 80; server_name ietaiji.com www.ietaiji.com; root "D:/aaa/WWW/ietaiji"; index index.html_nginx 和 http无法同时启动

总结:linux之Service_linux service-程序员宅基地

文章浏览阅读1.3w次,点赞9次,收藏60次。service与systemctl关系梳理开机启动梳理_linux service