OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4793|回复: 3

NRF24L01 一发一收(字符串)测试成功,但发送传感器返回的数据就不行了。原子哥赐教

[复制链接]

32

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1335
金钱
1335
注册时间
2014-3-27
在线时间
352 小时
发表于 2014-3-27 16:48:44 | 显示全部楼层 |阅读模式
两块无线模块板子,单独发送一串字符串的时候,主从收发正常。都是0通道,也开启了自动应答。定义字节32,字符串长度小于32。程序参考正点原子的。<br />
但是主模块 &nbsp;发送 &nbsp;传感器采集的浮点型数据(并已经转换为字符串后,方法是先转换成整数,再一位一位存到数组里)时,就不成功了。主模块成功发了两次正确的数据后,停在while(NRF24L01_IRQ!=0);<br />
从模块也没收到。不清楚这种情况和单独发字符串的区别在哪,是不是我浮点数据(我定义为5个字节)转换为字符串 方法不得当,还是传感器程序中的一些延时什么的,会对无线模块程序执行有什么影响。求各位大爷赐教<br />
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1335
金钱
1335
注册时间
2014-3-27
在线时间
352 小时
 楼主| 发表于 2014-3-27 17:04:54 | 显示全部楼层
我把主程序贴上,大家看看
<br>
<br>int&nbsp;main(void)
<br>&nbsp;{       
<br>                u32&nbsp;i=0;
<br>                float&nbsp;temp0;
<br>&nbsp;                u8&nbsp;tbuf1[4];
<br>                u16&nbsp;temp1;        &nbsp;
<br>                RCC_Configuration();
<br>                I2c1_Configuration();
<br>                Uart_Configuration();
<br>                NVIC_Configuration();
<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delay(0xFFFFF);
<br>                NRF24L01_Init();
<br>                LED_Init();
<br>                Delay_init();
<br>                while(NRF24L01_Check())//
<br>                {
<br>                &nbsp;printf("nRF24L01检测出错&nbsp;\n\r");
<br>                &nbsp;delay_ms(100);
<br>                }
<br>                NRF24L01_TX_Mode();
<br>                printf("NRF24L01&nbsp;TX_Mode&nbsp;\n\r");
<br>                while(1)
<br>                {               
<br>
<br>               
<br>        &nbsp;&nbsp;        s_connectionreset();//
<br>                &nbsp;        delay_ms(500);
<br>                       
<br>                        temp0&nbsp;=&nbsp;Get_SHT11();//温湿传感器数据。浮点型。
<br>                        temp1=temp0*10;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbuf1[0]=temp1/100+0x30;
<br>                        tbuf1[1]=temp1%100/10+0x30;
<br>                        tbuf1[2]='.';
<br>                        tbuf1[3]=temp1%10+0x30;
<br>                //        tbuf1[4]=temp1%10+0x30;
<br>
<br>                        if(NRF24L01_TxPacket(tbuf1)==TX_OK)
<br>                        {       
<br>               
<br>                                printf("Send&nbsp;data&nbsp;is:&nbsp;%s\r\n",tbuf1);
<br>                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LED=!LED;
<br>                                //NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG,0x00);&nbsp;&nbsp;//Power&nbsp;Down
<br>                        }
<br>                        else
<br>                        {                                                                                &nbsp;&nbsp;&nbsp;       
<br>&nbsp;                                printf("\n\r请确认接收端是否正常");       
<br>                                        &nbsp;&nbsp;&nbsp;
<br>                        }
<br>                &nbsp;delay_ms(500);
<br>
<br>        }
<br>&nbsp;}
回复 支持 反对

使用道具 举报

32

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1335
金钱
1335
注册时间
2014-3-27
在线时间
352 小时
 楼主| 发表于 2014-3-27 17:30:22 | 显示全部楼层
不好意思,主机发送的问题解决了,是自己犯二了,在主程序中加了NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG,0x00);&nbsp;&nbsp;//Power&nbsp;Down&nbsp;
<br>刚开始的时候我没有注释掉这句,同时也没加上上电语句,所以,掉电后就醒不来了。
<br>现在的问题,主机可以一直发,从机收不到。从机状态REG里的值是,0X0E。
回复 支持 反对

使用道具 举报

32

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1335
金钱
1335
注册时间
2014-3-27
在线时间
352 小时
 楼主| 发表于 2014-3-27 17:34:47 | 显示全部楼层
再次不好意思,问题解决,是自己刚测试时,把通道应答给关了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表