6626 2.4G和BLE共存的操作流程参考

wen sir · 9次点击 · 3小时前

6626 可以实现2.4G和BLE共存。 

实现上面,可以通过RF事件回调,合理控制2.4G 的开启和关闭,实现在BLE空闲时间,做2.4G 的接收和发送事务处理。

如下代码中  bb_frame_handle() 为RF事件的回调函数,在此通过翻IO口,结合TxEN和RxEN信号,可以观察时序

  (1)参考代码

void  bb_frame_handle(bool ongoing)
{
    if (ongoing)
    {
        //GPIO 10 输出高
        drv_gpio_write(OM_GPIO0, BITMASK(PAD_LED_2), GPIO_LEVEL_HIGH);
    }
    else
    {
        //GPIO 10 输出低
        drv_gpio_write(OM_GPIO0, BITMASK(PAD_LED_2), GPIO_LEVEL_LOW);
    }
}

/*******************************************************************************
 * PUBLIC FUNCTIONS
 */

__RAM_CODES("APP")
int main(void)
{
    struct ob_stack_param param =
    {
        .max_connection = OB_LE_HOST_CONNECTION_NB,
        .max_ext_adv_set = OB_LE_HOST_ADV_SET_NUM,
        .max_att_mtu = OB_LE_HOST_ATT_MTU,
        .max_gatt_serv_num = OB_LE_HOST_MAX_GATT_SERV_NUM,
        .max_gatt_write_cache = OB_LE_HOST_ATT_WRITE_CACHE_SIZE,
        .smp_sc_support = OB_LE_HOST_SC_PAIRING,
    };
    drv_wdt_init(0);
    board_init();
    hardware_init();
    drv_rf_init();
    evt_init();
    evt_timer_init();
    shell_init(NULL);
    nvds_init(0);
    extern void ebh_smp_fsm_config_per_sc(void);
    ebh_smp_fsm_config_per_sc();
    omble_init(&param);
    //
    drv_rf_txrx_pin_enable(true, 0);  //TxEN RxEN使能
    obc_bb_frame_ongoing_callback_register(bb_frame_handle); //注册RF事件回调
    drv_pmu_xtal32m_change_param(36);


(2)BLE广播过程中, bb_frame_ongoing 翻转IO,如下图,可以黄线拉低区间,安排 2.4G 的接收和发送。

image.png

每次BLE广播前后,bb_frame_handle 都会触发1次,前后共2次。 

image.png

bb_frame_handle 触发的提前时间

 

(3)BLE连接过程中,bb_frame_handle  每在每次连接事件前后都触发1次,前后共2次。在每2次触后的一段时间内,可以安排2.4G收发事务。 

image.png

bb_frame_handle 触发的提前时间 

image.png


(4)如果实现2.4G切换控制, 实现参考代码如下。实际项目规划时序时,除了RF工作标志,最好还需要结合系统时间,实现2.4G RF 双向的时序匹配。

char rf_work_flag = 0; //0-2.4G 1-BLE,应用代码据此标志处理RF收发事务
void bb_frame_handle(bool is_ongoing)
{
    if (is_ongoing)
    {
        rf_work_flag = 1; //BLE 功能
        // 关闭2.4G 功能,此时跑BLE收发功能
        om24g_control(OM24G_CONTROL_CLK_DISABLE, NULL);
    }
    else
    {
        rf_work_flag = 0;//2.4G 功能
       // 开启2.4G 功能
       drv_pmu_ana_enable(true, PMU_ANA_RF_24G);
       om24g_control(OM24G_CONTROL_CLK_ENABLE, NULL);
       //2.4G event handler
       //drv_evt_set(2p4g_evt) ....
    }
}


(5)共存时,优先是BLE,2.4G应用处理最好要做好时序冲突时的规避。



6626_slave_bb_frame_tx_rx-202502051599.rar
被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站