野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14008|回复: 15

我的NRF24L01例程怎么跑不通?

[复制链接]
发表于 2013-8-29 21:38:36 | 显示全部楼层 |阅读模式
本帖最后由 我想大声告诉你 于 2013-8-29 21:41 编辑

板子是野火的,NRF24L01模块也是野火的,但是就怎么跑不通呢?到这句while(NRF_Read_IRQ()!=0); 就过不去了,各位大侠帮帮忙
回复

使用道具 举报

发表于 2013-8-29 21:55:48 | 显示全部楼层
没接收到数据,即 IRQ 没产生,卡在死循环。
NRF24L01+ 需要两块板子,一块接收,一块发送的哦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-30 08:40:36 | 显示全部楼层
我也是两块板子,两个模块,但是就是没有通讯,每次都是卡在等待中断哪里,卡在那不就说明数据没有发出去吗?中断我也使能了,后来我就想只用一块板子一个模块,只下载主机的程序,但是还是不行,我觉得主机程序应该会发出数据,同时又没收从机的应答,应该报发送已达重复发送最大值,发送失败,但是结果还是那个样子卡在等待中断那,
回复 支持 反对

使用道具 举报

发表于 2013-8-30 11:08:53 | 显示全部楼层
我想大声告诉你 发表于 2013-8-30 08:40
我也是两块板子,两个模块,但是就是没有通讯,每次都是卡在等待中断哪里,卡在那不就说明数据没有发出去吗 ...

试下 先 运行接收 端的模块
再运行 发送端的模块看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-30 12:17:02 | 显示全部楼层
小栋 发表于 2013-8-30 11:08
试下 先 运行接收 端的模块
再运行 发送端的模块看看

试过了还是不行,我把主机程序改成光发送,还是没有中断标志,怎么感觉好像是没有启动中断,然后我就在发射模式的配置完成之后,又把寄存器的值读出来了,也没问题,现在是一头雾水啊~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-30 12:17:22 | 显示全部楼层
蒜你狠 发表于 2013-8-29 21:55
没接收到数据,即 IRQ 没产生,卡在死循环。
NRF24L01+ 需要两块板子,一块接收,一块发送的哦

我也是两块板子,两个模块,但是就是没有通讯,每次都是卡在等待中断哪里,卡在那不就说明数据没有发出去吗?中断我也使能了,后来我就想只用一块板子一个模块,只下载主机的程序,但是还是不行,我觉得主机程序应该会发出数据,同时又没收从机的应答,应该报发送已达重复发送最大值,发送失败,但是结果还是那个样子卡在等待中断那,
回复 支持 反对

使用道具 举报

发表于 2013-8-30 12:20:45 | 显示全部楼层
我想大声告诉你 发表于 2013-8-30 12:17
我也是两块板子,两个模块,但是就是没有通讯,每次都是卡在等待中断哪里,卡在那不就说明数据没有发出去 ...

一个肯定是不行的,必须两个联调。
直接用例程,不要修改,然后 先运行接收的,再运行发送的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-30 13:54:52 | 显示全部楼层
onlyfly 发表于 2013-8-30 12:20
一个肯定是不行的,必须两个联调。
直接用例程,不要修改,然后 先运行接收的,再运行发送的

还是老样子,卡在那就不动了~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-31 10:05:20 | 显示全部楼层
蒜你狠 发表于 2013-8-29 21:55
没接收到数据,即 IRQ 没产生,卡在死循环。
NRF24L01+ 需要两块板子,一块接收,一块发送的哦

我是这么想的,就算没有接收端,只有一个发射端,发射段也应该能正常发出数据,IRQ是一直都没有发出去,所以一直都是高电平,把while(NRF_Read_IRQ()!=0); 换成延时就能发射,不知道是怎么回事?
回复 支持 反对

使用道具 举报

发表于 2013-8-31 10:09:33 | 显示全部楼层
我想大声告诉你 发表于 2013-8-31 10:05
我是这么想的,就算没有接收端,只有一个发射端,发射段也应该能正常发出数据,IRQ是一直都没有发出去,所 ...

你测一下NRF 的IRQ 管脚接哪个单片机IO口嘛……然后对那个IO口输出 0、1 ,检测 是否输出正常,这样就能验证 是不是 IRQ 管脚 断路了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-31 12:28:08 | 显示全部楼层
小栋 发表于 2013-8-31 10:09
你测一下NRF 的IRQ 管脚接哪个单片机IO口嘛……然后对那个IO口输出 0、1 ,检测 是否输出正常,这样就能验 ...

u8 NRF_Tx_Dat(u8 *txbuf)
{
        u8 state;  

         /*ce为低,进入待机模式1*/
        NRF_CE_LOW();

        /*写数据到TX BUF 最大 32个字节*/                                               
   SPI_NRF_WriteBuf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);

      /*CE为高,txbuf非空,发送数据包 */   
         NRF_CE_HIGH();
                 
          /*等待发送完成中断 */                           
        while(NRF_Read_IRQ()!=0);         这句换成delay,IRQ就有高低电平变化
       
        /*读取状态寄存器的值 */                              
        state = SPI_NRF_ReadReg(STATUS);

         /*清除TX_DS或MAX_RT中断标志*/                  
        SPI_NRF_WriteReg(NRF_WRITE_REG+STATUS,state);        

        SPI_NRF_WriteReg(FLUSH_TX,NOP);    //清除TX FIFO寄存器

         /*判断中断类型*/   
        if(state&MAX_RT)                     //达到最大重发次数
                         return MAX_RT;

        else if(state&TX_DS)                  //发送完成
                         return TX_DS;
         else                                                  
                        return ERROR;                 //其他原因发送失败
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-31 12:29:13 | 显示全部楼层
小栋 发表于 2013-8-31 10:09
你测一下NRF 的IRQ 管脚接哪个单片机IO口嘛……然后对那个IO口输出 0、1 ,检测 是否输出正常,这样就能验 ...

要是不换就一直是高电平,这就是说明数据没有发出去吧~~
回复 支持 反对

使用道具 举报

发表于 2013-8-31 12:30:37 | 显示全部楼层
我想大声告诉你 发表于 2013-8-31 12:29
要是不换就一直是高电平,这就是说明数据没有发出去吧~~

说明没接收到应答!而不是没发送
回复 支持 反对

使用道具 举报

发表于 2014-5-5 12:13:55 | 显示全部楼层
小栋 发表于 2013-8-30 11:08
试下 先 运行接收 端的模块
再运行 发送端的模块看看

大神。。。我按照这样做,先运行接受再运行发送,这样可以!但是是这样的:STM32控制接受,K60控制发送,先开接受,接着启动发送,就正常;可是,完了再把接受的关掉,再开,就不行了;或者不关接受,关掉发送,再启动,也不行了,这是为什么呢?
回复 支持 反对

使用道具 举报

发表于 2014-5-5 12:15:29 | 显示全部楼层
楼主。。。。你整出来没啊???求程序,我也困在这里了。。。
回复 支持 反对

使用道具 举报

发表于 2016-12-8 16:37:54 | 显示全部楼层
楼主问题解决了吗?下载的例程也卡在这while(NRF_Read_IRQ()!=0)
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-12-28 12:17 , Processed in 0.047860 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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