NRF24L01(1)

以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.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NRF24L01是一种低功耗射频收发器,可以通过无线方式实现短距离通信。在NRF24L01模块中,使用1对多的通信方法可以实现一个发送器将数据广播给多个接收器。 要实现1对多通信,首先需要配置NRF24L01模块的发送端和接收端。发送端需要设置为主机模式,而接收端需要设置为从机模式。 在发送端,需要设置发送通道、地址宽度、数据速率等参数,并将需要传输的数据写入数据缓冲区。然后,通过将CE引脚置高,启动无线传输过程。 在接收端,需要设置接收通道、地址宽度、数据速率等参数,并通过设置接收中断使能,以便在接收到数据时能够触发中断。接收器在设置好参数后,也需要将CE引脚置高,以准备接收数据。 发送端通过广播模式将数据发送出去后,接收端会监听到数据,当数据传输完成后,接收端可以通过读取接收缓冲区中的数据来获取发送端发送的数据。 1对多通信方法可以通过在发送端对不同接收端设置不同的接收地址来实现。发送端将数据广播给所有接收端,每个接收端根据设置的接收地址来接收自己需要的数据。 需要注意的是,在进行1对多通信时,由于数据广播给多个接收端,可能会出现信号干扰和数据冲突的问题。因此,需要根据具体情况进行误码检测、重传等处理,以确保数据的可靠传输。 总的来说,通过NRF24L01模块的1对多方法,可以实现一个发送器将数据广播给多个接收器,并实现短距离的无线通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值