A单片机用nrf24l01无线模块向B单片机发送数据,B单片机向PC串口发送数据,遇到了问题,求大神帮忙。

2024-12-05 15:06:05
推荐回答(2个)
回答1:

nRF24L01最好不要用循环读取缓冲区的办法去判断有没有数据。

最好还是用IRQ引脚

用外部中断读取数据。

而且设置接收模式1次就可以了 不需要一直设置。因为很有可能在设置过程中 对方发数据过来然后这边还在设置阶段导致根本接不到数据。或者接收错误。

最好的办法是

SetRX_Mode();//设置接收模式
while(1)//主循环
{
    if(!nRF24L01_IRQ)//等待接收中断
    {
        if(nRF24L01_RxPacket(RxBuf))//读取一次数据包
        {
            for(b=0;b<2;b++)
            {       
N=RxBuf[0];    
senddata(TN);     //向串口发送温度的整数部分

TD=RxBuf[1];  
senddata(TD);     //向串口发送温度的小数部分
    }
        }
    }
}

回答2:

为什么要发送两遍呢?
nRF24L01_RxPacket(RxBuf)这个子程序可能有点问题,似乎一直为真(非0),所以总是不断的发送数据给PC。