STM32
直播中

陈厚合

16年用户 1707经验值
擅长:可编程逻辑
私信 关注
[问答]

NRF24L01是如何使用SPI与STM32进行通讯的

NRF24L01是如何使用SPI与STM32进行通讯的?

NRF24L01发射模式的配置顺序是怎样的?
NRF24L01接收模式的配置初始化是什么?


回帖(1)

刘琪琛

2021-12-16 14:16:40
首先NRF24L01是使用SPI与STM32进行通讯的
其中要区分CSN:模块的片选信号,和CE:使能信号的功能。CSN是协议片选端,多个SPI设备共用STM32的SPI口时,就通过CSN来区分,而CE端实际上是芯片的功能使能端,通过配置CE使它进入不同的状态(RX,TX),
命令的组织形式:命令+寄存器地址
命令分为读命令:AAAAA//读地址时直接+寄存器地址就可以,也就是0x00+寄存器地址
写命令:1AAAAA//相当于100000也就是0x20,所以写寄存器命令就是0X20+寄存器地址




发射模式的配置顺序

1.设置TX节点的地址,也就是发射地址,接收端需与这个地址相同,否则接收不到数据。寄存器为:TX_ADDR
2. 设置RX节点的地址,也就是接收时的地址,如果是在发射模式下那么功能是为自动应答服务的(AUTO ACK)。寄存器为:RX_ADDR_P0
3. 允许AUTO ACK功能,意思是发送数据后都会等待接收端的应答信号,目的是保证数据正确发送。寄存器为:EN_AA
4. 设置允许的接收通道,总共有6个通道,使用通道0。寄存器为:EN_RXADDR
5. 配置自动重发次数。寄存器为:SETUP_RETR
6. 选择通信的频率。寄存器为:RF_CH
7. 设置接收通道0的接收数据有效宽度,与第四步对应。寄存器为:RX_PW_P0
8. 配置发射的参数,主要为低噪放大器增益、发射的功率、无线传输的速率。寄存器为:RF_SETUP
9. 配置收发状态(这时配置为发射模式),CRC校验模式以及收发状态响应方式。寄存器为:CONFIG
自动应答:自动应答能减少外部MCU的工作量,并且吧要求硬件一定有SPI接口,从而降低了电流消耗,自动应答可以通过SPI对不同的数据通道分别进行配置。
在自动应答模式下,在收到有效数据后,系统将进入发送模式并发送确认信号。发送完确认信号后,系统将进入正常工作模式。
自动重发功能:这个功能是针对自动应答系统的发送方,通过setup_retr寄存器设置:设置重发数据的时间长度。在每次发送结束后会进入接受模式并在设定时间范围内等待应答信号。接受到应答信号后再转入正常发送模式。如果TX FIFO中没有待发送的数据而且CE脚为低电平,系统进入待机模式(即在发送模式下没数据发送便进入待机),如果超时没有收到确认信号,则系统返回到发送模式重新发送之前的数据直到有应答信号(直至重发次数超过设定值)。当有新的数据发送或PRIM_RX寄存器配置改变时,丢包计数器复位。


接收模式的配置初始化为:
1. 设置RX节点的地址,也就是接收时的地址,如果是在发射模式下那么功能是为自动应答服务的(AUTO ACK)。寄存器为:RX_ADDR_P0 (这里要写入与TX方TX_ADDR 相同的地址)
2. 允许AUTO ACK功能,意思是发送数据后都会等待接收端的应答信号,目的是保证数据正确发送。寄存器为:EN_AA
3. 设置允许的接收通道,总共有6个通道,我们只使用通道0,其他通道的功能应用大家熟悉了NRF24L01之后尝试吧。寄存器为:EN_RXADDR
4. 选择通信的频率。寄存器为:RF_CH
5. 设置接收通道0的接收数据有效宽度。寄存器为:RX_PW_P0
6. 配置发射的参数,主要为低噪放大器增益、发射的功率、无线传输的速率。寄存器为:RF_SETUP
7. 配置收发状态(这时配置为接收模式),CRC校验模式以及收发状态响应方式。寄存器为:CONFIG
举报

更多回帖

发帖
×
20
完善资料,
赚取积分