sd卡的学习总结

        单片机接触到现在有好多的必备的技能还是很欠缺,其中SD的学习就显得格外重要,只要稍微涉及到大量的数据储存就必须用到存储介质来做存储手段,而SD是目前很经济又实用的一种方法。

        我前前后后学SD的也有一段时间了,每次看SD卡的数据手册都是强迫看了两天就又忙别的去了,等下次再来看的时候就又忘的差不多了,效率极低,看的又不全面(全英文的,看的太累),今天算是把SD给 弄出来了,明天上个文件系统再试下效果。现在总结一下sd卡的操作步骤,主要是在SPI模式上开发的,SD总线后面有空了再对比SPI模式做总结。

        几个重要的概念和寄存器。

        命令格式:

        以b47 为0起始,第b46位是固定为1(传输位),b45-b40(暂时不理会),b39-b8(4个字节的参数),b7-b1 (7位CRC校验),b0结束位

响应寄存器

R1:  b0 空闲OR初始化忙中

        b1 超出擦除范围时擦除复位

        b2 非法命令

        b3 crc校验错误

        b4 擦除序列错误

        b5 地址错误

        b6 参数错误



:

R2 :


R3;


R4 - R6 与SD总线模式有关,不理会

R7 :


写数据块之后会有响应


单块数据块写:先发0xFE(起始块)

多块数据块写入操作在数据之前发0xFC,数据写结束发0xFD。

写操作


读操作

注意点:对于标准容量记忆卡,单块的读的数据大小单位为字节,由指令指定。大容量的SD读单位为块。

初始化操作流程:

上电,发CMD0+片选CS为0进入SPI模式,发CMD8区别V2.0以上和V1.0。

若响应非法,则可能为V1.0。(发CMD58可查看支持操作电压)继续发ACMD41,"in_idle_state = 0"则为V1.0卡,响应非法命令,则不是SD卡。

若响应合法命令继续鉴别V2.0的卡类型。同上发ACMD41,再发CMD58获取CCS区别是否是标志容量SD卡还是高容量SD卡。

以上是对SD的重点总结,具体还是看SD规格书V2.0比较详细。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容