OpenEdv-开源电子网

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

NRF24L01无线通信求助

[复制链接]

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
发表于 2015-10-31 14:47:17 | 显示全部楼层 |阅读模式
5金钱
自己想用NRF24L01做一辆无线遥控的小车 &nbsp;现在在通信部分遇到了一点问题<br />
<br />
我把MINI开发板中的例程改了一点但是接收不到数据<br />
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true] int main(void)
{
        u8 key,mode;
        u16 t=0;                         
        u8 adcx1[1]={0},adcx2[1]={0};
         
        delay_init();                   
        NVIC_Configuration();         
        uart_init(9600);                
        LED_Init();                                 
        LCD_Init();                                  
        KEY_Init();                               
        NRF24L01_Init();           
        Adc_Init();                                       
         
        POINT_COLOR=RED;
        LCD_ShowString(60,50,200,16,16,"Mini STM32");       
        LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");       
        LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,16,16,"2014/3/12");                  
         
        while(NRF24L01_Check())       
        {
                LCD_ShowString(60,130,200,16,16,"NRF24L01 Error");
                delay_ms(200);
                LCD_Fill(60,130,239,130+16,WHITE);
                delay_ms(200);
        }                                                       
       
        LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
       
        while(1)
        {
                key=KEY_Scan(0);
                if(key==KEY1_PRES)
                {
                        mode=1;
                        break;
                }
                t++;
                if(t==100)LCD_ShowString(10,150,230,16,16,"KEY0:RX_Mode  KEY1:TX_Mode");
                if(t==200)
                {       
                        LCD_Fill(10,150,230,150+16,WHITE);
                        t=0;
                }
                delay_ms(5);          
        }   
       
       
        LCD_Fill(10,150,240,166,WHITE);          
        POINT_COLOR=BLUE;          
       
        if(mode==1)
        {                                                            
                LCD_ShowString(60,150,200,16,16,"NRF24L01 TX_Mode");       
                NRF24L01_TX_Mode();
                while(1)
                {                           
                        adcx1[0]=Get_Adc(ADC2,ADC_Channel_10)/32;
                        adcx2[0]=Get_Adc(ADC2,ADC_Channel_13)/32;                       
                        if(NRF24L01_TxPacket(adcx1)==TX_OK&amp;&amp;NRF24L01_TxPacket(adcx2)==TX_OK)
                        {
                                LCD_ShowString(60,170,239,32,16,"Sended DATA:");       
                                LCD_ShowxNum(170,170,adcx1[0],4,16,0);
                                LCD_ShowxNum(170,190,adcx2[0],4,16,0);
                        }else
                        {                                                                                          
                                LCD_ShowString(60,170,239,32,16,"Send Failed ");
                                LCD_Fill(0,188,240,218,WHITE);                  
                        };
                        LED0=!LED0;
                        delay_ms(1500);                                    
                };
        }
}



[/mw_shl_code]
</div>
<br />
<br />
<br />
<br />
下面是接受模块的<br />
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]int main(void)
{
        u8 key,mode;
        u16 t=0;                         
        u8 adcx1[1]={0},adcx2[1]={0};
         
        delay_init();                            
        NVIC_Configuration();         
        uart_init(9600);                
        LED_Init();                                 
        LCD_Init();                                          
        KEY_Init();                               
        NRF24L01_Init();             
        POINT_COLOR=RED;
        printf("Mini STM32\n");       
        printf("NRF24L01 TEST\n");       
        printf("ATOM@ALIENTEK\n");
        printf("2014/3/12\n");                  
         
        while(NRF24L01_Check())       
        {
                printf("NRF24L01 Error\n");
                delay_ms(1000);
                printf("                \n");
                delay_ms(1000);
        }                                                                  
       
        printf("NRF24L01 OK");
       
        while(1)
        {
                key=KEY_Scan(0);
                if(key==KEY0_PRES)
                {
                        mode=0;   
                        break;
                }
                t++;
                if(t==100)printf("KEY0:RX_Mode  KEY1:TX_Mode\n");
                if(t==200)
                {       
                        printf("         \n");
                        t=0;
                }
                delay_ms(5);          
        }   
       
        printf("                     \n");          
        POINT_COLOR=BLUE;          
        if(mode==0)//RX????
        {
                printf("NRF24L01 RX_Mode\n");       
                printf("Received DATA:\n");       
                NRF24L01_RX_Mode();                  
                while(1)
                {                                                                                   
                        if(NRF24L01_RxPacket(adcx1)==0&amp;&amp;NRF24L01_RxPacket(adcx2)==0)
                        {
                                printf("RECEIVE:OK/n");
                                printf("adcx1:%s  ",adcx1);   
                                printf("adcx2:%s\n",adcx2);
                        }                                               
                }
        }
}[/mw_shl_code]
</div>
<br />
<br />
<br />
<br />

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

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2015-10-31 14:50:35 | 显示全部楼层
发射板子发射成功能在lcd上显示数据
<br>
<br>但是接受的板子在串口上数据打印不出来,仿真了一下在
<br>if(NRF24L01_RxPacket(adcx1)==0&&NRF24L01_RxPacket(adcx2)==0)
<br>这个判断中出了问题
<br>
<br>我的想法主要是把&nbsp;发射板子上测得的ADC数据发送到接收板上
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-11-1 21:41:07 | 显示全部楼层
回复【2楼】秋夜月汐:
<br>---------------------------------
<br>能实现数据互发么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2015-11-4 00:28:05 | 显示全部楼层
回复【3楼】正点原子:
<br>---------------------------------不能
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-11-6 00:12:17 | 显示全部楼层
回复【4楼】秋夜月汐:
<br>---------------------------------
<br>慢慢调
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-29 23:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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