CH58x/CH59x/CH57x RF_PHY(2.4g)切換Channel傳送接收

小舟从此逝_1發表於2024-09-09

前言:在做某些應用的時候可能需要我們傳送或者接收時切換對應的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;
    }

現象:

相關文章