STM32控制NRF24L01无线模块进行通信_nrf24l01通讯只能spi模拟吗

158 阅读8分钟

功能介绍

(1)2.4Ghz 全球开放ISM 频段免许可证使
2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合
(3)126 频道,满足多点通信和跳频通信需要
(4) 内置硬件CRC 检错和点对多点通信地址控制
(5) 低功耗1.9-3.6V 工作,待机模式下状态为22uA;掉电模
式下为900nA
(6) 内置2.4Ghz 天线,体积小巧 15mmX29mm
(7) 模块可软件设地址,只有收到本机地址时才会输出数据(提
供中断指示),可直接接各种单片机使用,软件编程非常方便
(8) 内置专门稳压电路,使用各种电源包括DC/DC 开关电源均有
很好的通信效果
(9)2.54MM间距接口, DIP封装
(10)工作于EnhancedShockBurst 具有Automaticpacket
handling,Auto packettransactionhandling,具有可选的内置包
应答机制,极大的降低丢包率。

2.硬件与接口

nRF24L01芯片

这里写图片描述

nRF24L01模块

这里写图片描述

(1) VCC脚接电压范围为1.9V~3.6V之间,不能在这个区间之外,超
过3.6V将会烧毁模块。推荐电压3.3V左右。
(2) 除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需电平转换。当然对3V左右的单片机更加适用了。
(3) 硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI也可以

各管脚位置和定义:

8.IRQ7MISO
6.MOSI5.SCK
4.CSN3.CE
2.VCC1.GND

具体说明:

1.vcc:接1.9V~3.6V间的电压
2.GND:接地
3.CE:芯片的模式控制线。在 CSN 为低的情况下,CE 协同NRF24L01 的CONFIG 寄存器共同决定NRF24L01 的状态                
4.CSN:为芯片的片选线  CSN 为低电平芯片工作
5.SCK:为芯片控制的时钟线(SPI时钟)
6.MOSI:为芯片控制数据线,主设备数据输出  从设备数据输入
7.MISO:芯片控制数据线,主设备数据输入  从设备数据输出
8.IRQ:中断信号引脚。中断时变为低电平,即NRF24L01内部发生中断时IRQ引脚从高电平变为低电平。引脚会在以下三种情况变低:(1)Tx FIFO 发完并且收到ACK(使能ACK情况下);(2)Rx FIFO 收到数据;(3)达到最大重发次数。

3.工作模式

工作模式设定

模式PWR_UPPRIM_RXCEFIFO寄存器状态
接收模式111-
发送模式101数据在TX FIFO寄存器中
发送模式101->0停留在发送模式,直到数据发送完
待机模式2101TX FIFO为空
待机模式11-0无数据传输
掉电模式0---

PWR_UP: 上电
PRIM_RX: 掉电
CE: 芯片使能
PWR_UP和PRIM_RX 在配置寄存器(CONFIG)中设置位0和位1:

地址参数复位值类型描述
00寄存器配置寄存器
-保留(未用)70R/W默认位“0”
-MASK_RX_DR60R/W可屏蔽中断RX_RD;1:IRQ引脚不显示RX_RD 中断;0:RX_RD 中断产生时IRQ 引脚电平为低
-MASK_TX_DS50R/W可屏蔽中断TX_DS;1:IRQ引脚不显示TX_DS 中断;0:TX_DS中断产生时IRQ 引脚电平为低
-MASK_MAX_RT40R/W可屏蔽中断MAX_RT;1:IRQ 引脚不显示TX_DS 中断;0:MAX_RT 中断产生时IRQ 引脚电平为低
-EN_CRC30R/WCRC使能;如果EN_AA中任意一位为高EN_CRC 强迫为高
-CRCO20R/WCRC模式;‘0’-8 位CRC 校验‘1’-16 位CRC 校验
-PWR_UP10R/WNRF24L01上电掉电模式设置位;1:上电;0:掉电
-PRIM_RX00R/WNRF24L01接收、发射模式设置位;1:接收模式 0:发射模式

3.1 收发模式

收发模式有Enhanced(增强型) ShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种。

