天天看點

【傑理AC692X】外挂FM IIC與TF卡複用,FM和TF播放串音的問題

應客戶要求,要做外挂FM,QN8075.

在原廠 AC692X軟體問題處理說明文檔,43點問題,《外挂FM IIC與SD卡複用》中描述了這個做法:

就是 iic 處理的時候關掉 SD 檢測和電源,iic 處理完再開啟檢測,FM 模式退出後 開啟 SD 電源。支援 AC692 所有 SDK 版本。

根據文檔中的操作就可以複用了,但是在測試時發現,當樣機在FM模式時插入TF卡會出現同時播出FM和TF音樂,根據以往經驗,估計是FM 模式在切模式時沒完全退出導緻和其它播放模式串聲,那就在在讓FM退出一次就好。

FM 子產品退出函數:

void task_fmmode_exit(void)
{
    /*先關閉FM子產品線程,再關閉FM變采樣線程*/
    fm_printf("task_fm_exit !!\n");
    mutex_resource_release("fm");

    fm_radio_powerdown();
    task_clear_all_message();
    fm_arg_close();
	sd1_power_api(DEV_POWER_ON);
}
           

在TF卡插入消息這做處理:

case MSG_SD1_ONLINE:
        puts("MSG_SD1_ONLINE\n");
		if(task_get_cur() == TASK_ID_FM){
			task_fmmode_exit();
			delay_2ms(10);
		}
        if (dev_online_mount(sd1)) {
            if (task_get_cur() == TASK_ID_MUSIC) {           //目前為音樂任務不切換,把該消息給music任務處理
                puts("MUSIC :MSG_SD1_ONLINE_SUCC\n");
                task_post_event(NULL, 1, EVENT_SD1_ON_SUCC);
                break;
            }
			
            if (task_switch(TASK_ID_MUSIC, sd1) == true) {
                exit = false;
            }
        }
        break;