天线|RF射频
直播中

李燕梅

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

NRF24l01与SPI模块无法通信的原因?

两个模块,一个发送一个接收,修改原子哥的代码经测试单片机与模块SPI通信没有问题,但无法通信

uchar NRF24L01_TxPacket(uchar *txbuf)

{

        uchar sta;  

        CE=0;

          SPI_W_DBuffer(W_TX_PLOAD,txbuf,TX_DATA_WITDH);//写数据到TX BUF  32个字节

        CE=1;//启动发送           

        while(IRQ!=0);//等待发送完成

        sta=SPI_R_byte(STATUS);  //读取状态寄存器的值           

        SPI_W_Reg(W_REGISTER+STATUS,sta); //清除TX_DS或MAX_RT中断标志

        if(sta&0x10)//达到最大重发次数

        {

                SPI_W_Reg(FLUSH_TX,0xff);//清除TX FIFO寄存器

                return 2;

        }

        if(sta&0x20)//发送完成

        {

                return 1;

        }

        return 3;//其他原因发送失败

}

这个函数的返回值是2,就是达到最大重发次数,这说明发送成功了没?

回帖(2)

唐奇

2020-5-1 13:06:53
测试平台是两块51,去掉自动应答和重发,通信成功了一次,现在又不行了,发送端提示发送成功买但接收端没反应
举报

刘满贵

2020-5-1 13:15:55
发送:

while(1)

        {

                for(i=0;i
                {

                        if(NRF24L01_TxPacket(&TX_Buffer)==1)//发送数据

                        {

                                P3=0x55;

                                _delay_ms(500);

                        }

                        else 

                        {

                                P3=0x0f;

                                _delay_ms(500);

                        }                       

                }

        }
举报

更多回帖

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