搜索
bottom↓
回复: 25

NRF24L01问题!数据发不出去。求解答。

[复制链接]

出0入0汤圆

发表于 2014-7-9 17:44:11 | 显示全部楼层 |阅读模式
NRF24L01检测是否存在,成功了。但是发不出数据。。


测试是IRQ引脚没有反应。


代码如下:
mian.c代码:
        SysInit();  //ϵͳ³õʼ»¯º¯Êý
        UsartInit();//´®¿Ú³õʼ»¯º¯Êý
        LCD_init(); //LCD5110³õʼ»¯º¯Êý
        SPI_init(); //SPI×ÜÏߵijõʼ»¯
        LCD_clear();
       
        //³õʼ½çÃæ
        LCD_write_string(0,0,"Please Wait...");//5110½çÃæ
       
        SendString("Hello!"); //´®¿Ú´òÓ¡Êý¾Ý
        SendString("\r\n");
        SendString("This is NRF24L01 Test..");
        SendString("\r\n");
        SendString("xiaoxiao110");
        SendString("\r\n");
        SendString("2014-07-09");
        SendString("\r\n");
        SendString("\r\n");
        SendString("\r\n");
        Delay50ms(20);
       
        while(1)//¼ì²âNRF24L01ÊÇ·ñÔÚÏß
        {               
                if(NRF24L01_Check())  //ûÓмì²âµ½NRF24L01 É豸
                {
                        LCD_write_string(0,0,"NRF24L01 Check Failed!");  //ÔÚ5110ÏÔʾÔÚÏß½á¹û
                               
                        SendString("NRF24L01 Check Failed...");//´®¿Ú½«½á¹û´òÓ¡³öÀ´
                        SendString("\r\n");
                        SendString("\r\n");
                        SendString("\r\n");
                        Delay50ms(50);
                }
                else  //ÕÒµ½NRF24L01 É豸
                {
                        LCD_clear();
                        LCD_write_string(0,0,"NRF24L01 Check Success...");  //ÔÚ5110ÏÔʾÔÚÏß½á¹û
                        LCD_write_string(0,27,"NRF24L01 is OK!");       
                       
                        SendString("NRF24L01 Check Success...");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
                        SendString("\r\n");
                        SendString("\r\n");
                        SendString("\r\n");
                        Delay50ms(50);
                        break;
                }
        }
       
       
       
        TX_Mode();  //ÉèÖÃNRF24L01Ϊ·¢ËÍģʽ
       
        LCD_clear();
        LCD_write_string(0,0,"Please Wait...");
        LCD_write_string(0,18,"NRF24L01 in Sending Data...");
       
        SendString("Please Wait...");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
        SendString("\r\n");
        SendString("NRF24L01 in Sending Data...");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
        SendString("\r\n");
        SendString("2014-07-09");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
        SendString("\r\n");
        SendString("\r\n");
       
       
        Delay50ms(50);
        Delay50ms(50);
       
        TX_Mode();
       
        while(1)
        {
                TX_Mode();

                if(NRF24L01_TxPacket(NRF_SendBuf) == TX_OK)
                {
                        LCD_clear();
                        LCD_write_string(0,0,"NRF24L01 Send Success...");  //ÔÚ5110ÏÔʾÔÚÏß½á¹û
                       
                        SendString("NRF24L01 Send Success...");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
                        SendString("\r\n");
                       
                        SendString("2014-07-09");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
                        SendString("\r\n");
                        SendString("\r\n");
                       
                        Delay50ms(20);
                        Delay50ms(20);
                }

                else
                {
                        LCD_clear();
                        LCD_write_string(0,0,"NRF24L01 Send Failed...");  //ÔÚ5110ÏÔʾÔÚÏß½á¹û
                       
                        SendString("NRF24L01 Send Failed...");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
                        SendString("\r\n");
                       
                        SendString("2014-07-09");//Óô®¿Ú½«½á¹û´òÓ¡³öÀ´
                        SendString("\r\n");
                        SendString("\r\n");
                       
                        Delay50ms(20);
                        Delay50ms(20);
                }



子函数代码:
void TX_Mode(void)
{
//        unsigned char temp;
        CE=0;
       
          SPI_Write_Buf(SPI_WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // Writes TX_Address to nRF24L01
          SPI_Write_Buf(SPI_WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
          SPI_Write_Buf(WR_TX_PLOAD, NRF_SendBuf, TX_PLOAD_WIDTH); // Writes data to TX payload

          SPI_RW_Reg(SPI_WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
          SPI_RW_Reg(SPI_WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0
          SPI_RW_Reg(SPI_WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
          SPI_RW_Reg(SPI_WRITE_REG + RF_CH, 40);        // Select RF channel 40
          SPI_RW_Reg(SPI_WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
       
        SPI_RW_Reg(SPI_WRITE_REG + CONFIG, 0x0e);
//          temp = SPI_RW_Reg(SPI_WRITE_REG + CONFIG, 0x0e);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled..
//        SendChar(temp);
//        SendString("\r\n"); //²âÊÔʹÓÃ
        CE=1;

}


unsigned char NRF24L01_TxPacket(unsigned char *txbuf)
{
        unsigned char state;   
    unsigned int timeout = 0;
   
        CE=0;
          SPI_Write_Buf(SPI_WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);
        SPI_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//дÊý¾Ýµ½TX BUF  32¸ö×Ö½Ú
//         SPI_RW_Reg(SPI_WRITE_REG + CONFIG, 0x0e);
       
        CE=1;                                     //Æô¶¯·¢ËÍ          
        while(IRQ != 0) //µÈ´ý·¢ËÍÍê³É
        {
                ;
//                timeout++;
//                if(timeout >9000)
//                        break;
        }
        state = SPI_Read(STATUS);                     //¶Áȡ״̬¼Ä´æÆ÷µÄÖµ
       
        SendChar(state);
        SendString("\r\n");
       
        SPI_RW_Reg(SPI_WRITE_REG+STATUS,state);      //Çå³ýTX_DS»òMAX_RTÖжϱêÖ¾
        if(state&MAX_TX)                                     //´ïµ½×î´óÖØ·¢´ÎÊý
        {
                SPI_RW_Reg(FLUSH_TX,0xff);               //Çå³ýTX FIFO¼Ä´æÆ÷
                return MAX_TX;
        }
        if(state&TX_OK)                                      //·¢ËÍÍê³É
        {
                return TX_OK;
        }
        return 0xff;                                         //ÆäËûÔ­Òò·¢ËÍʧ°Ü
}




阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2014-7-9 17:47:16 | 显示全部楼层
发现复制代码有点累。我直接把文件上传,希望懂的大神给我看一下,顺便给我指正。

我用的单片机为STC11L04E

用5110和串口来调试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-7-9 17:48:05 | 显示全部楼层
我不知道是什么地方出现问题了。但是网上大多数的代码都是这样。。

出0入0汤圆

发表于 2014-7-9 17:55:33 | 显示全部楼层
开启了自动应答了吧!?把自动应答关了试试?

出0入0汤圆

 楼主| 发表于 2014-7-9 17:59:51 | 显示全部楼层
登云钓月 发表于 2014-7-9 17:55
开启了自动应答了吧!?把自动应答关了试试?

是直接屏蔽那条自动应答的不?
我试过了,还是没有效果啊;。

出0入0汤圆

发表于 2014-7-9 18:44:22 | 显示全部楼层
两个嘴巴笑110 发表于 2014-7-9 17:59
是直接屏蔽那条自动应答的不?
我试过了,还是没有效果啊;。

楼主用51的话切换到发送模式后稍微延时下,在发送数据

出0入0汤圆

发表于 2014-7-9 19:27:20 | 显示全部楼层
当初我调这个也不容易,多看。你可以先找一个可用的进行移植。

出0入0汤圆

 楼主| 发表于 2014-7-9 20:29:12 | 显示全部楼层
天行者 发表于 2014-7-9 19:27
当初我调这个也不容易,多看。你可以先找一个可用的进行移植。

主要是没有可以直接用的啊?你这边有你以前自己测试有用的不?有的话,可以给我一下不,小弟在此感谢你哈。
邮箱:xiaomf2012@qq.com

出0入0汤圆

发表于 2014-7-9 20:42:54 | 显示全部楼层
当是我是用51的一个小板子调的。你没有这个板子,可能要在陶宝上买一下。

出0入0汤圆

 楼主| 发表于 2014-7-10 10:16:38 | 显示全部楼层
天行者 发表于 2014-7-9 20:42
当是我是用51的一个小板子调的。你没有这个板子,可能要在陶宝上买一下。
...

我用的就是51的板子,但是是我自己做的,所以没有现成的测试代码、。。搞的我很头疼啊

出0入0汤圆

发表于 2014-7-10 10:23:56 | 显示全部楼层
我发给你了,你看一下吧。

出0入0汤圆

 楼主| 发表于 2014-7-10 11:04:44 | 显示全部楼层
天行者 发表于 2014-7-10 10:23
我发给你了,你看一下吧。

没有啊。你是用邮箱发的么?

出0入0汤圆

发表于 2014-7-10 11:09:22 | 显示全部楼层
没成功,我再发一下吧。

出0入0汤圆

发表于 2014-7-10 11:10:18 | 显示全部楼层
登云钓月 发表于 2014-7-9 17:55
开启了自动应答了吧!?把自动应答关了试试?

自动应答开启没有问题的,我的就开着呢。

出0入0汤圆

发表于 2014-7-10 11:11:07 | 显示全部楼层
代码看起来一团乱,没法看。

出0入0汤圆

发表于 2014-7-10 11:18:43 | 显示全部楼层
发了,你查一下。

出0入0汤圆

 楼主| 发表于 2014-7-10 11:18:47 | 显示全部楼层
煮酒fu 发表于 2014-7-10 11:11
代码看起来一团乱,没法看。

不是很乱吧。。你可以直接下载来看看吧。直接看程序应该会好一点哈。。。麻烦你帮我看一下哈

出0入0汤圆

发表于 2014-7-10 11:26:17 | 显示全部楼层
两个嘴巴笑110 发表于 2014-7-10 11:18
不是很乱吧。。你可以直接下载来看看吧。直接看程序应该会好一点哈。。。麻烦你帮我看一下哈 ...

no,我现在调试代码都调试的头疼,就不帮你看了。哈,别生气哟。

出0入0汤圆

 楼主| 发表于 2014-7-10 11:42:40 | 显示全部楼层
煮酒fu 发表于 2014-7-10 11:26
no,我现在调试代码都调试的头疼,就不帮你看了。哈,别生气哟。

好吧。。

出0入0汤圆

发表于 2014-7-10 11:44:56 | 显示全部楼层

你看我发表的帖子吧。里面有我调通的代码。

出0入0汤圆

 楼主| 发表于 2014-7-10 13:54:14 | 显示全部楼层
煮酒fu 发表于 2014-7-10 11:44
你看我发表的帖子吧。里面有我调通的代码。

好的,谢谢哈。兄弟。

出0入0汤圆

发表于 2014-7-10 16:11:25 | 显示全部楼层
两个嘴巴笑110 发表于 2014-7-10 13:54
好的,谢谢哈。兄弟。

你是妹子不?

出0入0汤圆

发表于 2014-7-11 09:01:36 | 显示全部楼层
我不记得是哪一年前调过51版本和AVR版本的2401,应该还能找到代码,是一主多从的。

出0入0汤圆

发表于 2014-7-11 09:37:32 | 显示全部楼层
确认你这个nRF2401在发送时,有对应好的nRF2401准备好接收了。

没有准备接收的nRF2401,你这个是发不出去的。

出0入0汤圆

发表于 2014-7-11 11:23:30 | 显示全部楼层
第不要同一个

出0入0汤圆

发表于 2014-8-12 17:06:39 | 显示全部楼层
两个嘴巴笑110 发表于 2014-7-10 10:16
我用的就是51的板子,但是是我自己做的,所以没有现成的测试代码、。。搞的我很头疼啊 ...

现成的程序要理解才是属于你的东西,下载的最简单的需要修改配置初始化之类的才能用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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