OpenEdv-开源电子网

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

NRF24L01改通道

[复制链接]

11

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-12-24
在线时间
8 小时
发表于 2016-8-24 16:56:53 | 显示全部楼层 |阅读模式
大家好,我有个问题想请教下大家。在NRF24L01无线通信这个实验中,原来的代码是用通道0做数据的接收和发送,我把原子哥的代码稍作修改了下,想改用通道2做数据的接收和发送,下面是我做修改的通道程序,和原来的程序对比的图片,同样的方法修改为通道一就没问题,改为通道2就是调不通,大家帮我看下具体问题在哪儿,thank you!这是原子哥原来的代码,

const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};
const u8 RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

void NRF24L01_RX_Mode(void)
{
        NRF24L01_CE=0;          
          NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);
          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);      
          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);         
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);                      
          NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);            
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);
          NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);
          NRF24L01_CE = 1;
}                                                 

void NRF24L01_TX_Mode(void)
{                                                                                                                 
        NRF24L01_CE=0;            
          NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);
          NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);

          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);     
          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);  
          NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);      
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);  
          NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);  
        NRF24L01_CE=1;
}



下面是我修改后的代码,麻烦大家帮我看下那个地方出问题了,纠结了好长时间:
const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x02};
const u8 RX_ADDRESS_P0[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x00};
const u8 RX_ADDRESS_P1[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x01};
const u8 RX_ADDRESS_P2[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x02};
const u8 RX_ADDRESS_P3[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x03};
const u8 RX_ADDRESS_P4[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x04};
const u8 RX_ADDRESS_P5[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x05};


void NRF24L01_TX_Mode(void)
{                                                                                                                 
        NRF24L01_CE=0;            
          NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);
          NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS_P2,RX_ADR_WIDTH);

          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);   
          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);
          NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);      
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);
          NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);   
        NRF24L01_CE=1;
}

void NRF24L01_RX_Mode(void)
{
        NRF24L01_CE=0;          
          NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P2,(u8*)RX_ADDRESS_P2,RX_ADR_WIDTH);
          
          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x04);      
          NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x04);         
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);                    
          NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P2,RX_PLOAD_WIDTH);
          NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);
          NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f);
          NRF24L01_CE = 1;
}                                                 







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

使用道具 举报

12

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2015-12-26
在线时间
115 小时
发表于 2016-8-24 21:18:08 | 显示全部楼层
改为
const u8 RX_ADDRESS_P0[RX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x00};
const u8 RX_ADDRESS_P1[RX_ADR_WIDTH]={0x01,0x10,0x10,0x03,0x00};
const u8 RX_ADDRESS_P2[RX_ADR_WIDTH]={0x02,0x10,0x10,0x03,0x00};
const u8 RX_ADDRESS_P3[RX_ADR_WIDTH]={0x03,0x10,0x10,0x03,0x00};
const u8 RX_ADDRESS_P4[RX_ADR_WIDTH]={0x04,0x10,0x10,0x03,0x00};
const u8 RX_ADDRESS_P5[RX_ADR_WIDTH]={0x05,0x10,0x10,0x03,0x00};
回复 支持 反对

使用道具 举报

11

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-12-24
在线时间
8 小时
 楼主| 发表于 2016-8-25 08:45:47 | 显示全部楼层
您好,我刚才试了试,把你的这个复制到代码中,并把const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x43,0x10,0x10,0x03,0x02}; 改为和const u8 RX_ADDRESS_P2[RX_ADR_WIDTH]={0x02,0x10,0x10,0x03,0x00};一样,想用通道2来接收,还是发送失败,
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 07:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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