OpenEdv-开源电子网

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

NRF24L01中间必须加延时才能正常接受,否则发送端达到最大发送次数

[复制链接]

10

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-11-3
在线时间
32 小时
发表于 2016-11-25 11:59:45 | 显示全部楼层 |阅读模式
10金钱
Rx_Led_State()
{
                          LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
                          NRF24L01_RX_Mode(Slave_Address);
                          delay_ms(50);
                          if(NRF24L01_RxPacket(RX_DATA,1)==0);
                                {  
                                                LED1=0;
                                                LCD_Fill(60,230,239,230+16,WHITE);
                                          if(RX_DATA[0]==LED_ON)
                                                LCD_ShowString(80,230,239,32,16,"LED_ON");
                                                else if(RX_DATA[0]==LED_OFF)
                                                LCD_ShowString(80,230,239,32,16,"LED_OFF");                                        
                                                else  
                                                {
                                                    sprintf((char*)CHECK_DATA,"%02x",RX_DATA[0]);                                       
                                                           LCD_ShowString(80,230,239,32,16,CHECK_DATA);                                                     
                                                }
                                                LED1=1;
                                }                                               
                               
}

我在NRF24L01_RX_Mode(Slave_Address);与 if(NRF24L01_RxPacket(RX_DATA,1)==0);中间加了一个50ms以上延时才能正常接受,如果不加这个延时就一直不能接收,读出来的数据一直是00,这是为什么呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-11-26 00:56:56 | 显示全部楼层
开启了接收应答么?可能是接收方回应比较慢。
回复

使用道具 举报

8

主题

47

帖子

1

精华

高级会员

Rank: 4

积分
675
金钱
675
注册时间
2014-9-17
在线时间
89 小时
发表于 2016-11-26 16:37:13 | 显示全部楼层
我之前好像也遇到过这个问题,貌似原子哥的设置发送和接受模式函数在CE拉高后缺少一点延时,设置接受模式CE拉高后130us才开始检测空中信息,设置发送模式CE至少拉高10us开始启动发射
当你的才华还撑不起你的野心时你就应该静下心来学习。当你的经济还撑不起你的梦想时,你就应该踏实的去工作。
回复

使用道具 举报

8

主题

97

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
17560
金钱
17560
注册时间
2016-1-20
在线时间
63 小时
发表于 2016-11-27 11:48:42 | 显示全部楼层
其实我有几次用延时函数 也出现过问题 是不是延时函数的问题  相对用系统时钟来确定的delay 我还是喜欢用nop
回复

使用道具 举报

10

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-11-3
在线时间
32 小时
 楼主| 发表于 2016-11-27 19:14:51 | 显示全部楼层
正点原子 发表于 2016-11-26 00:56
开启了接收应答么?可能是接收方回应比较慢。

开启接受应答了,如果没加延时的话,那个发送方会老是发送达最大次数
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 09:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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