发 帖  
[问答]

NRF24L01发送失败的原因是什么?

4651 nRF24L01



并写函数获得STATUS和FIFO_STATUS的值


u8 NRF_Get_State(void)
{
u8 status;
status=NRF24L01_Read_Reg(READ_REG_NRF+STATUS);
return status;
}
u8 NRF_Get_FIFOState(void)
{
u8 FIFO_status;
FIFO_status=NRF24L01_Read_Reg(READ_REG_NRF+NRF_FIFO_STATUS);
return FIFO_status;
}[/mw_shl_code]





在主函数中进行验证:


[C] 纯文本查看 复制代码
if(sta==0x2e)  {  LED1=0; }if(FIFO_sta==0x11){LED2=0;}





实验发现两盏灯都没有亮,说明发送失败了。

其余部分的NRF程序都是直接从原子的例程拷贝的,在线调试时全速运行发现程序的确卡死在这里了,

while(NRF24L01_IRQ!=0);//等待发送完成

但是当我单步运行的时候发现程序正常运行过这里,且在单步调试过程中,两盏灯都是能亮起来的。

为什么单步运行和全速运行结果不同呢?



注:NRF24L01_Check检测到连接已经成功了



下面附上我的main函数


int main(void)
{
        u8 temp_buf[33]={0x01,0x02,0x03,0x04,0x01,0x02,0x03,0x04,0x01,0x02,0x03,0x04,0x01,0x02,0x03,0x04,0x01,0x02,0x03,0x04,0x01,0x02,0x03,0x04,                         0x01,0x02,0x03,0x04,0x01,0x02,0x03,0x04,0x07};
        u8 sta;
        u8 FIFO_sta;
        LED_Init();
        NRF24L01_Init();        
        while(NRF24L01_Check())
        {
                LED3=0;  
                Delay_1us(5000);
                LED3=1;
                Delay_1us(5000);
        }
        TX_Mode();
        while(1)
        {
                NRF24L01_TxPacket(temp_buf);
                sta=NRF_Get_State();
                FIFO_sta=NRF_Get_FIFOState();
                if(sta==0x2e)
                {
                        LED1=0;
                }
                if(FIFO_sta==0x11)
                {
                        LED2=0;
                }
                NRF24L01_Write_Reg(WRITE_REG_NRF+STATUS,0XFF);
                Delay_10us(10);
        }
}
[/mw_shl_code]

不知道到底怎么解决这个问题,大家有遇到这种情况么?应该怎么解决呢?求指教!谢谢!
0
2020-6-13 09:00:35   评论 分享淘帖 邀请回答 举报
17个回答
2020-6-13 07:51:05 评论

举报




发现LED2是亮了,证明FIFOSTATUS的值的确是0x11

但是LED1还是不亮的,即无论上述三个参数是否使能,STATUS都不能得到0x2e的值

请问是不是我对上面教程中的话理解错误了呢?

到底什么时候才有STATUS=0X2E FIFOSTATUS=0X11?

是不自动重发失能应答和接收地址的时候?还是自动重发且使能自动应答和接收地址的时候??
2020-6-13 07:57:40 评论

举报

2020-6-13 08:09:27 评论

举报

2020-6-13 08:24:08 评论

举报

头像被屏蔽
2020-6-13 08:42:16 评论

举报

2020-6-13 08:54:36 评论

举报

2020-6-13 09:06:05 评论

举报

2020-6-13 09:13:02 评论

举报

2020-6-13 09:21:44 评论

举报

2020-6-13 09:33:44 评论

举报

2020-6-13 09:49:49 评论

举报

2020-6-13 10:06:20 评论

举报

2020-6-13 10:18:04 评论

举报

2020-6-13 10:33:29 评论

举报

2020-6-13 10:43:46 评论

举报

2020-6-13 10:52:45 评论

举报

2020-6-13 11:09:40 评论

举报

只有小组成员才能发言,加入小组>>

461个成员聚集在这个小组

加入小组

创建小组步骤

快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /6 下一条

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