gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:29:13 24 4
gpt4 key购买 nike

我正在使用 STM32 微 Controller 通过 SPI 外设连接 SD 卡存储器。我已经用 2Gb、4Gb、8Gb 和 16Gb SanDisk 卡进行了测试。当我使用 2Gb 和 8Gb 卡执行重置时,没有任何反应,我继续进行测试。但是,对于 4Gb 和 16Gb,一旦执行重置,初始化就会失败。事实上,第一次插入 SD 插槽时,这些卡初始化得很好,但我执行重置后却无法通过。

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

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

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);

使用此解决方案,初始化在几次重置测试后即可通过。但是,它随时可能会失败,而 2Gb 和 8Gb 卡则不会出现这种情况。

有什么建议可以解决这个问题吗?

最佳答案

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

关于embedded - 执行硬件重置后,使用 SPI 初始化 SanDisk SD 卡失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33942079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com