部分客户在开发2.4G项目的时候,需要使用获取不同频点的背景噪声,现给出demo如下: int8_t get_env_rssi_once(void) { uint32_t temp; int8_t rssi; temp = OM_PHY->RSSI_CAP_MODE; //store rssi CAP mode //------------------------------------ OM_PHY->RSSI_CAP_MODE = 1; //EST background RSSI OM_PHY->RSSI_EST_REAL_TIME = 1; rssi = tr_read_rssi(); // OM_LOG_DEBUG("rssi= %d\n",(int)rssi); OM_PHY->RSSI_CAP_MODE = temp;// restore RSSI CAP MODE return rssi; } static volatile uint16_t set_freq_value = 2402; static const uint16_t base_freq_value = 2402; static const uint16_t channel_num_max = 90; uint16_t channel = 0; static evt_timer_t evt_timer_freq_rssi; static void evt_timer_freq_rssi_handler(evt_timer_t *timer, void *param) { // 切换频点 if(channel > 90) { channel = 0; } set_freq_value = base_freq_value + channel; channel++; OM_LOG_DEBUG("chn %02d, rssi= %d\n",channel-1, get_env_rssi_once()); OM24G_CE_LOW(); om24g_set_freq(set_freq_value,0); OM24G_CE_HIGH(); // OM_LOG_DEBUG("rssi= %d\n", get_env_rssi_once()); } evt_timer_set(&evt_timer_freq_rssi, 10, EVT_TIMER_REPEAT, evt_timer_freq_rssi_handler, NULL); 我们先让2.4进入rx模式,这样便可以通过定时器来切换频点进行输出对应的背景噪声了 |