OpenEdv-开源电子网

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

NRF24L01怎么设置为通道1进行通讯

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-9
在线时间
0 小时
发表于 2015-4-9 20:46:41 | 显示全部楼层 |阅读模式
5金钱
大家好,我最近正在学习NRF24L01模块,遇到了几个问题,请各位帮帮忙。<br />
使用原子哥的mini板与战舰板进行通信,无线模块设置为通道0的时候,两者通信正常,设置为通道1时,就出现问题了。<br />
具体表现为:接收端没有收到数据,发射端跟正常的时候一样(后来我把接收端的电源关掉,发射端依旧在发数据,看起来跟正常的时候一样)<br />
我修改了历程当中的·<span style="font-size:14.4444446563721px;line-height:23.3333339691162px;">NRF24L01_RX_Mode与</span><span style="font-size:14.4444446563721px;line-height:23.3333339691162px;">NRF24L01_TX_Mode两个函数</span><br />
具体函数如下:<br />
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]const u8 TX0_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
const u8 RX0_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};[/mw_shl_code]
</div>
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]void NRF24L01_RX_Mode(void)
{
NRF24L01_CE=0;
  NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P1,(u8*)RX0_ADDRESS,RX_ADR_WIDTH);//写RX节点地址

  NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x02);            //使能通道1的自动应答   
  NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x02);        //使能通道1的接收地址           
  NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);                   //设置RF通信频率         
  NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道1的有效数据宽度   
  NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);        //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
  NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);        //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,接收模式
  NRF24L01_CE = 1; //CE为高,进入接收模式
}         
//该函数初始化NRF24L01到TX模式
//设置TX地址,写TX数据宽度,设置RX自动应答的地址,填充TX发送数据,选择RF频道,波特率和LNA HCURR
//PWR_UP,CRC使能
//当CE变高后,即进入RX模式,并可以接收数据了          
//CE为高大于10us,则启动发送.         
void NRF24L01_TX_Mode()
{         
NRF24L01_CE=0;          
  NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX0_ADDRESS,TX_ADR_WIDTH);//写TX节点地址
  NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX0_ADDRESS,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK         

  NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x02);     //使能通道1的自动应答   
  NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x02); //使能通道1的接收地址  
  NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
  NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);       //设置RF通道为40
  NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);  //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
  NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
NRF24L01_CE=1;//CE为高,10us后启动发送
}[/mw_shl_code]
</div>
实在搞不懂究竟出了什么问题,请各位指点指点。<br />
谢谢!<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165060
金钱
165060
注册时间
2010-12-1
在线时间
2103 小时
发表于 2015-4-9 22:44:39 | 显示全部楼层
你参考下论坛大牛们的多通道数据发送例程,学习下吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-9
在线时间
0 小时
 楼主| 发表于 2015-4-10 09:48:44 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>应该是我对一些概念理解错误,待会重新调
回复

使用道具 举报

2

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-9-10
在线时间
0 小时
发表于 2015-5-8 13:56:04 | 显示全部楼层
我也是这种情况,不知道解决了没?
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-2
在线时间
2 小时
发表于 2016-3-2 14:19:14 | 显示全部楼层
您好,我也出现了这个问题,调了好久了还没有出来,您解决了吗,能指教一下么,谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-7-2 17:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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