應客戶要求,要做外挂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;