STM32
直播中

刘丽菲

7年用户 887经验值
私信 关注
[问答]

怎样去解决RF24L01模块无法发送数据的问题呢

怎样去解决RF24L01模块无法发送数据的问题呢?求大神指点


回帖(1)

郎渐海

2021-12-16 10:51:03
原码是正点原子的官方例程,对于发送模块,我只是修改了主函数部分。
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "24l01.h"          



int main(void)
{         
        u8 key,mode,j=0;
        u16 t=0;                         
        u8 tmp_buf[33];                    
        delay_init();                      
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);                
        LED_Init();                                         
        NRF24L01_Init();                   
        POINT_COLOR=RED;               
        while(NRF24L01_Check())
        {}         
   
                NRF24L01_TX_Mode();
                mode=' ';
                while(1)
                {                                                              
                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
                                //key=mode;
                                for(t=0;t<32;t++)
                                {
                                //        key++;
                                //        if(key>('~'))key=' ';
                                        tmp_buf[t]=j++;       
                                }
                                //mode++;
                                if(mode>'~')mode=' ';            
                                tmp_buf[32]=0;//¼ÓÈë½áÊø·û                  
                        }
                        delay_ms(1500);                                    
                };
}

程序下载到开发板,能检测到RF24L01模块是正常的,且有效。但是,就是无法发送数据,一直都停在那里,然后经过一步步的调试。都没有任何的改变,依旧发送不了信息。
所以就只能用原函数,未阉割版,也就是未改动的【正点原子】官方例程,在两个F1上尝试数据的发送与接收。
但是依旧是停在发送的步骤没反应,而且没办法跳出24l01.c文件,函数u8 NRF24L01_TxPacket(u8 *txbuf)里面的语句:

while(NRF24L01_IRQ!=0);


但是一个偶然的尝试,用手掰一下发送板的nrf24l01模块,神奇的可以通信了。所以,可以断定代码肯定好使了。
接着尝试,发现主要影响语句【while(NRF24L01_IRQ!=0);】,而这个语句和NRF_IRQ相关,也就是和PG6管脚相关。所以,在没有成功发送的时候,利用一根跳线跳出PG6,然后在跳线的另一端,用手搓一下就能实现数据发送了,也就是说,问题就出在PG6口上了。但是只知道和脉冲信号有关系,却不知道怎么修改程序。【求大神指点】
所以我就做了一个比较狗的修改。如图:

举报

更多回帖

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