野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7646|回复: 1

关于nRF24L01通信问题

[复制链接]
发表于 2022-1-23 19:49:00 | 显示全部楼层 |阅读模式
本帖最后由 我就是我 于 2022-1-23 20:39 编辑

2.4G模块nRF24L01P由于使用SPI接口无法直接被电脑识别,而且其无线信号不能像WiFi一样用电脑连接,导致程序运行失败时无任何特征信号,调试困难。
检查程序后,表示程序在发送时一直卡在等待发送中断位置,具体原因未知,又经过测试,直接将程序初始化为发送模式可正常发送,直接初始化为接收模式可接收数据。
所以猜想:nRF24L01P在发送模式和接收模式之间并不能像文档中那样直接通过拉低CE的待机模式进行切换
实验:在发送数据的TX_Mode()之前进行掉电操作,结论:可正常收发,
但是此操作每次发送数据都需要初始化2401,操作繁琐耗时较长。
根据datasheet,掉电模式并不会复位寄存器,所以尝试仅进行重新上电操作,成功。

最终结论:2401可以在发送空闲模式直接经过拉低CE的待机模式切换为接收模式,但是在接收模式切换为发送模式时必须经过掉电操作,掉电操作会停止晶振,启动晶振可能会耗时2ms。

之前我们有传言称2401不能跨平台通信,即STM32不能与51之间通信,当时我不信,毕竟我移植例程同平台之间也无法通信,实际上可能是例程中的地址、频道等参数错误,或者没有进行掉电操作,发送端根本没有发送数据。

本程序一端部分使用STM32霸道开发板,另一端使用51单片机,通过电脑进行数据发送和接收、
STM32使用SPI1,速度9M,CE:PG8,IRQ:PC4,CSN:PG15,MISO:PA7,MOSI:PA6,SCLK:PA5

51为STC15W408AS,主频33.1776MHz,SPI四分频约为8.2944M,CE:P1.1,IRQ:P3.3,CSN:P1.2,MISO:P1.4,MOSI:P1.3,SCLK:P1.5
串口波特率均为115200,51部分可以使用上位机修改配置。
本程序在nRF24L01P.h中可以修改宏定义匹配硬件SPI、模拟SPI、是否开启IRQ管脚中断、单片机选择
注:51单片机使用硬件SPI时注意选择的单片机是否具有SPI接口,本程序选择STC15W408AS单片机是因为该芯片具有SPI、串口、内置EEPROM。

附件包括:2401相关文档、STM32程序、51程序(测试模组下位机)、上位机程序、51PCB

51程序.zip

45.93 KB, 下载次数: 5

51模组PCB.zip

1.87 MB, 下载次数: 5

STM32程序.zip

422.02 KB, 下载次数: 21

上位机程序.zip

573.76 KB, 下载次数: 12

相关文档.zip

2.15 MB, 下载次数: 6

回复

使用道具 举报

发表于 2022-1-24 09:18:41 | 显示全部楼层
顶一个~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-22 08:23 , Processed in 0.026898 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表