单片机SD卡启动实验, 本帖最后由 dalaoshi 于 2021-2-12 02:44 编辑
近日为了要DIY一样东西,需要用到大容量记忆体,自然就选中了SD卡,在阅读了51HEI论坛所有有关SD卡的文章后,就决定开工了,先是用大卡的套焊接了SPI线,连接STC12的开发板,选了http://www.073107.com/bbs/dpj-186038-1.html“单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序”这篇文章,把里面的C代码编译后下载到开发板,LED真的亮了,表示接线没问题。
接下来就是5天5夜的SD卡之旅,由于我只懂汇编,只能逐一把C改写成A,过程并不顺利,尤其是那个CMD1,总是搞不成,后来读到有人说,网上很多关于SD卡的文章已经过时,因为文章发表时新的SD卡还未诞生,建议去看厂商的说明书,但那些说明书内容太多,不容易看,最后搜寻到这个教程:http://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卡唤醒。
到了这一步,就算成功了.
祝各位:新年进步!