Chinaunix首页 | 论坛 | 博客
  • 博客访问: 485904
  • 博文数量: 42
  • 博客积分: 2100
  • 博客等级: 大尉
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-07 21:07
文章分类

全部博文(42)

文章存档

2011年(1)

2010年(18)

2009年(16)

2008年(7)

分类:

2009-02-21 12:19:05

一、前言

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

二、引脚

1、引脚

引脚如图1所示。

1 SD卡引脚

2SPI模式针脚定义

定义如下:

针脚

名称

类型

描述

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

--

 

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

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

3SPI模式总线拓扑图

拓扑图如图2

 

2SPI模式总线拓扑图

三、命令

1、  命令格式

命令格式如图3所示,6字节共48位,传输时最高位(MSB)先传输。7CRC计算如图4所示。

 

Byte 1

Bytes 2-5

Byte 6

7

6

5             0

31                       0

7

0

0

1

Command

Command Argument

CRC

1

 

3SPI模式下命令格式

47CRC的计算

2、  命令分类

各个命令说明见图5、图6,命令的索引值即为命令的值(CMD39即为100111)SPI Mode栏为Yes的命令支持SPI模式,Argument为参数栏,Resp为响应的类型,Abbreviation为命令的缩写,最后一栏为说明文字。

5、命令一览表

6、命令一览表()

3、  R1响应

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

0x01:空闲状态

0x02:擦除错误

0x04:命令错误

0x08CRC通信错误

0x10:擦除次序错误

0x20:地址错误

0x40:参数错误

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

7R1响应格式

4、  数据响应(Data Response)

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

010:数据接收                   (0x05)

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

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

8、数据响应格式

5、  数据记号(Data Token)

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

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

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

0x01:错误

0x02CC错误

0x04ECC错误

0x08:范围错误

0x10:卡被锁了

9、数据错误记号

四、结语

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

欢迎一起交流,

 

阅读(1817) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-05-14 07:44:45

你已经很不错了,呵呵,我都大4了,还什么都不会呢,都马上混社会的人了,唉,悲哀啊