高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-5-27
|
本帖最后由 我就是我 于 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
|
|