SD卡中文学习笔记.docx

上传人:b****6 文档编号:5662312 上传时间:2022-12-30 格式:DOCX 页数:71 大小:1.13MB
下载 相关 举报
SD卡中文学习笔记.docx_第1页
第1页 / 共71页
SD卡中文学习笔记.docx_第2页
第2页 / 共71页
SD卡中文学习笔记.docx_第3页
第3页 / 共71页
SD卡中文学习笔记.docx_第4页
第4页 / 共71页
SD卡中文学习笔记.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

SD卡中文学习笔记.docx

《SD卡中文学习笔记.docx》由会员分享,可在线阅读,更多相关《SD卡中文学习笔记.docx(71页珍藏版)》请在冰豆网上搜索。

SD卡中文学习笔记.docx

SD卡中文学习笔记

 

SD卡操作

 

一、概述

 

1、简介

 

SD卡是基于flash的存储卡。

SD卡和MMC卡的区别在于初始化过程不同。

SD卡的通信协议包括SD和SPI两类。

 

SD卡使用卡内智能控制模块进行FLASH操作控制,包括协议、安全算法、数据存取、

ECC算法、缺陷处理和分析、电源管理、时钟管理。

 

2、功能介绍

 

2.1特点

 

1)主机无关的FLASH内存擦除和编程

读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机无需关心具

体操作的完成。

当采用新型的FLASH时,主机代码无需更新。

2)缺陷管理

3)错误恢复

4)电源管理

 

Flash每个扇区有大约10万次的写寿命,读没有限制。

 

擦除操作可以加速写操作,因为在写之前会进行擦除。

 

3SD总线模式

 

3.1NegotiatingOperationConditions

 

当主机定义了SD卡不支持的电压范围时,SD卡将处于非活动状态,将忽略所有的总

线传输。

要退出非活动状态唯一的方法就是重新上电。

 

3.2SD卡获取和识别

 

SD卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。

主机依次分别访

问每个卡,每个卡的CID寄存器中已预编程了一个唯一的卡标识号,用来区分不同的卡。

主机通过READ_CID命令读取CID寄存器。

CID寄存器在SD卡生产过程中的测试和

格式化时被编程,主机只能读取该号。

DAT3线上内置的上拉电阻用来侦测卡。

在数据传输时电阻断开(使用ACMD42)。

 

3.3卡状态

 

卡状态分别存放在下面两个区域:

卡状态(CardStatus),存放在一个32位状态寄存器,在卡响应主机命令时作为数据传

送给主机。

SD状态(SD_Status),当主机使用SD_STATUS(ACMD13)命令时,512位以一个数

据块的方式发送给主机。

SD_STATUS还包括了和BUS_WIDTH、安全相关位和扩展位等的

扩展状态位。

 

3.4内存组织

 

数据读写的基本单元是一个字节,可以按要求组织成不同的块。

 

Block:

块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储在CSD寄

存器。

Sector:

和擦除命令相关,由几个块组成。

Sector的大小对每个设备是固定的,大小信息

存储在CSD寄存器。

WPGroup:

写保护单位。

大小包括几个group,写保护由一位决定,对每个设备大小是

固定的,存储在CSD寄存器。

 

3.5读写操作

 

SingleBlockMode:

主机根据事先定义的长度读写一个数据块。

由发送模块产生一个16

位的CRC校验码,接受端根据校验码进行检验。

读操作的块长度受设备sector大小(512

bytes)的限制,但是可以最小为一个字节。

不对齐的访问是不允许的,每个数据块必须位于

单个物理sector内。

写操作的大小必须为sector大小,起始地址必须与sector边界对齐。

MultipleBlockMode:

主机可以读写多个数据块(相同长度),根据命令中的地址读取或

写入连续的内存地址。

操作通过一个停止传输命令结束。

写操作必须地址对齐。

 

3.6数据传输速率

 

SD卡可以通过单数据线(DAT0)或四根数据线(DAT0-DAT3)进行数据传输。

单根

数据线传输最大传输速率为25Mbit/s,四根数据线最大传输速率为100Mbit/s。

 

3.7数据保护

 

每个sector的数据通过ErrorCorrectionCode(ECC)进行保护。

在写sector时生成ECC,

在读sector时检验ECC。

如果发现错误,在传输前进行纠正。

 

3.8数据擦除

 

SD卡数据擦除的最小单位是sector。

为了加速擦除操作,多个sector可以同时擦除。

为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址,在地址范围内的所

有sector将被擦除。

 

3.9写保护

 

两种写保护方式可供选择,永久保护和临时保护,两种方式都可以通过PROGRAM_CSD指令进行设置。

永久保护位一旦设置将无法清除。

 

3.10拷贝位

 

通过CSD寄存器中的拷贝位(copybit)设置SD卡中的数据是原始数据还是拷贝数据。

拷贝位一旦设置,

将无法清除,在测试和格式化时使用。

 

3.11CSD寄存器

 

所有SD卡的配置信息存储在CSD寄存器。

