SD操作学习笔记文档格式.docx

上传人:b****1 文档编号:282147 上传时间:2023-04-28 格式:DOCX 页数:109 大小:40.82KB
下载 相关 举报
SD操作学习笔记文档格式.docx_第1页
第1页 / 共109页
SD操作学习笔记文档格式.docx_第2页
第2页 / 共109页
SD操作学习笔记文档格式.docx_第3页
第3页 / 共109页
SD操作学习笔记文档格式.docx_第4页
第4页 / 共109页
SD操作学习笔记文档格式.docx_第5页
第5页 / 共109页
SD操作学习笔记文档格式.docx_第6页
第6页 / 共109页
SD操作学习笔记文档格式.docx_第7页
第7页 / 共109页
SD操作学习笔记文档格式.docx_第8页
第8页 / 共109页
SD操作学习笔记文档格式.docx_第9页
第9页 / 共109页
SD操作学习笔记文档格式.docx_第10页
第10页 / 共109页
SD操作学习笔记文档格式.docx_第11页
第11页 / 共109页
SD操作学习笔记文档格式.docx_第12页
第12页 / 共109页
SD操作学习笔记文档格式.docx_第13页
第13页 / 共109页
SD操作学习笔记文档格式.docx_第14页
第14页 / 共109页
SD操作学习笔记文档格式.docx_第15页
第15页 / 共109页
SD操作学习笔记文档格式.docx_第16页
第16页 / 共109页
SD操作学习笔记文档格式.docx_第17页
第17页 / 共109页
SD操作学习笔记文档格式.docx_第18页
第18页 / 共109页
SD操作学习笔记文档格式.docx_第19页
第19页 / 共109页
SD操作学习笔记文档格式.docx_第20页
第20页 / 共109页
亲,该文档总共109页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SD操作学习笔记文档格式.docx

《SD操作学习笔记文档格式.docx》由会员分享,可在线阅读,更多相关《SD操作学习笔记文档格式.docx(109页珍藏版)》请在冰点文库上搜索。

SD操作学习笔记文档格式.docx

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

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

大小信息存储在CSD寄存器。

WPGroup:

写保护单位。

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

设备大小是固定的,存储在CSD寄存器。

3.5读写操作

SingleBlockMode:

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

由发送模块产

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

读操作的块长度受设

备sector大小(512bytes)的限制,但是可以最小为一个字节。

不对齐的访问是不

允许的,每个数据块必须位于单个物理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寄存器

名称

CID

RCA

CSD

SCR

OCR

宽度

128

16

64

32

描述

卡标识号

相对卡地址(Relativecardaddress):

本地系统中卡的地

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

*SPI模式中没有

卡描述数据:

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

SD配置寄存器:

SD卡特定信息数据

操作条件寄存器

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

卡有它自身检测上电的电路,当上电后卡

状态切换到idle状态。

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

2SD卡总线拓扑

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

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

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

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

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

CLK通过pushpull模式操作。

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

VSS[1:

2]—VSS是2根地线。

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

(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

5

6

7

8

9

10

11

12

13

14

15

17

18

19

20

21

22

23

24-30

31

保留

1.6~1.7

1.7~1.8

1.8~1.9

1.9~2.0

2.0~2.1

2.1~2.2

2.2~2.3

2.3~2.4

2.4~2.5

2.5~2.6

2.6~2.7

2.7~1.8

2.8~2.9

2.9~3.0

3.0~3.1

3.1~3.2

3.2~3.3

3.3~3.4

3.4~3.5

3.5~3.6

卡上电状态位(忙)

OCR结构如下图所示。

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

束。

5.2CID(CardIdentification)

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

法修改。

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

类型宽

CID位内容

CID值

厂商ID

Binar

y

8[127:

0]

SD卡协会管理和分配

0x03

OEM/Applicati

onID(OID)

ASCI

I

1

[119:

4]

识别卡的OEM或卡内容,

由制造商分配

0x53,0x44

产品名(PNM)ASCI

[103:

64]5个ASCII字符

SD128

产品版本

(PRV)

BCD8[65:

56]2个二进制编码的十进制数产品版本

(30)1

序列号(PSN)

3

2

[55:

24]32位无符号整数

产品序列

生成日期

(MDT)

CRC7校验和

4[23:

20]

BCD1[19:

8]

yym(从2000年的偏移量)如:

Apr

2001=0x0

CRCCalculation:

G(x)=x7+3+1

(CRC)

未用

Binar7[7:

1]

1[0:

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

B)*x0

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

]

