
一. 简介 在各个无线通信模块中,由于NRF24L01价格便宜,而且体积小,以及不需要外接天线,传输距离约为10-20米,深受大家的喜爱。在遥控汽车,四轴飞行器中较为常见,在这里给大家分享其具体的使用。 模块共用8个引脚 通信方式为SPI接口,速率不能太高,最好在10M以内。 ![]() IRQ : 中断输出,例如发送完成,或者接收完成。默认为高电平。 CE : 芯片的使能引脚 CSN:SPI协议的使能引脚 二. 数据传输过程 从图中可以看出,数据传输的一些特征。CSN默认为高电平,SCK默认为低电平。数据在SCK的下降沿送出,在SCK的上升沿读取数据,先发送高位,再发送低位。如果使用硬件SPI的话,就可以基于这个来设置SPI极性的相关参数了。 先发送指令(在发送指令的同时,nrf会返回状态值),然后后面就是写数据,或者是读数据了。 ![]() 三. 协议实现 由于这里的SPI的速率不能太高,所以这里就采用软件的方式来实现这个传输过程(使用硬件的话,可以将分频设置大一点),这样就可以任意选择适合的引脚了。 其中delay()是个空函数,可以加点延时,也可以不加。 Cn :命令 Data: 写入的数据 size : 数据的大小 代码的实现过程,是和上图一一对应起来的,就作详细的说明了。
四. NRF24L01命令详解 ![]() 通过上图,可以看到一共只有8个命令。其中常用的有前六个命令 R/W_REGISTER: 读写寄存器命令,对同一个寄存器进行读写,命令只有第六位不一样,为1就是写,为0就是读。A就是具体的寄存器的地址了。这里有一点要注意,写寄存器是有要求的,只有在掉电或者待机模块下可写。可以简单理解为CE为0,就可以写。 R_RX_PAYLOAD : 读取接收到的数据 W_RX_PAYLOAD:将需要发送的数据写入fifo中,等待发送 FLUSH_TX/RX: 清空发送/接收数据的FIFO。 五. NRF24L01寄存器 一共有24个寄存器,这里就不一一列举出来了,具体对应的功能可以查看数据文档(是中文的哦)。
六. NRF24L01状态 通过下图,可以知道各个状态对应的功能。这里发送模型需要注意一下, CE为高10us后,就开始发送数据,如果这个时候把CE拉低了,还是会停留在发送模式,直到数据发送完成,然后到待机模式1 ![]() |
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南