发 帖  
原厂入驻New
[问答] STM8S103无线模块nrf24l01接收失败
75 nRF24L01 STM8
分享
发送的status的TX_DS和MAX_RT发送完成后已经置1了,我也清除了标志位,确定数据发送成功。但是接收端接收不成功数据,有时能接收到数据,但串口显示出来的数据是乱码.......    是我的延时问题吗?但是修改了也没多大变化。求大神帮忙解决!!!!<br />
<br />
<br />
void NRF24l01_Set_RxMode()<br />
{<br />
ClrCE; <br />
<br />
          NRF24L01_Write_TxData(W_REGISTER+RX_ADDR_P0, TxAddr, TX_ADDR_WITDH);  <br />
<br />
          NRF24L01_Write_Reg(W_REGISTER+EN_AA,0x01);       /* 使能接收通道0自动应答 */<br />
          NRF24L01_Write_Reg(W_REGISTER+EN_RXADDR,0x01);   /* 使能接收通道0 */<br />
          NRF24L01_Write_Reg(W_REGISTER+RF_CH,0x40);       /* 选择射频通道0x40 */<br />
NRF24L01_Write_Reg(W_REGISTER+RX_PW_P0,TX_DATA_WITDH);  /* 接收通道0选择和发送通道相同有效数据宽度 */<br />
          NRF24L01_Write_Reg(W_REGISTER+RF_SETUP,0x07);    /* 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益 */<br />
NRF24L01_Write_Reg(W_REGISTER+CONFIG,0x0f);      /* CRC使能,16位crc校验,上电 */ <br />
SetCE;<br />
Delay(0xff);<br />
  <br />
}<br />
<br />
<br />
unsigned char NRF24L01_RevData(unsigned char *RevData)<br />
{<br />
u8 RevFlags = 1;<br />
u8 sta;<br />
<br />
sta = NRF24L01_Read_Reg(R_REGISTER+STATUS);        /* 读取状态寄存器的值 */<br />
IF(sta & 0x40)                                /* 判断是否接收到数据 */<br />
{<br />
ClrCE; <br />
NRF24L01_Read_RxData(R_RX_PAYLOAD,RevData,RX_DATA_WITDH);        /* 从RXFIFO读取4位数据 */<br />
<br />
/* 接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 */<br />
NRF24L01_Write_Reg(W_REGISTER+STATUS,0xff); <br />
<br />
ClrCSN;<br />
          NRF24L01_RW(FLUSH_RX);        /* 用于清空FIFO */<br />
          SetCSN; <br />
<br />
RevFlags = 0;           <br />
}<br />
<br />
return(RevFlags);<br />
}<br />
<br />
<br />
<br />
<br />
void main(void)<br />
{<br />
<br />
  LED_Init(LED3);<br />
  UART_Init();<br />
  NRF24L01_Init();<br />
  LED_Off(LED3);<br />
   while (1)<br />
  {<br />
    <br />
      while(NRF24L01_Check())   //判断nrf24l01是否连接<br />
      {<br />
        Send_Str(Data2);<br />
      }<br />
      <br />
      NRF24L01_Set_RxMode();<br />
      if (!(NRF24L01_RevData(RecBuf))) <br />
      {<br />
        LED_On(LED3);<br />
        Send_Str(RecBuf);<br />
      }<br />
  }<br />
}    <br />
<br />
0
2020-4-15 04:35:25   评论 分享淘帖 邀请回答

相关问题

4个回答
回复【4楼】发烧友:
<br>---------------------------
<br>行了&nbsp;&nbsp;&nbsp;原来还是发送没成功&nbsp;&nbsp;&nbsp;网上查到有人说nrf24l01上电后要等待3ms后在进行初始化&nbsp;&nbsp;&nbsp;所以初始化前加了个延时&nbsp;&nbsp;
<br>又再模块初始化那里加了个清除中断标志和清除FIFO的语句&nbsp;&nbsp;&nbsp;最好两个模块数据交换成功
2020-4-15 07:26:15 评论

举报

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

举报

2020-4-15 07:52:04 评论

举报

<br>那你对比下发送和接收数据的区别吧
2020-4-15 08:03:36 评论

举报

只有小组成员才能发言,加入小组>>

103个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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