原创 元器件知识之单片机对SD卡的驱动方法及程序1

2011-7-6 08:21 1021 4 4 分类: 工程师职场

单片机对SD卡的驱动方法及程序

    SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。
1SD卡的引脚定义

SD
卡引脚功能详述:

引脚
编号

SD模式

        SPI模式

 

名称

类型

描述

名称

类型

描述

1

CD/DAT3

IOPP

卡检测/
数据线3

#CS

I

片选

2

CMD

PP

命令/
回应

DI

I

数据输入

3

VSS1

S

电源地

VSS

S

电源地

4

VDD

S

电源

VDD

S

电源

5

CLK

I

时钟

SCLK

I

时钟

6

VSS2

S

电源地

VSS2

S

电源地

7

DAT0

IOPP

数据线0

DO

OPP

数据输出

8

DAT1

IOPP

数据线1

RSV

9

DAT2

IOPP

数据线2

RSV


注:S:电源供给  I:输入 O:采用推拉驱动的输出
PP
:采用推拉驱动的输入输出
SD
SPI模式下与单片机的连接图:

    SD
卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLKCMDDAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CSCLKDataInDataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。
2 SPI方式驱动SD卡的方法
     SD
卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。
1
命令与数据传输
1.
命令传输
SD
卡自身有完备的命令系统,以实现各项操作。命令格式如下:

      
命令的传输过程采用发送应答机制,过程如下:
                       
   
每一个命令都有自己命令应答格式。在SPI模式中定义了三种应答格式,如下表所示:

字节

含义




1

7

开始位,始终为0

6

参数错误

5

地址错误

4

擦除序列错误

3

CRC错误

2

非法命令

1

擦除复位

0

闲置状态

 

字节

含义




1

7

开始位,始终为0

6

参数错误

5

地址错误

4

擦除序列错误

3

CRC错误

2

非法命令

1

擦除复位

0

闲置状态




2

7

溢出,CSD覆盖

6

擦除参数

5

写保护非法

4

ECC失败

3

卡控制器错误

2

未知错误

1

写保护擦除跳过,锁/解锁失败

0

锁卡

 

字节

含义




1

7

开始位,始终为0

6

参数错误

5

地址错误

4

擦除序列错误

3

CRC错误

2

非法命令

1

擦除复位

0

闲置状态

25

全部

操作条件寄存器,高位在前



PARTNER CONTENT

文章评论0条评论)

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