在调试stm32的mass storage(SDIO)例程时候,发现1Gsandisk可以很快识别出来,读写正常,而金士顿的8G sdhc class10卡识别则需要接近20秒,
pc显示盘符后,像sd卡里面写数据,会出现像死机一样的几秒,然后,发送数据,而且速度很慢。
之前用同事的金士顿8G sdhc class 4识别也很正常。
不知道是什么原因,调试的时候,发现程序大多时间是等待在如下函数里的while循环,不知道有没有人也同样碰到类似的问题,寻求解决方法。
(利用金士顿4G sdhc class4的micro sd(加卡套)也是出现同样的问题)
只是换了卡,就出现这样的问题了。。。。
static SD_Error CmdResp1Error(uint8_t cmd) //传入的参数有什么用?
{
/*不是这些状态就等待 */
while (!(SDIO->STA & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)))
{
}
SDIO->ICR = SDIO_STATIC_FLAGS; //清中断标志
SDIO_ClearFlag(SDIO_STATIC_FLAGS);
return (SD_Error)(SDIO->RESP1 & SD_OCR_ERRORBITS); //判断是否在供电范围
} |