天线|RF射频
直播中

邹俩珍

7年用户 1014经验值
私信 关注
[问答]

NRF24L01的接收端接收不到数据,找不到接收端怎么解决?

                                         
接收和发射额初始化代码如下:



//该函数初始化NRF24L01到RX模式

//设置RX地址,写RX数据宽度,选择RF频道,波特率和LNA HCURR

//当CE变高后,即进入RX模式,并可以接收数据了                  

void RX_Mode(void)

{

        Clr_NRF24L01_CE;         

    //写RX节点地址

          NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);



    //使能通道0的自动应答   

          NRF24L01_Write_Reg(SPI_WRITE_REG+EN_AA,0x01);   

    //使能通道0的接收地址           

          NRF24L01_Write_Reg(SPI_WRITE_REG+EN_RXADDR,0x01);

    //设置RF通信频率                  

          NRF24L01_Write_Reg(SPI_WRITE_REG+RF_CH,40);            

    //选择通道0的有效数据宽度            

          NRF24L01_Write_Reg(SPI_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);

    //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   

          NRF24L01_Write_Reg(SPI_WRITE_REG+RF_SETUP,0x0f);

    //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,PRIM_RX接收模式

          NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG, 0x0f);

    //CE为高,进入接收模式

          Set_NRF24L01_CE;                                

}                        



//该函数初始化NRF24L01到TX模式

//设置TX地址,写TX数据宽度,设置RX自动应答的地址,填充TX发送数据,

//选择RF频道,波特率和LNA HCURR PWR_UP,CRC使能

//当CE变高后,即进入RX模式,并可以接收数据了                  

//CE为高大于10us,则启动发送.         

void TX_Mode(void)

{                                                                                                                 

        Clr_NRF24L01_CE;            

    //写TX节点地址

          NRF24L01_Write_Buf(SPI_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);   

    //设置TX节点地址,主要为了使能ACK         

          NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);



    //使能通道0的自动应答   

          NRF24L01_Write_Reg(SPI_WRITE_REG+EN_AA,0x01);     

    //使能通道0的接收地址  

          NRF24L01_Write_Reg(SPI_WRITE_REG+EN_RXADDR,0x01);

    //设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次

          NRF24L01_Write_Reg(SPI_WRITE_REG+SETUP_RETR,0x1a);

    //设置RF通道为40

          NRF24L01_Write_Reg(SPI_WRITE_REG+RF_CH,40);      

    //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   

          NRF24L01_Write_Reg(SPI_WRITE_REG+RF_SETUP,0x0f);  

    //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,PRIM_RX发送模式,开启所有中断

          NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG,0x0e);   

    // CE为高,10us后启动发送

        Set_NRF24L01_CE;                                 

}         

用的单片机STM32F103VC,我已经弄了好多天了,没调出来,实在找不到原因

回帖(35)

鲍淑君

2020-5-7 01:59:09
底层驱动没问题吧?

SPI操作NRF的寄存器什么的,先确保这个正常。
举报

丁冬芹

2020-5-7 02:14:01

没问题,就是用了你的写和读5个数来查找的
举报

刘琬婷

2020-5-7 02:26:53
那应该可以才对了,2个模块一起买的吧?
举报

李冬梅

2020-5-7 02:42:44

是的啊,我把TX_mode的寄存器写入的值都读出来在打印,

nRF24L01连接成功 



TX_ADDR写入结果为{0x34,0x43,0x10,0x10,0x01},以下是打印匹配输出0x34 0x43 0x10 0x10 0x1 



RX_ADDR_P0写入结果为{0x34,0x43,0x10,0x10,0x01},以下是打印匹配输出0x34 0x43 0x10 0x10 0x1 



EN_AA写入结果为,0x01,以下是打印匹配输出0x1 



EN_RXADDR写入结果为,0x01,以下是打印匹配输出0x1 



SETUP_RETR写入结果为,0x1a,以下是打印匹配输出0x1 



RF_CH写入结果为,0x28,以下是打印匹配输出0x28 



RF_SETUP写入结果为,0x0f,以下是打印匹配输出0xf 



CONFIG写入结果为,0x0e,以下是打印匹配输出0xe 

都是匹配的,可是就是发送不了,也接受不了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分