CH58x/CH59x/CH57x RF_PHY(2.4g)切换Channel发送接收

前言:在做某些应用的时候可能需要我们发送或者接收时切换对应的channel。

此次完成测试的平台在WCH的CH592F上完成的。

在工作发送过程中切换37、38、39三个信道进行轮询发送。具体需要使用最关键的函数是:RF_SetChannel

实现代码如下:

    if(events & channl_37_tx_evt)
      {
          RF_Shut();
          RF_SetChannel(37);
          tx_end_flag = FALSE;
          if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF))
          {
              RF_Wait_Tx_End();
          }

          return events ^ channl_37_tx_evt;
      }
      if(events & channl_38_tx_evt)
      {
          RF_Shut();
          RF_SetChannel(38);
          tx_end_flag = FALSE;
          if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF))
          {
              RF_Wait_Tx_End();
          }

          return events ^ channl_38_tx_evt;
      }
      if(events & channl_39_tx_evt)
      {
          RF_Shut();
          RF_SetChannel(39);
          tx_end_flag = FALSE;
          if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF))
          {
              RF_Wait_Tx_End();
          }

          return events ^ channl_39_tx_evt;
      }


    if(events & SBP_RF_PERIODIC_EVT)
    {
//        RF_Shut();
//        tx_end_flag = FALSE;
//        if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF))
//        {
//            RF_Wait_Tx_End();
//        }
                tmos_set_event(taskID, channl_37_tx_evt);
                tmos_set_event(taskID, channl_38_tx_evt);
                tmos_set_event(taskID, channl_39_tx_evt);
        tmos_start_task(taskID, SBP_RF_PERIODIC_EVT, 500);
        return events ^ SBP_RF_PERIODIC_EVT;
    }

现象:

 

 

 

posted @ 2024-09-09 19:22  小舟从此逝_1  阅读(40)  评论(0编辑  收藏  举报