SD卡格式化出错
在进**格式化的时候,会报错FR_DISK_ERR,具体原因是在写函数中在
if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT))
{
__SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT);
return SDMMC_ERROR_CMD_RSP_TIMEOUT;
}
里面退出了,返回了SDMMC_ERROR_CMD_RSP_TIMEOUT,查手册,这一位代表的是SDMMC->STA寄存器的第4位,
Bit 4 TXUNDERR: Transmit FIFO underrun error
Note: If DMA is used to fill SDMMC FIFO (DMAEN bit is set in SDMMC_DCTRL register),
user software should disable DMA stream, and then write DMAEN with ‘0’ (to disable
DMA request generation).
有大佬遇到过这个问题吗?怎么解决呢? {:smile:} 估计SD卡坏了 DMA配置有误? 检查与SD卡通信的命令序列是否正确 在不同的设备或读卡器上格式化SD卡,看是否能成功。 可能是硬件连接 对SD卡或整个SD卡控制器进行硬件复位,看是否能解决问题。 更新驱动和固件 驱动和固件可能与硬件不兼容导致的 编写一个简单的测试程序,只尝试进行基本的读写操作,以排除复杂应用逻辑的影响。 先插在电脑看看 命令之间添加些延时处理。
如果仍然不行,可能就是SD卡坏掉了 物理损坏 这个TXUNDERR错误确实头疼,之前遇到过,是DMA数据传输跟不上导致的,你可以试试降低SDMMC的时钟频率看看。 可能是DMA配置的问题,确认一下DMAEN位是不是正确设置了?还有传输缓冲区大小也要注意。 我记得有个方案是直接手动关闭DMA再重新初始化,貌似能解决这种FIFO underrun错误。 建议检查一下SD卡的兼容性,有时候卡本身性能不足也会导致这种问题。 看你的描述,可能是写速率和卡的实际能力不匹配,试着调慢数据传输速率? 我之前遇到这个问题是因为写操作没有对齐,建议检查一下写入地址是否对齐到块边界。
页:
[1]
2