OpenEdv-开源电子网

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

2.4G NRF24L01

[复制链接]

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-4-16
在线时间
2 小时
发表于 2015-9-11 13:03:42 | 显示全部楼层 |阅读模式
5金钱
<span class="postbody" id="post_body_337638" style="font-family:Simsun;line-height:normal;">
<div class="edit_area" id="337638">
        用原子哥的程序,两个板子都能检测到NRF24L01,发送端发送不了数据,总是发送失败,接收端自然接收不到数据。不知为什么?<br />
#include "led.h"<br />
#include "delay.h"<br />
#include "key.h"<br />
#include "sys.h"<br />
#include "lcd.h"<br />
#include "usart.h"        &nbsp;<br />
#include "24l01.h" &nbsp;<br />
//ALIENTEK????STM32??·?°????é32<br />
//?????¨?? ???é &nbsp;<br />
//?????§????www.openedv.com<br />
//?????????í??×????????????? &nbsp;<br />
&nbsp;int main(void)<br />
&nbsp;{        &nbsp;<br />
u8 key,mode;<br />
u16 t=0;        &nbsp;<br />
u8 tmp_buf[33];        &nbsp; &nbsp;<br />
delay_init();        &nbsp; &nbsp;        //???±??????????        &nbsp;<br />
NVIC_Configuration(); //?è??NVIC????·?×é2:2??????????????2???ì????????<br />
uart_init(9600);        //?&reg;??????????9600<br />
&nbsp;        LED_Init();        &nbsp; &nbsp; //LED??????????<br />
LCD_Init();        //??????LCD<br />
KEY_Init();        //°??ü??????&nbsp;<br />
&nbsp;        NRF24L01_Init(); &nbsp; &nbsp;        //??????NRF24L01&nbsp;<br />
POINT_COLOR=RED;//?è??×??????ì??&nbsp;<br />
LCD_ShowString(60,50,200,16,16,"WarShip STM32");&nbsp;<br />
LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");&nbsp;<br />
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");<br />
LCD_ShowString(60,110,200,16,16,"2012/9/13");        &nbsp;<br />
&nbsp;        while(NRF24L01_Check())        //?ì?éNRF24L01??·?????.&nbsp;<br />
{<br />
LCD_ShowString(60,130,200,16,16,"NRF24L01 Error");<br />
delay_ms(200);<br />
LCD_Fill(60,130,239,130+16,WHITE);<br />
&nbsp;        delay_ms(200);<br />
}        &nbsp;&nbsp;<br />
LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");<br />
&nbsp;        while(1)//??????·??·?¨????????????!<br />
{<br />
key=KEY_Scan(0);<br />
if(key==KEY_RIGHT)<br />
{<br />
mode=0; &nbsp;&nbsp;<br />
break;<br />
}else if(key==KEY_DOWN)<br />
{<br />
mode=1;<br />
break;<br />
}<br />
t++;<br />
if(t==100)LCD_ShowString(10,150,230,16,16,"KEY0:RX_Mode &nbsp;KEY1:TX_Mode"); //?????????á??????<br />
&nbsp;        if(t==200)<br />
{&nbsp;<br />
LCD_Fill(10,150,230,150+16,WHITE);<br />
t=0;&nbsp;<br />
}<br />
delay_ms(5);        &nbsp;<br />
} &nbsp;&nbsp;<br />
&nbsp;        LCD_Fill(10,150,240,166,WHITE);//??????????????        &nbsp;<br />
&nbsp;        POINT_COLOR=BLUE;//?è??×?????????        &nbsp;&nbsp;<br />
if(mode==0)//RX????<br />
{<br />
LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");&nbsp;<br />
LCD_ShowString(60,170,200,16,16,"Received DATA:");&nbsp;<br />
NRF24L01_RX_Mode();        &nbsp;<br />
while(1)<br />
{        &nbsp;        &nbsp; &nbsp;        &nbsp; &nbsp;        &nbsp;<br />
if(NRF24L01_RxPacket(tmp_buf)==0)//???&copy;??????????,?ò????????.<br />
{<br />
tmp_buf[32]=0;//????×?·??&reg;?á??·?<br />
LCD_ShowString(0,190,239,32,16,tmp_buf); &nbsp; &nbsp;<br />
}else delay_us(100);        &nbsp;&nbsp;<br />
t++;<br />
if(t==10000)//?ó??1s????±?????×???<br />
{<br />
t=0;<br />
LED0=!LED0;<br />
} &nbsp; &nbsp;<br />
};&nbsp;<br />
}else//TX????<br />
{        &nbsp; &nbsp;<br />
LCD_ShowString(60,150,200,16,16,"NRF24L01 TX_Mode");&nbsp;<br />
NRF24L01_TX_Mode();<br />
mode=' ';//???????ü???? &nbsp;<br />
while(1)<br />
{        &nbsp;        &nbsp; &nbsp;<br />
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)<br />
{<br />
LCD_ShowString(60,170,239,32,16,"Sended DATA:");&nbsp;<br />
LCD_ShowString(0,190,239,32,16,tmp_buf);&nbsp;<br />
key=mode;<br />
for(t=0;t&lt;32;t++)<br />
{<br />
key++;<br />
if(key&gt;('~'))key=' ';<br />
tmp_buf[t]=key;&nbsp;<br />
}<br />
mode++;&nbsp;<br />
if(mode&gt;'~')mode=' '; &nbsp;        &nbsp;<br />
tmp_buf[32]=0;//?????á??·?        &nbsp;&nbsp;<br />
}else<br />
{        &nbsp;&nbsp;<br />
&nbsp;        LCD_ShowString(60,170,239,32,16,"Send Failed ");&nbsp;<br />
LCD_Fill(0,188,240,218,WHITE);//??????????????        &nbsp;&nbsp;<br />
};<br />
LED0=!LED0;<br />
delay_ms(1500);        &nbsp; &nbsp;<br />
};<br />
} &nbsp; &nbsp;&nbsp;<br />
}<br />
        <div>
                <br />
        </div>
</div>
</span><span style="font-family:Simsun;font-size:medium;line-height:normal;background-color:#D1D9E2;"></span>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-4-16
在线时间
2 小时
 楼主| 发表于 2015-9-11 20:49:17 | 显示全部楼层
库函数不行,但是用寄存器版本的就可以
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-9-11 22:50:36 | 显示全部楼层
哪款开发板?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-4-16
在线时间
2 小时
 楼主| 发表于 2015-9-11 23:38:50 | 显示全部楼层
谢谢,原子哥
<br>找到原因了,是设置RF的发射频率问题,发送的设成40,而接收端是0X40
回复

使用道具 举报

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-4-16
在线时间
2 小时
 楼主| 发表于 2015-9-11 23:43:35 | 显示全部楼层
原子哥,用无线控制四旋翼是不是只需要一对NRF24L01,四旋翼一个,遥控器一个?设置模式是不是一发多收?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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