OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6516|回复: 6

SD卡初始化,每次断电再上电不成功,上电之后再按复位键就成功是怎么回事?

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2017-1-4 18:01:17 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 zhoujianwen 于 2017-5-12 20:56 编辑

我调试的时候,断电的话JLINK会直接断开,我就快速的断电再上电,发现程序卡在这:
不知道这样断电上电调试的正不正确。
SD_Error CmdResp1Error(u8 cmd)
{         
           u32 status;
        while(1)
        {
                status=SDIO->STA;
                if(status&((1<<0)|(1<<2)|(1<<6)))break;  正常值是0x40,这里错误值是0X800. vvv.png
//根据STM32F407的SDIO寄存器值,每次重新上电的时候卡在命令传输正在进行中,这个是什么原因啊!!!
        }
        if(SDIO_GetFlagStatus(SDIO_FLAG_CTIMEOUT) != RESET)                                        //&#207;ìó|3&#172;ê±
        {                                                                                                                                                                    
                 SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);                                 //&#199;&#229;3y&#195;üá&#238;&#207;ìó|3&#172;ê±±ê&#214;&#190;
                return SD_CMD_RSP_TIMEOUT;
        }        
         if(SDIO_GetFlagStatus(SDIO_FLAG_CCRCFAIL) != RESET)                                        //CRC′í&#206;ó
        {                                                                                                                                                                    
                 SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);                                 //&#199;&#229;3y±ê&#214;&#190;
                return SD_CMD_CRC_FAIL;
        }               
        if(SDIO->RESPCMD!=cmd)return SD_ILLEGAL_CMD;//&#195;üá&#238;2&#187;&#198;¥&#197;&#228;
  SDIO_ClearFlag(SDIO_STATIC_FLAGS);//&#199;&#229;3y&#203;ùóD±ê&#188;&#199;
        return (SD_Error)(SDIO->RESP1&SD_OCR_ERRORBITS);//·μ&#187;&#216;&#191;¨&#207;ìó|
}


最佳答案

查看完整内容[请看2#楼]

上电延时是因为要等待SD卡内部电压上升到可以操作的电压。。。不然你的命令会失败
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-3-31
在线时间
5 小时
发表于 2017-1-4 18:01:18 | 显示全部楼层
上电延时是因为要等待SD卡内部电压上升到可以操作的电压。。。不然你的命令会失败
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-1-4 18:01:56 | 显示全部楼层
按复位键就成功,卡的问题还是程序的问题?
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-1-5 19:11:45 | 显示全部楼层
NO man ?
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-3-31
在线时间
5 小时
发表于 2017-3-31 10:23:59 | 显示全部楼层
我遇到一样的问题,解决办法:上电延时一段时间,然后在SD卡设置SPI频率后,延时一段时间(我的是10ms)就可以了,不知道可不可以帮到你
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-5-10 12:24:09 | 显示全部楼层
simle2333 发表于 2017-3-31 10:23
我遇到一样的问题,解决办法:上电延时一段时间,然后在SD卡设置SPI频率后,延时一段时间(我的是10ms)就可以 ...

为什么要延迟呢?
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2017-5-12 20:58:02 | 显示全部楼层
hold
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表