OpenEdv-开源电子网

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

关于NRF24L01发送失败问题

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2015-12-11
在线时间
1 小时
发表于 2017-8-6 01:33:46 | 显示全部楼层 |阅读模式
1金钱
今天用c8t6和nrf24l01想做个通讯,可是发现接收端并没有接收到数据,然后仿真了一下,发现数据并没用发送出去。然后用原子哥的mini板下了一个例程,开了接收模式,通信频道也一样,我发现每次发送端重新上电的那一瞬间或者开启仿真的那一瞬间,mini开发板可以接收到一次数据,后面就再也接收不到了。。请问是什么问题啊?

最佳答案

查看完整内容[请看2#楼]

我之前也做这个NRF,用例程,发现会丢包,或者只能发一次这样的现象,然后问了我同学帮我改了一下接受和发送的函数,再加上我自己又改了下main函数里的代码比以前稳一点了,基本不丢包,能多次发送。 初始化代码,原子哥的例子不错 在main函数里写 先做器件检测 while(NRF24L01_Check()) { oled_printf(0,0,"NRF24L01 Error"); delay_ms(200); oled_printf(0,1,"NRF24L01 Wait"); ...
只要学不死,就往死里学
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
发表于 2017-8-6 01:33:47 | 显示全部楼层
我之前也做这个NRF,用例程,发现会丢包,或者只能发一次这样的现象,然后问了我同学帮我改了一下接受和发送的函数,再加上我自己又改了下main函数里的代码比以前稳一点了,基本不丢包,能多次发送。

初始化代码,原子哥的例子不错
在main函数里写

先做器件检测
    while(NRF24L01_Check())
    {
        oled_printf(0,0,"NRF24L01 Error");
        delay_ms(200);
        oled_printf(0,1,"NRF24L01 Wait");
        delay_ms(200);
    }
oled_printf(0,2,"NRF24L01 OK");

再设置NRF模式为接受模式(平时不发数据让它处在接受模式)
    NRF24L01_RX_Mode();

再设置按键选择模式
比如mode = 0是接受,mode = 1是发送 用按键去做选择

接下来分模式去做
接受部分的代码
                    接受
                    NRF24L01_RX_Mode();
                    if(NRF24L01_RxPacket(rx_buf)==0)
                    {
                        delay_ms(100);
                        rx_buf[sizeof("你自己设置的字符串")-1]='\0';
                        oled_printf(0,3,"receive : %s ",rx_buf);
                    }

发送部分
发送
                    NRF24L01_TX_Mode();
                    while((errcode=NRF24L01_TxPacket(tx_buf))!=TX_OK)
                    {
                        delay_ms(100);
                        oled_printf(0,3,"err : %d ",errcode);
                        delay_ms(100);
                        oled_printf(0,3,"     ");
                     
                    }                                       
                    oled_printf(0,3,"send : %s ",tx_buf);
                    NRF24L01_RX_Mode();


这个代码还有一些小问题,不过大概是这样写的,你可以参考一下,希望能帮到你
回复

使用道具 举报

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
发表于 2017-8-6 01:44:41 | 显示全部楼层
是自带的例程么?
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2015-12-11
在线时间
1 小时
 楼主| 发表于 2017-8-6 01:49:28 | 显示全部楼层
Anyint 发表于 2017-8-6 01:44
是自带的例程么?

就是源自的例程
只要学不死,就往死里学
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 03:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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