首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行硬件重置后,使用SPI初始化SanDisk SD卡失败

执行硬件重置后,使用SPI初始化SanDisk SD卡失败
EN

Stack Overflow用户
提问于 2015-11-26 23:22:18
回答 1查看 2.2K关注 0票数 3

我正在使用SPI微控制器来连接使用STM32外设的SD卡存储器。我用2 2Gb、4 2Gb、8 2Gb和16 2Gb的SanDisk卡做了测试。当我对2 2Gb和8 2Gb的卡执行重置时,什么都没有发生,并且我继续我的测试。但是,对于4 4Gb和16 4Gb,一旦执行重置,初始化就会失败。事实上,在第一次插入SD插槽时,这些卡初始化得很好,但我执行了一次重置,但没有通过。

当我尝试调试这个问题时,我发现在处理重置时,对命令CMD0的响应是错误的。我得到0x00而不是0x01,这意味着我的卡没有处于空闲状态。

我认为这个问题是由于CS线路的时间问题。因此,在发送CMD0命令和发送虚拟字节之前,我尝试取消断言CS,以便使卡等待8个时钟周期。然后,我发送CMD0并断言CS线路为高。(见下文)

代码语言:javascript
复制
SD_IO_CSState(0);
SD_IO_WriteByte(SD_DUMMY_BYTE);
response = SD_SendCmd(SD_CMD_GO_IDLE_STATE, 0, 0x95, SD_ANSWER_R1_EXPECTED);
SD_IO_CSState(1);
SD_IO_WriteByte(SD_DUMMY_BYTE);

使用此解决方案,只需几次重置测试即可通过初始化。但是,在任何时候它都可能失败,这与2 2Gb和8 2Gb卡的情况不同。

有什么建议可以解决吗??

EN

回答 1

Stack Overflow用户

发布于 2017-10-12 13:14:44

我的24 GB SanDisk SD卡也面临着同样的问题。据我所知,也许SD卡一旦在SPI模式下初始化就不再接受CMD0 (这是软件重置命令!),让它们恢复到初始状态的唯一方法就是执行它们的电源循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33942079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档