你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SD卡初始化第一次初始化后再次初始化时会失败。

[复制链接]
dhhnr 提问时间:2025-5-14 14:50 / 未解决

| 使用的是stm32F407驱动一个32G的tf卡,使用的SPI模式。第一次上电时,卡识别初始化能通过,但是再keil调试时复位,再运行到初始化这里。卡识别初始化一直过不了。这个时候拔插一次tf卡,再次初始化就能通过。这是什么原因?怎么解决?

初始化代码部分: uint8_t SD_Initialize(void) {

uint8_t r1; // 存放SD卡的返回值 uint16_t retry; // 用来进行超时计数

uint8_t buf[4];

SD_Type = 0; //默认无卡

if (r1 == 0X01) {

if (SD_SendCmd(CMD8, 0x1AA, 0x87) == 1) //SD V2.0 {

for (i = 0; i < 4; i++)buf[i] = SD_SPI_ReadWriteByte(0XFF); //Get trailing return value of R7 resp

if (buf[2] == 0X01 && buf[3] == 0XAA) //卡是否支持2.7~3.6V {

retry = 0XFFFE; do

{ r1=SD_SendCmd(CMD55, 0, 0X01); //发送CMD55

r1 = SD_SendCmd(CMD41, 0x40000000, 0X01); //发送CMD41 }

while (r1 && retry--);

if (retry && SD_SendCmd(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; }

}

}

else //SD V1.x/ MMC V3 {

SD_SendCmd(CMD55, 0, 0X01); //发送CMD55 r1 = SD_SendCmd(CMD41, 0, 0X01); //发送CMD41

if (r1 <= 1) {

SD_Type = SD_TYPE_V1; retry = 0XFFFE;

do //等待退出IDLE模式 {

SD_SendCmd(CMD55, 0, 0X01); //发送CMD55 r1 = SD_SendCmd(CMD41, 0, 0X01); //发送CMD41

}

while (r1 && retry--); }

else {

SD_Type = SD_TYPE_MMC; //MMC V3 retry = 0XFFFE;

do //等待退出IDLE模式 {

r1 = SD_SendCmd(CMD1, 0, 0X01); //发送CMD1 }

while (r1 && retry--); }

if (retry == 0 || SD_SendCmd(CMD16, 512, 0X01) != 0)SD_Type = SD_TYPE_ERR; //错误的卡 }

} SD_DisSelect();//取消片选

if (SD_Type)return 0; else if (r1)return r1;

return 0xaa;//其他错误

} 发送CMD8时,响应值正常。CMD55也正常响应。ACMD41返回值一直是0x01(r1 = SD_SendCmd(CMD41, 0x40000000, 0X01); //发送CMD41)。 if (buf[2] == 0X01 && buf[3] == 0XAA) //卡是否支持2.7~3.6V

{

retry = 0XFFFE; do

{ SD_SendCmd(CMD55, 0, 0X01); //发送CMD55

r1 = SD_SendCmd(CMD41, 0x40000000, 0X01); //发送CMD41 }while (r1 && retry--);

收藏 评论1 发布时间:2025-5-14 14:50

举报

1个回答
dhhnr 回答时间:昨天 15:12

也试过直接冷启动(直接上电不通过调试器),连续初始化两次,第一次初始化通过,第二次的初始化就直接失败了。

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版