天线|RF射频
直播中

王洋

8年用户 194经验值
私信 关注
[问答]

STM8S103无线模块nrf24l01接收失败

发送的status的TX_DS和MAX_RT发送完成后已经置1了,我也清除了标志位,确定数据发送成功。但是接收端接收不成功数据,有时能接收到数据,但串口显示出来的数据是乱码.......    是我的延时问题吗?但是修改了也没多大变化。求大神帮忙解决!!!!





void NRF24L01_Set_RxMode()

{

ClrCE;



          NRF24L01_Write_TxData(W_REGISTER+RX_ADDR_P0, TxAddr, TX_ADDR_WITDH);  



          NRF24L01_Write_Reg(W_REGISTER+EN_AA,0x01);       /* 使能接收通道0自动应答 */

          NRF24L01_Write_Reg(W_REGISTER+EN_RXADDR,0x01);   /* 使能接收通道0 */

          NRF24L01_Write_Reg(W_REGISTER+RF_CH,0x40);       /* 选择射频通道0x40 */

NRF24L01_Write_Reg(W_REGISTER+RX_PW_P0,TX_DATA_WITDH);  /* 接收通道0选择和发送通道相同有效数据宽度 */

          NRF24L01_Write_Reg(W_REGISTER+RF_SETUP,0x07);    /* 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益 */

NRF24L01_Write_Reg(W_REGISTER+CONFIG,0x0f);      /* CRC使能,16位CRC校验,上电 */

SetCE;

Delay(0xff);

  

}





unsigned char NRF24L01_RevData(unsigned char *RevData)

{

u8 RevFlags = 1;

u8 sta;



sta = NRF24L01_Read_Reg(R_REGISTER+STATUS);        /* 读取状态寄存器的值 */

if(sta & 0x40)                                /* 判断是否接收到数据 */

{

ClrCE;

NRF24L01_Read_RxData(R_RX_PAYLOAD,RevData,RX_DATA_WITDH);        /* 从RXFIFO读取4位数据 */



/* 接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 */

NRF24L01_Write_Reg(W_REGISTER+STATUS,0xff);



ClrCSN;

          NRF24L01_RW(FLUSH_RX);        /* 用于清空FIFO */

          SetCSN;



RevFlags = 0;           

}



return(RevFlags);

}









void main(void)

{



  LED_Init(LED3);

  UART_Init();

  NRF24L01_Init();

  LED_Off(LED3);

   while (1)

  {

   

      while(NRF24L01_Check())   //判断nrf24l01是否连接

      {

        Send_Str(Data2);

      }

      

      NRF24L01_Set_RxMode();

      if (!(NRF24L01_RevData(RecBuf)))

      {

        LED_On(LED3);

        Send_Str(RecBuf);

      }

  }

}   


回帖(4)

王敏

2020-4-15 07:26:15
回复【4楼】发烧友:

---------------------------

行了   原来还是发送没成功   网上查到有人说nrf24l01上电后要等待3ms后在进行初始化   所以初始化前加了个延时  

又再模块初始化那里加了个清除中断标志和清除FIFO的语句   最好两个模块数据交换成功
举报

高阳

2020-4-15 07:42:06
发送的是字符串,还是数值?
举报

蔡柱刚

2020-4-15 07:52:04



字符串啊
举报

刘桂兰

2020-4-15 08:03:36

那你对比下发送和接收数据的区别吧
举报

更多回帖

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