标题: 单片机SD卡启动实验 [打印本页]

作者: dalaoshi    时间: 2021-2-11 18:09
标题: 单片机SD卡启动实验
近日为了要DIY一样东西,需要用到大容量记忆体,自然就选中了SD卡,在阅读了51HEI论坛所有有关SD卡的文章后,就决定开工了,先是用大卡的套焊接了SPI线,连接STC12的开发板,选了http://www.51hei.com/bbs/dpj-186038-1.html“单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序”这篇文章,把里面的C代码编译后下载到开发板,LED真的亮了,表示接线没问题。

接下来就是5天5夜的SD卡之旅,由于我只懂汇编,只能逐一把C改写成A,过程并不顺利,尤其是那个CMD1,总是搞不成,后来读到有人说,网上很多关于SD卡的文章已经过时,因为文章发表时新的SD卡还未诞生,建议去看厂商的说明书,但那些说明书内容太多,不容易看,最后搜寻到这个教程(自行替换.):www点rjhcoding点com/avrc-sd-interface-1.php,乖乖学习,把命令逐一写了实验,也终于写好了,重点如下:

1. 开机稍等一下
2. 给80个空时钟(CS拉高,做读取动作)让SD卡同步。
3. 给CMD0命令,(重置,回应:1字节,“#01H",表示在睡觉)

4. 给CMD8命令,(测试,回应:5字节)
5. 给CMD58命令,(获得参数,回应:5字节)
6. 给CMD55命令,(告诉SD卡,接下来会给一个属于ACMD的命令,回应:1字节)

7. 给ACMD41命令,(告诉SD开工,回应:1个字节,因为刚刚叫SD开工,回应肯定是“#01H”, 表示还在睡)
8. 稍等(SD卡正在忙)。
9. 再给CMD55
10.再给ACMD41
11.检查回应,如果是“#00H",表示成功开工了,如果还是”#01H",就继续8-11的过程,直到把SD卡唤醒。

到了这一步,就算成功了.

祝各位:新年进步!






作者: dalaoshi    时间: 2021-2-15 00:05
本帖最后由 dalaoshi 于 2021-2-15 21:12 编辑

SD卡启动命令:


CMD0


CMD8=PARTA (更正:图上写的6个空时钟是8个空时钟)


CMD8-PARTB


CMD58


ACMD41







作者: guysxpf    时间: 2021-2-15 07:34
汇编大佬,牛逼
作者: dalaoshi    时间: 2021-2-15 20:23
CMD24 写单块(512字节):






CMD17 读单块(512字节):








作者: dalaoshi    时间: 2021-2-16 18:28
SD卡啊SD卡,体积小,容量大,价格低,性能高,是单片机的好配搭,打开了SD卡的大门,就是获得无数宝藏的开始,这是用很多次ACMD41唤醒SD卡之后,用CMD58看到的时序图:




作者: lijn    时间: 2023-9-27 11:53
请问楼主,这个是什么软件示波器,看着不错。
作者: zhuls    时间: 2023-9-27 14:52
lijn 发表于 2023-9-27 11:53
请问楼主,这个是什么软件示波器,看着不错。

看上去是逻辑分析仪。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1