原创 SD卡的一些笔记

2009-2-21 12:28 3889 3 3 分类: 通信

一、前言


这些笔记是笔者阅读SD卡规范时所作的一些笔记。只是摘录SPI模式部分,因为用SPI模式操作SD卡是最常见的方法,这些仅仅是笔者阅读规范的个人理解,也不全面。但可以算是SD卡的入门笔记。更多详细说明,请参阅SD卡规范。


二、引脚


1SPI模式针脚定义


定义如下:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />




针脚


名称


类型


描述


1


CS


I


片选(负有效)


2


DI


I


数据输入


3


Vss


S



4


Vcc


S


供电电压


5


CLK


I


时钟


6


Vss2


S



7


DO


O


数据输出


8


RSV


--


 


9


RSV


--


 


1、引脚


注:S:电源供电,I:输入O:输出


注意:SPI模式时,这些信号需要在主机端用10~100K欧的电阻上拉。即引脚25789脚。


 


三、命令


1、  命令格式


命令格式如图2所示,6字节共48位,传输时最高位(MSB)先传输。


 




Byte 1


Bytes 2-5


Byte 6


7


6


5             0


31                       0


7


0


0


1


Command


Command Argument


CRC


1


 


2SPI模式下命令格式


2、  命令分类


各个命令说明见规范说明,--这里不能贴图片,因而没有贴出来。命令的索引值即为命令的值(CMD39即为100111)SPI Mode栏为Yes的命令支持SPI模式,Argument为参数栏,Resp为响应的类型,Abbreviation为命令的缩写,最后一栏为说明文字。


3、  R1响应


SD卡中的响应有许多种,R1为标准响应,最为常用。与R1响应相似的还有R1bR2R3R1响应在除SEND_STATUS外其它命令后发送,也是最高位先发送,共1个字节。R1的格式如图3所示。响应说明如下:


0x01:空闲状态


0x02:擦除错误


0x04:命令错误


0x08CRC通信错误


0x10:擦除次序错误


0x20:地址错误


0x40:参数错误


其它响应略去不谈,详见SD卡规范。


7                                  0




0


 


 


 


 


 


 


 


            7         6        5         4        3       2       1                  


1In Idle State


2Erase Reset


3Illegal Command


4Com CRC Error


5Erase_Seq_Error


6Address Error


7Parameter Error


3R1响应格式


4、  数据响应(Data Response)


写数据区都要有一个数据记号来响应,该数据响应共1字节,格式如图4所示。其中XXX者可设置为0,这样高4位即为0,Status处定义如下: (其中括号即为该字节的16进制数)


010:数据接收                   (0x05)


101CRC错误,拒绝接收 (0x0b)


110:写错误,拒绝接收      (0x0d)


7                                 6                   5                          4                                        0    




X


X


X


0


Status


1


 


4、数据响应格式


5、  数据记号(Data Token)


数据传输都是通过数据记号的,共4515字节,同样是最高位先传输。对于单块的读写和多块读,第一个字节为0xfe(开始标志),接下来的2513字节(视数据块长度而定)为用户数据。最后两字节为16位的CRC。而对于多块的写,第一字节有两种标志,开始标志为0xfc(数据是发送的),停止标志为0xfd(要求停止)


6、  数据错误记号(Data Error Token)


如果读操作失败,SD卡则会发送数据错误记号,格式如图5,定义如下:


0x01:错误


0x02CC错误


0x04ECC错误


0x08:范围错误


0x10:卡被锁了


7                                  0




0


0


0


 


 


 


 


 


                                 5         4       3        2        1


1Error


2CC Error


3Card ECC Failed


4Out of Range


5Card is Locked


 


5、数据错误记号


四、结语


这些可以说是SD卡的一些最基本的知识了,其它关于卡的电气特性等等的就不写了。一般来说,写程序来操作SD卡,拥有这些知识,再加上阅读别人写的程序,应该会对SD卡理解更深一点的。推荐Pascal StangZhengYanboQibo Zhang他们的程序。


 


PS:可参见另一相同版本:http://blog.chinaunix.net/u1/58951/showart_1837451.html

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条