STM32+SD卡 使用问题记录(一)

在STM32F103上使用的SD卡中,移植了FatFs文件系统,虽然好用,但是也遇到了很多问题,以下我将针对我所遇到的问题和解决方法给予分享,供大家学习使用。我用的TF卡模块是德飞莱的SD卡、TF卡二合一的卡槽模块,图片如下:在这里插入图片描述

1.SD卡初始化不成功

通过串口调试助手发现,当程序执行到

if(retry&&SD_SendCmd1(CMD58,0,0X01)==0)//鉴别SD2.0卡版本开始
{
	for(i=0;i<4;i++)buf[i]=SD_SPI_ReadWriteByte(0XFF);//得到OCR值
	if(buf[0]&0x40)SD_Type=SD_TYPE_V2HC;    //检查CCS
	else SD_Type=SD_TYPE_V2;			
}

时,导致数据返回1,而不是正确数据FR_OK(即0)。
解决方法:
该模块有两个电源插针,一个3.3V,一个5V,刚开始,我是将3.3V的电源接在了5V上边,导致SD卡初始化不成功。在更换插针之后,3.3V的电源接在3.3V的插针上,SD卡初始化初始化成功!

2.SD卡安装不成功

通过串口调试助手逐步调试发现,当程序执行到res = mount_volume(&path, &fs, 0); /* Force mounted the volume */时,返回值为3,也就是FR_NOT_READY, /* (3) The physical drive cannot work */,即物理驱动无法工作。进一步调试,发现

stat = disk_initialize(fs->pdrv);	/* Initialize the physical drive */
if (stat & STA_NOINIT) 
{ 			/* Check if the initialization succeeded */
	return FR_NOT_READY;			/* Failed to initialize due to no medium or hard error */
}

是这里导致的返回FR_NOT_READY,进一步调试,找到原因。
解决办法:
disk_initialize 的switch和case之后添加:if(!result) return FR_OK; 就能使得SD卡安装成功,如下:在这里插入图片描述
其他问题,后续补发

下一篇 STM32+SD卡 使用问题记录(二)

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值