最近学习一了下SD卡的驱动,网上程序的版本很多,使用的MCU和SD卡的型号千奇百怪,学起来反而没有方向,感觉上乱七八糟的,直到现在才知到我们平常说的SD卡实际上有很多中类别。0到2G的SD卡,最普通的卡;2G到32G的SDHC卡,也就是现在最常用的大容量SD卡;还有我没有见过的SDXC卡,容量好像在32G以上。同时还有手机上的TF卡,实际上也是SD卡 只不过做工不同而已,MMC卡。学习的时候走了很多弯路,SD卡的官方data sheet感觉上写的相当坑爹,网上的学习资料还是给了很大的帮助,但是由于网上的版本很多,程序流程还是要参考官方相对应的SD卡初始化流程。这两天闲下来,抓紧时间整理一下笔记。
首先说一下我自己使用的卡,它是SanDisk 4G SDHC Card,速度等级为4,算比较快的一种大容量SD卡。MCU选取了STC12C5A60S2,反馈信息的显示采用最常用的1602液晶屏,当然大部分网上的代码使用的是串口。SD卡有两种传输模式,SD模式和SPI模式,SD模式需要4跟数据线,而我们一般都采用SPI模式,也就是常说的串行通信模式,这种方式需要的通信线比较少,一根数据输入D_IN,一根数据输出D_OUT,CS片选线,CLK时钟,此外还有电源3.6V和GND地线,其他的引脚按照说明悬空或者接地即可。
其次,SD卡的初始化过程根据卡的不同有不同的方式,我们按照官方给出的流程来说。关于命令的具体参数和返回值的类型说明放在下一篇笔记中,这里只记录流程。

本文详细介绍了如何使用STC12C5A60S2单片机初始化SDHC卡,包括SD卡的分类、初始化流程及读写操作。通过CMD0、CMD8、ACMD41和CMD58等命令,使SD卡进入读写就绪状态,并解释了不同命令的作用及其返回值的含义。
最低0.47元/天 解锁文章
7898

被折叠的 条评论
为什么被折叠?



