天线|RF射频
直播中

刘晓英

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

NRF24L01一发一收测试成功但发送传感器返回的数据就不行了是为什么?

两块无线模块板子,单独发送一串字符串的时候,主从收发正常。都是0通道,也开启了自动应答。定义字节32,字符串长度小于32。程序参考发烧友的。

但是主模块  发送  传感器采集的浮点型数据(并已经转换为字符串后,方法是先转换成整数,再一位一位存到数组里)时,就不成功了。主模块成功发了两次正确的数据后,停在while(NRF24L01_IRQ!=0);

从模块也没收到。不清楚这种情况和单独发字符串的区别在哪,是不是我浮点数据(我定义为5个字节)转换为字符串 方法不得当,还是传感器程序中的一些延时什么的,会对无线模块程序执行有什么影响。求各位大爷赐教

回帖(3)

张红

2020-5-27 16:59:27
我把主程序贴上,大家看看



int main(void)

 {       

                u32 i=0;

                float temp0;

                 u8 tbuf1[4];

                u16 temp1;         

                RCC_Configuration();

                I2c1_Configuration();

                Uart_Configuration();

                NVIC_Configuration();

               Delay(0xFFFFF);

                NRF24L01_Init();

                LED_Init();

                Delay_init();

                while(NRF24L01_Check())//

                {

                 printf("nRF24L01检测出错 nr");

                 delay_ms(100);

                }

                NRF24L01_TX_Mode();

                printf("NRF24L01 TX_Mode nr");

                while(1)

                {               



               

                  s_connectionreset();//

                         delay_ms(500);

                       

                        temp0 = Get_SHT11();//温湿传感器数据。浮点型。

                        temp1=temp0*10;

                       tbuf1[0]=temp1/100+0x30;

                        tbuf1[1]=temp1%100/10+0x30;

                        tbuf1[2]='.';

                        tbuf1[3]=temp1%10+0x30;

                //        tbuf1[4]=temp1%10+0x30;



                        if(NRF24L01_TxPacket(tbuf1)==TX_OK)

                        {       

               

                                printf("Send data is: %srn",tbuf1);

                               LED=!LED;

                                //NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG,0x00);  //Power Down

                        }

                        else

                        {                                                                                          

                                 printf("nr请确认接收端是否正常");       

                                           

                        }

                 delay_ms(500);



        }

 }
举报

王桂香

2020-5-27 17:10:21
不好意思,主机发送的问题解决了,是自己犯二了,在主程序中加了NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG,0x00);  //Power Down 

刚开始的时候我没有注释掉这句,同时也没加上上电语句,所以,掉电后就醒不来了。

现在的问题,主机可以一直发,从机收不到。从机状态REG里的值是,0X0E。
举报

张秀芳

2020-5-27 17:16:21
再次不好意思,问题解决,是自己刚测试时,把通道应答给关了。
举报

更多回帖

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