CRC7

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

5.3CSD(CardSpecificData)

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

SD卡和MMC卡的CSD不同。

6数据交互格式和卡容量

通常,SD卡分为2个区:

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

安全保护区(SecurityProtectedArea)—版权保护应用程序用来保存安全相

关数据,通过SD安全规范中定义的条件验证后,由主机使用安全的读写指

令完成操作。

安全保护区的大小大概是总大小的1%。

三、SD卡协议1SD总线协议

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

止位结束:

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

命令从主机发送一个卡(寻址命令)

或所有连接的卡(广播命令)。

命令在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驱动。

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

APP_CMD—CMD55withRCA=0x0000)。

ACMD41命令的响应是卡的操作条件

寄存器。

相同的命令将发送给系统中所有的卡。

不兼容的卡将进入Inactive状态。

主机然后发送命令ALL_SEND_CID(CMD2)到每个卡以获取每个卡的唯一标

识CID号。

未识别的卡通过CMD线发送CID号作为响应。

当卡发送CID号后,

进入识别状态(IdentificationState)。

此后,主机发送CMD3

(SEND_RELATIVE_ADDR)要求卡发布一个新的相对卡地址RCA,地址比CID

短,在以后的数据传输模式中用来寻址卡。

一旦获得RCA后,卡状态变成就绪

状态(Stand-bystate)。

此时,如果主机要求卡换成其他的RCA号,可以通过

发送另一个SEND_RELATIVE_ADDR命令给卡,要求发布一个新的RCA,最

后发布的RCA是实际使用的RCA。

主机对系统中的每个卡重复识别过程。

所有的SD卡初始化完以后,系统将开始初始化MMC卡(如果有的话),

使用MMC卡的CMD2和CMD3。

4数据传输模式

直到主机知道所有CSD寄存器的内容,fpp时钟速率必须保持在fOD,因为

一些卡有操作频率限制。

主机发送SEND_CSD(CMD9)获取卡定义数据(Card

SpecificData,CSD寄存器),如块大小、卡存储容量、最大时钟速率等。

CMD7用来选择一个卡并将它置于传输状态(Transferstate),在任何时间

只能有一个卡处于传输状态。

如果已有一个卡处于传输状态,它和主机的连接将

释放,并返回到Stand-by状态。

当CMD7以保留相对地址“0x0000”发送时,

所有卡将返回到Stand-by状态。

这可以用来识别新的卡而不重置其他已注册的

卡。

在这种状态下已有一个RCA地址的卡不响应识别命令

(ACMD41,CMD2,CMD3)。

注意:

当卡接收到一个带有不匹配RCA的CMD7时,卡将取消选中。

在公

用CMD线时,选中一个卡时将自动不选中其他卡。

因此,在SD卡系统中,主

机具有如下功能:

初始化完成后,在公用CMD线时,不选中卡是自动完成的。

如果使用单独的CMD线,需要关注不选中卡的操作

在主机和选择的SD卡之间的所有数据通信是点对点的方式。

所有寻址命令

都需要响应。

不同数据传输模式的关系如图4-8所示,使用如下步骤:

所有读数据命令可以在任何时候通过停止命令(stopcommand,CMD12)

中止。

数据传输将中止,卡回到传输状态(TransferState)。

读命令有:

块读命令(CMD17),多块读命令(CMD18),发送读保护(CMD30),

发送scr(ACMD51),以及读模式的通用命令(CMD56)。

所有写数据命令可以在任何时候通过停止命令(stopcommand,CMD12)

