天线|RF射频
直播中

高倩

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

nrf24l01接收机在发送应答信号时能否接收到其他通道的数据?

请教,谢谢!

回帖(2)

李刚

2020-5-18 09:23:33
可以的,你开启好对应的接收通道就可以,地址不能是一样的。
举报

古孟谦

2020-5-18 09:38:40


大体情况:

     目前我开了6路,发射机每隔1s发送一次数据,经过长期几十个小时的测试,数据收发比较稳定。但是不定期时间内,会丢1-2次包,丢包很少,但是存在,在三秒之内所有的发射机必定都会收到正确的数据(通过看闪灯的情况)。



目前在分析丢包的原因:

1.同频干扰排除,之前看到一个网友,调试时频率调到2.5G, 排除wifi干扰。  频率调到2.5G测试过,仍然存在这个问题。

2.电源干扰。使用的电池都比较好的稳定的电池。加在stm32与nrf24l01,还有pa上的都比较稳定。

3.第三点我就想到,开启了ack后,看到英文手册上,接收机接收到数据后,shockburst模式中自动切换到发射模式,发送应答,发完后又切换回来。

会不会存在这样一种情况:就是6路发射机的信号同时到达,接收机接收其中一路,应答一路。其他发射机,则进入自动重发。(这里设置的重发15次)以此这样循环。但是不确定这一点。跳出来想想,芯片设计能1对6,肯定是考虑到这种情况的。



我想问一下大家,有没有遇到的同样的情况的。或是能给我提供一些其他丢包的原因 。^-^谢谢!





下面是发包代码。



void nRF24L01_TxPacket(unsigned char * tx_buf,u8  tx_len, unsigned char pwr)

{

     u8 sta_reg;

     CE_0;

    inerDelay_us(10);//StandBy I模式

 

    sta_reg = SPI_Read(STATUS);

    if(sta_reg & 0x70)

        SPI_RW_Reg(WRITE_REG+STATUS,sta_reg & 0x70); //清标志 



   SPI_Write_Buf(WR_TX_PLOAD, tx_buf, tx_len);          // 装载数据



   SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送

   CE_1;                                                       //置高CE,激发数据发送

   inerDelay_us(60);



  do{

       sta_reg = SPI_Read(STATUS);

       if(sta_reg & 0x20)

          break;                                          

     inerDelay_us(5);

 }while(!(sta_reg & 0x10));



SPI_RW_Reg(FLUSH_TX,0xff);//清空FIFO

CE_0;//发送完成后,进入待机模式1 

}

                            

   main.c中:



 nRF24L01_TxPacket(Tx_DAT,TX_PLOAD_WIDTH_WORK,pwr);// 发送    

if (0x20 & SPI_Read(STATUS))

    LED_flash(GREEN,1); //闪绿灯,发送成功

else 

   LED_flash(ORANGE,1);//闪橙灯,发送失败 
举报

更多回帖

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