完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、概述
NRF24L01是一款工作在2.4G~2.5GHz世界通用的ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型ShockBurst模式控制器、功率放大器、晶体振荡器、调制器、解调器。 二、基本功能 1)真正的GFSK单片式收发芯片 2)增强型ShockBurst功能 3)地址及CRC校验功能 4)无线速率:1或2Mbps 5)SPI接口速率:0~8Mbps 6)125个可选的工作频道 7)低工作电压:1.9~3.6V 三、模块引脚说明 下面以深圳云佳科技有限公司的NRF24L01模块为例,对2.4G NRF24L01模块引脚进行说明。模块如下图所示。 GND——GND VCC——VCC CE——数字输入,RX或TX模式选择 CSN——数字输入,SPI片选信号 SCK——数字输入,SPI时钟 MOSI——数字输入,从SPI数据输入脚 MISO——数字输出,从SPI数据输出脚 IRQ——数字输出,可屏蔽中断脚 四、NRF24L01的SPI命令宏定义 #define NRF_READ_REG 0X00 //读配置寄存器 #define NRF_WRITE_REG 0X20 //写配置寄存器 #define RD_RX_PLOAD 0X61 //读RX有效数据:1~32个字节 #define WR_TX_PLOAD 0XA0 //写TX有效数据:1~32个字节 #define FLUSH_TX 0XE1 //清除TX FIFO寄存器,发射模式下 #define FLUSH_RX 0XE2 //清除RX FIFO寄存器,接收模式下 #define REUSE_TX_PL 0XE3 //重新使用上一包有效数据 #define NOP 0xFF //空操作 五、NRF24L01相关寄存器地址宏定义 #define CONFIG 0X00 //配置寄存器 #define EN_AA 0X01 //使能自动应答功能 #define EN_RXADDR 0X02 //接收地址允许 #define SETUP_AW 0X03 //设置地址宽度 #define SETUP_RETR 0X04 //建立自动重发 #define RF_CH 0X05 //射频通道 #define RF_SETUP 0X06 //射频寄存器 #define STATUS 0X07 //状态寄存器 #define OBSERVE_TX 0X08 //发送检测寄存器 #define CD 0X09 //载波检测 #define RX_ADDR_P0 0X0A //数据通道0接收地址 #define RX_ADDR_P1 0X0B //数据通道1接收地址 #define RX_ADDR_P2 0X0C //数据通道2接收地址 #define RX_ADDR_P3 0X0D //数据通道3接收地址 #define RX_ADDR_P4 0X0E //数据通道4接收地址 #define RX_ADDR_P5 0X0F //数据通道5接收地址 #define TX_ADDR 0X10 //发送地址 #define RX_PW_P0 0X11 //接收数据通道0有效数据宽度 #define RX_PW_P1 0X12 //接收数据通道1有效数据宽度 #define RX_PW_P2 0X13 //接收数据通道2有效数据宽度 #define RX_PW_P3 0X14 //接收数据通道3有效数据宽度 #define RX_PW_P4 0X15 //接收数据通道4有效数据宽度 #define RX_PW_P5 0X16 //接收数据通道5有效数据宽度 #define FIFO_STATUS 0X17 //FIFO 状态寄存器 六、NRF24L01的工作模式 6.1、NRF24L01模式配置 6.2、发射模式函数配置 void NRF_TX_Mode(void) { NRF_CE_LOW(); NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01); NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01); NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a); NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANNEL); NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f); NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0e); NRF_CE_HIGH(); delay_us(130); } 6.3、接收模式函数配置 void NRF_RX_Mode(void) { NRF_CE_LOW(); NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); NRF_WriteReg(NRF_WRITE_REG+EN_AA,0X01); NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0X01); NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANNEL); NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH); NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f); NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0f); NRF_CE_HIGH(); } 6.4、发射接收模式说明 1)在发射模式下,CE至少要拉高10us。 2)NRF24L01在接收模式下可以接收6路不同通道的数据,每一个数据通道使用不通的地址,但是共用相同的频道。 3)数据通道0是唯一一个可以配置为40位自身地址的数据通道,1~5数据通道都为8位自身地址和32位共用地址。 4)所有的数据通道都可以设置为增强型ShockBurst模式。 七、NRF24L01的打包格式 7.1、增强型ShockBurst模式下的数据包形式 前导码 | 地址(3~5字节) | 9位(标志位) | 数据(1~32字节) | CRC校验(0/1/2字节) 7.2、ShockBurst模式下与NRF2401等相兼容的数据包形式 前导码 | 地址(3~5字节) | 数据(1~32字节) | CRC校验(0/1/2字节) 7.3、数据包说明 前导码:在发送模式下加入,接收模式下去除,用来检测0和1。 地址:1)地址内容为接收机地址 2)地址宽度可以是3、4或5字节宽度 3)地址可以对接收通道和发射通道分别进行配置 4)从接收的数据包中自动去除地址 标志位:1)PID,数据包识别。其中两位是用来每当接收到新的数据包后加一。 2)七位保留,用作将来与其他产品相兼容 3)当NRF24L01与NRF2401/NRF24E1通讯时不起作用 数据:1~32字节宽度 CRC:CRC校验是可选的 八、小结 1、对于NRF24L01,在使用的时候要注意收发双方的频道要相同(NRF24L01总共有40个可选频道) 2、注意寄存器的配置 3、地址要统一 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1849浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
612浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
505浏览 3评论
509浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
490浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 18:18 , Processed in 0.831619 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号