3.1.1 ShockBurstTM 模式
ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)
发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相
关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能
进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401 的 ShockBurstTM 技术同时也减小
了整个系统的平均工作电流。
在 ShockBurstTM 收发模式下,nRF2401 自动处理字头和 CRC 校验码。在接收数据时,自动把字头和
CRC 校验码移去。在发送数据时,自动加上字头和 CRC 校验码,当发送过程完成后,数据准备好引脚通
知微处理器数据发射完毕。

ShockBurstTM收发模式可以与Nrf2401a,02,E1及E2兼容

3.1.2 Enhanced(增强型) ShockBurstTM 模式

增强型ShockBurst TM 典型的双链方式为:发送方要求终端设备在接收到数据后有应答信号,以便发送方检测有无数据丢失,一旦丢失则重发数据。重发数据设置在地址为 04 的数据重发设置寄存器 用于设置其重发次数及设置在未收到应答信号后等待重发的时间。

数据重发设置寄存器(SETUP_RETR):

地址参数复位值类型描述
04寄存器数据重发设置寄存器
-ARD[7:4]0000R/W自动重发延时: ‘0000’-等待250+86us; ‘0001’-等待500+86us; ‘0010’-等待750+86us; …… ‘1111’-等待4000+86us; (延时时间是指一包数据发送完成到下一包数据开始发射之间的时间间隔)
-ARC[3:0]0011R/W自动重发计数: ‘0000’-禁止自动重发; ‘0001’-自动重发一次; …… ‘1111’-自动重发15次

nRF24L01 在接收模式下可以接收6 路不同通道的数据。
每一个数据通道使用不同的地址,但是共用相同的频道。

也就是说6 个不同的nRF24L01 设置为发送模式后可以与同一个设置为接收模式的nRF24L01 进行通讯,而设置为接收模式的nRF24L01 可以对这6 个发射端进行识别。

数据通道0 是唯一
的一个可以配置为40 位自身地址的数据通道。1~5 数据通道都为8 位自身地址和32 位公用地址。所有的
数据通道都可以设置为增强型ShockBurst 模式。

NRF24L01在确认收到数据后记录地址,并以此地址为目标地址发送应答信号,在发送端,数据通道0被用作接收应答信号,因此属通道0 的接收地址要与发送地址端地址相等,以确保接收到正确的应答信号。

这里写图片描述

当MCU控制NRF24L01发送数据时,NRF24L01就会启动发送数据,发送完后NRF24L01就会转到接收模式并等待终端的应答信号。

如果没有收到应答信号,NRF24L01就会重发数据包,直到收到应答信号,或达到重发次数寄存器设定的最大值为止,如果重发次数超过了设定值则产生MAX_RT(最大重发次数中断)(应该在该中断没有被屏蔽的情况下的时候才会发生)

只要收到确认信号,nRF24L01 就认为最后一包数据已经发送成功(接收方已经收到数据),把TX FIFO
中的数据清除掉并产生TX_DS中断(数据发送完中断)(IRQ 引脚置高)。

3.1.2.1 Enhanced ShockBurstTM发射流程
1.配置CONFIG寄存器位PRIM_RX 为低,进入发送模式
2.当MCU 有数据要发送时,接收节点地址(TX_ADDR)和有效数据(TX_PLD)通过SPI 接口写入
nRF24L01。发送数据的长度以字节计数从MCU 写入TX FIFO。当CSN 为低时数据被不断的写入。
发送端发送完数据后,将通道0 设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接
收端地址(TX_ADDR)相同。
例:在上图 中数据通道5 的发送端(TX5)及接收端(RX)地址设置如下:
TX5:TX_ADDR=0xB3B4B5B605
TX5:RX_ADDR_P0=0xB3B4B5B605
RX:RX_ADDR_P5=0xB3B4B5B605
3.把CE置高,最小时间为10us,激发nRF24L01进行Enhanced ShockBurstTM 发射
4.nRF24L01 Enhanced ShockBurstTM 模式:
(1) 无线系统上电
(2) 频数据打包(加字头、 CRC校验码)