在不选中卡命令CMD7前写命令必须停止。

写命令有:

块写命令

(CMD24andCMD25),写CID(CMD26),写CSD(CMD27),lock/unlock

命令(CMD42)以及写模式通用命令(CMD56)。

一旦数据传输完成,卡将退出数据写状态并进入ProgrammingState(传

输成功)或TransferState(传输失败)。

如果一个快写操作停止,而且最后一块块长度和CRC是有效的,那么

数据可以被操作(programmed)。

卡可能提供块写缓冲。

这意味着在前一块数据被操作时,下一块数据可

以传送给卡。

如果所有卡写缓冲已满,只要卡在ProgrammingState,

DAT0将保持低电平(BUSY)。

写CSD、CID、写保护和擦除时没有缓冲。

这表明在卡因这些命令而处

于忙时,不再接收其他数据传输命令。

在卡忙时DAT0保持低电平,并

处于ProgrammingState。

实际上如果CMD和DAT0线分离,而且主机

占有的忙DAT0线和其他DAT0线分开,那么在卡忙时,主机可以访问

其他卡。

在卡被编程(programming)时,禁止参数设置命令。

参数设置命令包

括:

设置块长度(CMD16),擦除块开始(CMD32)和擦除块结束(CMD33)。

卡在操作时不允许读命令。

使用CMD7指令把另一个卡从Stand-by状态转移到Transfer状态不会

中止擦除和编程(programming)操作。

卡将切换到Disconnect状态并

释放DAT线。

使用CMD7指令可以不选中处于Disconnect状态的卡。

卡将进入

Programming状态,重新激活忙指示。

使用CMD0或CMD15重置卡将中止所有挂起和活动的编程

(programming)操作。

这可能会破坏卡上的数据内容,需要主机保证

避免这样的操作。

4.1宽总线选择/不选择

宽总线(4位总线宽度)操作模式通过ACMD6选择和不选择。

在上电后或

GO_IDLE(CMD0)命令后默认的总线宽度是1位。

ACMD6命令只在“transtate”

有效,即只有在卡选中后(CMD7)总线宽度才能修改。

4.2读数据格式

DAT总线在没有数据传输时处于高电平。

一个传输数据块包含一个起始位

(LOW),接着连续的数据流。

数据流包含有效数据(如果使用了ECC了还包

括错误纠正位)。

数据流以一个结束位(HIGH)结束。

数据传输和时钟信号同

步。

以块传输的有效数据包含CRC校验和。

产生多项式是标准CCITT多项式。

采用了缩短的BCH码,d=4,有效数据长度最长为2048字节。

CRC校验和

对每个DAT线单独计算并附加在每个数据块后。

在宽总线模式操作

(DAT0-DAT3)中,16位的CRC校验对每个DAT分别计算。

数据块读

传输的基本单位是数据块,最大尺寸在CSD中定义(READ_BL_LEN)。

开始和结束地址完全包含在一个物理数据快(如READ_BL_LEN定义)中的较

小的块也可以传递。

CRC附加在每个数据块的尾部用来保证数据传输的完整性。

CMD17(READ_SINGLE_BLOCK)开始一个块读操作,然后传输完成后进入

Transfer状态。

CMD18(READ_MULTIPLE_BLOCK)开始连续的块传输,直到停

止命令。

停止命令有一个执行延迟。

在停止命令最后一位发送完以后数据传输停

止。

如果主机使用累计长度不是块对齐的部分块,在第一个不对齐块的开始,卡

会发现一个块未对齐错误,在状态寄存器中设置ADDRESS_ERR错误,中止传

输并等待(在Data状态)停止命令。

4.3数据写格式

数据写传输格式类似于读格式。

对于以块为单位的写数据传输,CRC检验

位附加到每个数据块。

卡的每根数据线在接收到数据并在写操作前,执行CRC

校验。

数据块写

数据块写(CMD24-27,42,56(W)),一个或多个数据块从主机发送给卡,主机

在每个数据块后附加CRC校验。

数据块长度WRITE_BL_L

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2