通过SEND_CSD读取,PROGRAM_CSD修改。

 

4SPI模式

 

二、SD卡接口描述

 

1引脚和寄存器

 

主机通过9个引脚和SD卡相连

 

1.1SD模式引脚

 

扩展数据线(DAT1-DAT3)上电后为输入,SET_BUS_WIDTH命令执行后作为数据线。

即使只

有DAT0使用,所有数据线都和外部上拉电阻连接,否则DAT1&DAT2(如果未被使用)

的振荡输入将引起非期望的高电流损耗。

上电后,数据线输入50K(+/-20K)欧姆的上拉(用来进行卡侦测和SPI模式选择)。

户可以在常规数据传输时,通过SET_CLR_CARD_DETECT(ACMD42)命令分离上拉。

 

1.2SPI模式引脚

 

1.3寄存器

 

主机通过重新上电来重置(reset)卡。

卡有它自身检测上电的电路,当上电后卡状态切换到idle状态。

也可以通过GO_IDLE(CMD0)指令来重置。

 

2SD卡总线拓扑

 

SD总线有6根通信线和三根电源供应线:

CMD——命令线是双向信号线。

主机和卡通过pushpull模式工作。

DAT0-3——数据线是双向信号线。

主机和卡通过pushpull模式工作。

CLK——时钟是从主机到卡的信号。

CLK通过pushpull模式操作。

VDD—VDD是所有卡的电源供应线。

VSS[1:

2]—VSS是2根地线。

名称

宽度

描述

CID

128

卡标识号

RCA

16

相对卡地址(Relativecardaddress):

本地系统中卡的地址,动

态变化,在主机初始化的时候确定

*SPI模式中没有

CSD

128

卡描述数据:

卡操作条件相关的信息数据

SCR

64

SD配置寄存器:

SD卡特定信息数据

OCR

32

操作条件寄存器

 

在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽(physicalslot)

分配逻辑地址。

数据通常分别传输给每个卡。

然后,为了方便处理卡堆栈,初始化后所有

命令同时发送给所有卡,在命令数据包中包含了操作地址。

SD总线允许动态配置数据线数目。

上电后默认SD卡只用DAT0作为数据传输线。

初始

化后,主机可以改变总线宽度。

这个特性使得在硬件开销和系统性能间取得平衡。

 

3SPI总线拓扑

 

4电气接口

 

4.1上电

 

上电后,包括热插入,卡进入idle状态。

在该状态SD卡忽略所有总线操作直到接收到

ACMD41命令。

ACMD41命令是一个特殊的同步命令,用来协商操作电压范围,并轮询所

有的卡。

除了操作电压信息,ACMD41的响应还包括一个忙标志,表明卡还在power-up过

程工作,还没有准备好识别操作,即告诉主机卡还没有就绪。

主机等待(继续轮询)直到忙标

志清除。

单个卡的最大上电时间不能操作1秒。

上电后,主机开始时钟并在CMD线上发送初始化序列,初始化序列由连续的逻辑“1”

组成。

序列长度为最大1毫秒,74个时钟或supply-ramp-up时间。

额外的10个时钟(64个

时钟后卡已准备就绪)用来实现同步。

每个总线控制器必须能执行ACMD41和CMD1。

CMD1要求MMC卡发送操作条件。

 

在任何情况下,ACMD41或CMD1必须通过各自的CMD线分别发送给每个卡。

 

5寄存器

 

5.1OCR(OperatingConditionsRegister)

 

32位的操作条件寄存器存储了VDD电压范围。

SD卡操作电压范围为2~3.6V。

然而从

内存中访问数据的电压是2.7~3.6V。

OCR显示了卡数据访问电压范围,结构如下表所示。

表3-8OCR寄存器定义

OCR位

VDD电压范围

0-3

保留

4

1.6~1.7

5

1.7~1.8

6

1.8~1.9

7

1.9~2.0

8

2.0~2.1

9

2.1~2.2

10

2.2~2.3

11

2.3~2.4

12

2.4~2.5

13

2.5~2.6

14

2.6~2.7

15

2.7~1.8

16

2.8~2.9

17

2.9~3.0

18

3.0~3.1

19

3.1~3.2

20

3.2~3.3

21

3.3~3.4

 

OCR结构如下图所示。

如果第32位(busybit)置位,表明卡上电过程已结束。

 

5.2CID(CardIdentification)

 

CID寄存器长度为16个字节的卡唯一标识号,该号在卡生产厂家编程后无法修改。

SD

和MMC卡的CID寄存器结构不一样。

名称

类型

CID位

内容

CID值

厂商ID

Binary

8

[127:

120]

SD卡协会管理和分配

0x03

OEM/Application

ID(OID)

ASCII

16

[119:

104]

识别卡的OEM或卡内容,由制

造商分配

0x53,0x44

产品名(PNM)

ASCII

40

[103:

64]

5个ASCII字符

SD128

产品版本(PRV)

BCD

8

[65:

56]

2个二进制编码的十进制数

产品版本

1

(30)

序列号(PSN)

