【杰理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;

你可能感兴趣的:(杰理692系列问题)