引言
做蓝牙音箱方案,SD/TF卡播放是标配功能。但市面上存储卡种类多,MMC卡和SD卡长得像,协议却有差异。如果程序里配的是CMD检测,MMC卡可能直接不识别。
用JL杰理AC696N开发板调卡播放时,就遇到过这种兼容性问题。把卡类型区分、检测方式选择和MMC卡使能的方法整理一下,方便做产品时少踩坑。
MMC卡:MultiMediaCard,多媒体存储卡
SD卡:Secure Digital Memory Card
大卡区分方式
小卡区分方式:小的MMC卡有和SD卡外观形状一致的,需要仔细对比:
1)正常SD卡比MMC卡厚0.7mm,外表几乎一样,但放在一起用手摸能感觉到厚薄差别。
2)MMC卡和SD卡的CMD检测命令不一致。如果程序配置SD卡检测方式为CMD检测,会出现无法兼容MMC卡的情况。
3)所以需要兼容SD卡和MMC卡,SD卡检测方式应选为CLK或IO检测。
1. SD相关配置
1)SD卡应用相关配置
2)三种检测方式
3)流程:检测到卡插入或拔出 → 触发相应的公共设备事件处理 → 解码设备上下线,设备挂载等处理 → 设备扫盘
2. 如何使能MMC卡功能
如果需要支持市场上这种MMC卡,程序上需要做以下配置:
1)打开MMC卡配置:SDK\apps\soundbox\log_config\lib_driver_config.c
const int sdx_can_operate_mmc_card = 1;2)SD卡的检测改为CLK或IO检测,不能使用CMD检测。
总结
SD卡和MMC卡兼容的关键就两点:
一是检测方式别用CMD,改用CLK或IO检测;
二是把can_operate_mmc_card开关打开。
配置完记得用两种卡分别在杰理AC6966B音箱方案开发板上测试一下。
另外,如果卡座硬件不支持CLK检测,非要改回CMD检测的话,后续可能会有兼容性问题,建议多做测试。