Binary

32

[55:

24]

32位无符号整数

产品序列号

保留

4

[23:

20]

生成日期(MDT)

BCD

12

[19:

8]

yym(从2000年的偏移量)

如:

Apr

2001=0x014

22

3.4~3.5

23

3.5~3.6

24-30

保留

31

卡上电状态位(忙)

 

1、格式为“n.m”,如“6.2”表示为01100010

 

5.3CSD(CardSpecificData)

 

CSD寄存器包含访问卡数据所需的配置信息。

SD卡和MMC卡的CSD不同。

 

6数据交互格式和卡容量

 

通常,SD卡分为2个区:

✧用户区—用户通过读写命令存储安全和非安全数据。

✧安全保护区(SecurityProtectedArea)—版权保护应用程序用来保存安全相关数据,通

过SD安全规范中定义的条件验证后,由主机使用安全的读写指令完成操作。

安全保护

区的大小大概是总大小的1%。

CRC7校验和

(CRC)

Binary

7

[7:

1]

CRCCalculation:

G(x)=x7+3+1

M(x)=(MID-MSB)*x119+...+(CIN-LSB)*x0

CRC[6...0]=Remainder[(M(x)*x7)/G(x)]

CRC7

未用

1

[0:

0]

 

三、SD卡协议

 

1SD总线协议

 

SD总线通信是基于命令和数据位流方式的,由一个起始位开始,以一个停止位结束:

命令——命令是开始开始操作的标记。

命令从主机发送一个卡(寻址命令)或所有连

接的卡(广播命令)。

命令在CMD线上串行传送。

响应——响应是从寻址卡或所有连接的卡(同步)发送给主机用来响应接受到的命令

的标记。

命令在CMD线上串行传送。

数据——数据可以通过数据线在卡和主机间双向传送。

 

卡寻址通过会话地址方式实现,地址在初始化的时候分配给卡。

SD总线上的基本操作

是command/response。

数据传送采用块方式,数据块后接CRC校验位,操作包括单数据块和多数据块。

多数据

块更适合快速写操作,多数据块传输当在CMD线出现停止命令时结束。

数据传输可以在主

机端设置采用单数据线或多数据线方式。

 

块写操作在DAT0数据线写操作期间使用忙信号,无论用来传输的信号线数目是多少。

 

命令格式如下所示:

 

响应标记(token)根据内容不同具有四种格式,标记长度。

长度为48位或136位。

据块的CRC算法采用16位的CCITT多项式。

 

在命令行中,MSB位首先传送,LSB位最后传送。

当使用宽总线模式时,数据同时在4根数据线上传输。

开始位、结束位和CRC在每根数

据线上传送。

CRC对每根数据线单独计算。

CRC状态响应和Busy信号只通过DAT0由卡发送给

主机。

 

2协议功能描述

 

所有主机和SD卡间的通信由主机控制。

主机发送下述两类命令:

广播命令——广播命令发送给所有SD卡,有些命令需要响应。

寻址(点对点)命令——寻址命令只发送给具有相应地址的卡,并需要从卡返回一个响应。

对卡而言也有两类操作:

卡识别模式——在重置(reset)后当主机查找总线上的新卡时,处于卡识别模式。

重置后

SD卡将始终处于该模式,直到收到SEND_RCA命令(CMD3)。

数据传输模式——一旦卡的REC发布后,将进入数据传输模式。

主机一旦识别了所有总线

上的卡后,将进入数据传输模式。

 

操作模式与卡状态关系:

 

3卡识别模式

 

在卡识别模式,主机重置所有处于卡识别模式的SD卡,检验操作电压范围,识别卡并

请求卡发送相对卡地址RCA。

操作对每个卡在各自的CMD线上单独进行,所有的数据传

送只使用CMD线。

 

3.1重置

 

GO_IDLE_STATE(CMD0)是软件重置命令,设置每个SD卡进入Idle状态。

处于Inactive

状态的卡不受此命令影响。

主机上电后,所有SD卡进入Idle状态,包括处于Inactive状态的卡。

至少74个时钟

周期后才能开始总线传输。

上电或CMD0后,所有SD卡的命令线处于输入模式,等待下一个命令的起始位。

通过一个默认的相对卡地址RCA(RCA=0x0000)和默认驱动寄存器设置(最低速,最高

驱动电流)初始化。

 

3.2操作电压范围验证

 

SD的物理规范标准要求所有SD卡能通过最小和最大供电电压间的任何电压和主机建

立通信。

然而,数据传输时的最小和最大电压值在操作条件寄存器OCR中定义,可能并不

 

能覆盖所有的电压范围。

SD卡主机希望通过读取卡的OCR寄存器获取合适的电压值或弹

出卡。

SD卡

 

3.3卡识别过程

 

在识别时钟速率fOD下主机开始卡识别过程。

SD卡的CMD线输出驱动是push-pull

驱动。

总线激活后,主机要求卡发送它们的有效操作条件(ACMD41precedingwithAPP_CMD

—CMD55withRCA=0x000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1