NRF24L01(1)

news/2024/11/22 10:08:13/

以NRF24L01为例,实现无线通信
NRF24L01采用SPI通信,可以很方便的连接到MCU上。
NRF24L01的特点:
(1)2.4G全球开放的ISM频段,免许可证使用。
(2)最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。
(3)126个可选的频道,满足多点通信和调频通信的需要。
(4)内置CRC检错和点对多点的通信地址控制。
(5)可设置自动应答,确保数据可靠传输。

在这里插入图片描述
CE:模式控制线。在 CSN为低的
情况下,CE 协同CONFIG 寄存器
共同决定NRF24L01 的状态(参照
NRF24L01 的状态机)
CSN:SPI片选线
SCK:SPI时钟线
MOSI:SPI数据线(主机输出,从机输入)
MISO:SPI数据线(主机输入,从机输出)
IRQ:中断信号线。中断时变为低电平,在以下三种情况变低:Tx FIFO 发完并且收到ACK(使能ACK情况下)、Rx FIFO 收到数据、达到最大重发次数。

工作模式

在这里插入图片描述
收发模式有: Enhanced ShockBurstTM收发模式和ShockBurstTM收发模式,只有Enhanced ShockBurstTM收发模式支持自动ACK和自动重发。开启自动ACK,则默认选择Enhanced模式

Enhanced ShockBurstTM模式:

Enhanced ShockBurstTM收发模式,使用片内的先入先出堆栈区,数据可以低速从微控制器送入,但高速(1Mbps/2Mbps)发射,这样可以尽量节能。与射频协议相关的所有高速信号处理都在片内进行,达到节能、以低速微处理器也能进行高速射频发射以及数据在空中停留时间短,抗干扰性高的功效。
在Enhanced ShockBurstTM收发模式下, NRF24L01自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将使能发送过程。
在这里插入图片描述

在接收端,确认收到数据后记录地址,并以此地址为目标地址发送应答信号。
在发送端,通道0被用作接收应答信号,因此通道0的接收地址要与发送地址端地址相等,以确保接收到正确的应答信号。
一、发送流程:
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。

相关寄存器
(1)配置寄存器(CONFIG 0x00)
在这里插入图片描述

MASK_MAX_RT最大重发次数 EN_CRC自动ACK
MASK_RX_DR配置是否使能接收数据中断
MASK_TX_DS发送数据完成中断
(2)自动应答使能寄存器(EN_AA 0x01)
在这里插入图片描述
(默认0-5位都是使能),用于使能数据通道。位设置为0禁止数据应答。
(3)RX地址使能寄存器(EN_RXADDR,0x02)
在这里插入图片描述
ERX_P1和P0默认设置为1,其他默认为0。
(4)自动重发设置寄存器(SETUP_RETR 0x04)
在这里插入图片描述
ARD设置没收到ACK之后多久再次进行重发;ARC设置重发到多少次为限度,设置为0则重发一次失败后不重发。
(5)射频频率设置寄存器(RF_CH,0x05)
位【6:0】RF_CH默认值为0000010,设置射频频率,RF_CH(频率计算公式:2400+RF_CH (Mhz))
(6)射频配置寄存器(RF_SETUP 0x06)
在这里插入图片描述
第3、5位共同决定射频速率。RF_PWR决定输出的远近。 其他几个位此处不关心。
(7)状态寄存器(STATUS 0x07)
在这里插入图片描述
MAX_RT位若置1,则代表达到最大重发次数还没发送成功。
(8)数据通道0接收地址寄存器(RX_ADDR_P0,0x0A)
在这里插入图片描述
类似的,还有通道1-5接收地址设置寄存器:RX_ADDR_P1-5,不过P1-P5共用32位高位地址,由P1设置,P2~P4只可以设置8位地址(低8位)。
(9)发送地址设置寄存器(TX_ADDR 0x10)
在这里插入图片描述
TX和发送端应该应用一样的地址,才能收到ACK。
(10)接收通道0有效数据宽度设置寄存器(RX_PW_P0 0x11)
需要设置发送和接收端数据宽度一致
在这里插入图片描述
类似的,还有通道1-5有效数据宽度设置寄存器:RX_PW_P1-5,对应通道1~通道5的接收有效数据宽度,方法同RX_PW_P0。

硬件连接

在这里插入图片描述
NRF24L01与W25Q128共用SPI1,注意要分时复用。SPI1接PB3、4、5.


http://www.ppmy.cn/news/137192.html

相关文章

【ns-3】添加nr(5G-LENA)模块

文章目录 前言1. 下载5G-LENA源代码2. 配置并重新构建ns-3项目参考文献 前言 本篇以ns-3.37为例介绍如何在ns-3中添加nr(5G-LENA)模块 [1]。5G-LENA是一个由Mobile Networks group CTTC(Centre Tecnolgic de Telecomunicacions de Catalunya…

ISP—BNR

文章目录 BNR的必要性矫正方法PCA-Based Spatially Adaptive Denoising of CFA Images for Single-Sensor Digital CamerasPSEUDO FOUR-CHANNEL IMAGE DENOISING FOR NOISY CFA RAWDATANoise Reduction for CFA Image Sensors Exploiting HVS Behaviour 算法实现**相关链接** B…

NB-IoT天线同轴电缆RG316、RG174、RG178

NB-IoT的天线电缆可以接多长?常用的线缆有RG316、RG174、RG178,不同的线缆其衰减程度如何? mingdu.zheng at gmail dot com https://blog.csdn.net/zoomdy/article/details/80453953 |型号|阻抗(ohms)|内芯&#xff…

BLE蓝牙模块NRF518/NRF281/NRF528/NRF284芯片方案对比

1.nRF51822简介 nRF51822是一款功能强大,高度灵活的多协议的SoC,非常适用于低功耗蓝牙模块和2.4GHz的无线应用。该SoC是基于ARM Cortex M0为内核的微处理器,拥有256KB/128KB的片上FLASH存储空间,32KB/16K…

SR和GBN的区别

SR和GBN的区别 回退N步(GBN)为什么要叫“回退N步”协议? 选择重传(SR)主要区别1 接收缓冲区2 实现的复杂性3 网络效率 Go-Back-N协议和Selective-Repeat协议是计算机网络在传输层和链路层用于实现可靠数据传输的两个重…

RS232协议

接口标准 RS-232-C是美国电子工业协会EIA(Electronic Industry AssociaTIon)制定的一种串行物理接口标准。 其特点为: 接口格式:(DB-9)与(DB-25)两种规格;接线&#x…

RK3288 android 7.1 EMMC 问题导致卡死在开机logo 界面

1、在调试 rk3288 android 7.1 遇到部分机器不能开机的问题 logo 如下: init: Waiting for /dev/.coldboot_done... [ 3.024810] init: Waiting for /dev/.coldboot_done took 0.00s. [ 3.024848] init: /dev/hw_random not found [ 3.025097] keychord: …

内网路由配置优化-NETCORE NR238

前言:记录几个遇到的问题。1、IP不够用。2、如何有效限速。 问题一:NR238只能带动32个IP,若超过上限,则多余的设备无法联网。 方案:设置合理的续租时间,释放离线设备的IP,供后来者使用。如下图&…