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; }
现象: