天线|RF射频
直播中

周烜

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

NRF24L01接收方不提前打开,发送方就一直提示发送失败怎么解决?

最近在调试NRF24L01 用的是网上常规的205的demo,又找了野火的demo进行修改,目前通讯都比较正常了,但是有一个问题,必须提前给接收方上电,再给发送方上电,才能够正常通讯,否则发送方就会提示发送失败(达到超时次数)!!!
while(1)
        {
                #ifdef Open_TX        
                        TX_Mode(TX_BUF);
                        NRF24L01_Send();
                        //_printf("rnSend data£o0x%xrn",TX_BUF[0]);
                        Delay(0xffff);
                #else
                        RX_Mode();
                        NRF24L01_Receive();
                        Delay(0x3fff);
                #endif
        }
void NRF24L01_Send(void)
{
    u8 status=0x00;
        static u8 sss;
        //delay1us(10);
        CE(0);
        SPI_Write_Buf(WR_TX_PLOAD, TX_BUF, TX_PLOAD_WIDTH);
        CE(1);
        while(IRQ);
        
        delay1us(10);
        status=SPI_Read_Reg(STATUS);        // ¶áè¡×′쬼Ä′æÆäà′ÅD¶Ïêy¾Y½óêÕ×′¿ö
        SPI_RW_Reg(WRITE_REG_NRF24L01 + STATUS, status);      // Çå3yTX£¬èÃIRQà-μí£»
        SPI_RW_Reg(FLUSH_TX,NOP);
        //printf("STATUS½óêü×′쬣o0x%2xrn",status);
        if(status&TX_DS)        /*tx_ds == 0x20*/
        {
                //printf("STATUS½óêü×′쬣o0x%2xrn",status);
                printf("rnSEND OK0x%2x",sss++);                        
        }
        else if(status&MAX_RT)
        {
                //Delay(0xffffff);
                printf("rnSEND ERROR!!!");        
                //SPI_RW_Reg(WRITE_REG_NRF24L01 + STATUS, 0x10);      // Çå3yTX£¬èÃIRQà-μí£»                        
        }
}

回帖(4)

陈福蓓

2020-7-23 10:08:11
问题找到:1、杜邦线的问题,造成无线模块上电初始化不通过2、程序里面没有模块检测部分,造成有时候无线模块上电没有初始化好就开始发送或者接收
我看了原子哥的程序,进行了修改,现在ok了,还是要谢谢原子哥
举报

冯伟

2020-7-23 10:23:53
是不是开启了自动应答?
举报

周芸

2020-7-23 10:39:29
是的,这个自动应答的作用是什么?如果关闭自动应答,是不是我的发送方和接收方都要关闭?
举报

崔丽

2020-7-23 10:51:16
我发现不是自动应答的问题,可能是我用杜邦线连接的问题,后来我又进行了测试,有时候接收方后上电,发送方也可以发送成功
举报

更多回帖

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