当前位置:文档之家› sd卡协议分析

sd卡协议分析

sdMmc目录第一章 SD卡系统概念 3§1.1 SD卡概述 3§1.2 SD卡的系统特征 3§1.3 SD卡的系统概念 4§1.4 SD卡的总线传输 6§1.5 SD卡的引脚 10§1.6 SD卡主要寄存器介绍 12§1.7 SD卡子系统结构 14第二章 SD卡初始化及状态转换 16§2.1SD卡状态及初始化过程 16§2.2SD卡数据传输过程 181.SD卡基础1.SD卡概述SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制,同时三个公司联合成立了SD协会,并制定SD卡相关的协议标准。

SD卡协议主要包括物理层协议、SD卡控制器设计手册、SDIO卡手册三部分。

其中SDIO指的是安全数字输入输出卡(Secure Digital Input and Output Card),是在SD标准上定义了一种外设接口,通过SD的I/O接脚来连接外围设备,并且通过SD上的 I/O数据接位与这些外围设备进行数据传输。

相关的一些设备为:GPS、相机、Wi-Fi、调频广播、条形码读卡器、蓝牙等。

SDIO本质上是一种接口,通过该接口可以连接一些其他功能的设备而非仅仅是存储设备。

1.2 SD卡的系统特征(SD物理层协议v2.0)∙针对移动和固定应用;∙存储容量:标准容量SD存储卡:最高2G高容量SD存储卡:2G以上(在该规范版本中,最高32G)∙电压范围:高电压SD存储卡—操作电压范围:2.7~3.6V双电压SD存储卡—操作电压范围:低电压范围(T.B.D)和2.7~3.6V∙分为只读卡和读/写卡;∙默认模式:时钟频率可在0~25MHz间变化,高达12.5MB/s 的接口速度(使用4条并行数据线) ;∙高速模式:时钟频率可在0~50MHz间变化,高达25MB/s 的接口速度(使用4条并行数据线) ;∙支持高速,电子商务和将来功能的转换功能命令;∙存储域错误纠正;∙读操作期间移去卡,内容不损坏;∙内容保护机制—符合SDMI标准的最高安全性;∙卡的密码保护(CMD42 - LOCK_UNLOCK);∙机械开关的写保护特性;∙内嵌的写保护特性(永久或暂时) ;∙卡检测(插入/移去) ;∙应用特定命令;∙舒适的擦除机制∙通信通道协议属性;∙SD存储卡外形尺寸:标准尺寸SD存储卡(32*24*2.1mm) 。

3.SD卡的系统概念读写属性:按照读写属性定义,有两种类型的SD存储卡:∙读/写(R/W)卡(Flash, OTP(一次可编程), MTP(多次可编程))。

这些卡通常买来时是空白的,用于大量数据的存储,以及记录用户的音频、视频和图像。

∙只读存储器(ROM)。

这些卡生产有固定的数据内容。

通常作为软件、音频、视频等的发行媒介。

操作电压范围:按照操作电压定义,有两种类型的SD存储卡:∙高电压SD存储卡:工作在2.7~3.6V的电压范围内∙双电压SD存储卡:能够工作在低电压范围(T.B.D)和2.7~3.6V的电压范围内卡容量:按照容量定义,有两种类型的SD存储卡:∙标准容量SD(SD)存储卡:支持容量高达2GB(231 B)。

所有物理层规范都定义了标准容量SD存储卡。

∙高容量SD(SDHC)存储卡:支持容量在2GB以上,该规范版本中将容量限制在32GB。

高容量SD存储卡是在V2.00中新定义的。

高容量SD存储卡有两种类型:∙Type A(单态卡)只有高容量存储区。

∙Type B(双态卡)有高容量存储区和标准容量存储区。

在Type B卡中,任何时候,只能有一种存储区能被使用。

有一机械开关选择想要的存储区。

Type B的细节将在以后的规范中定义。

主机可以不必区分高容量SD卡的类型。

只有符合SD存储卡物理层规范V2.00或更高并且符合SD文件系统规范V2.00的主机才能访问高容量SD存储卡。

对于SD控制器而言,做到了向低容量的兼容。

如图所示:控制器对SD卡支持情况示意图1.4 SD卡的总线传输:SD总线上的通信以一根CMD线和四根Data线为基础。

通信的内容包括:命令(主机->SD卡)、反馈(SD卡->主机)、Data。

SD总线通信示意图命令:命令式操作开始的标志,命令可以发送给总线上所有的SD 卡(广播模式)或者某个特定的SD卡(寻址模式)。

命令在CMD 线上传输。

反馈:反馈是SD卡在接收到主机命令后,做出的回应信息,也在CMD线传输。

数据:四根数据总线是双向总线。

数据传输数据线上进行,是以块为单位,一次可以传输单个或者多个数据块。

传输过程中实际使用的数据线是可配置的,默认只用DAT0。

无响应和无数据操作卡寻址是使用一个会话地址来实现的,这个地址是在初始化阶段分配给卡的。

命令、响应和数据块结构见SD存储卡功能描述。

SD总线上的基本操作是命令/响应操作(见上图)。

这种总线操作类型直接在命令或响应结构中发送它们的信息。

数据块读操作数据传输以块为单位,分为单块传输和多块传输。

数据块后跟着CRC校验位。

多块传输可以更好地实现更快的写操作。

当在命令线上发送停止传输命令时候一次多块传输结束。

数据传输可使用单数据线或多数据线,由SD主机控制器来进行配置。

数据块写操作数据块写操作使用一个简单的写操作忙信号。

在写操作期间,无论传输数据的数据线条数,该信号只持续在数据线DAT0上。

多数据块写操作可以更好地实现更快的写操作。

其中命令格式如下图所示:命令标记和格式命令响应的格式:命令响应的格式数据传输格式:SD卡有两种数据传输格式(1)常规数据(Usual data ,8位宽):常规数据先发送最低有效字节(LSB),最后发送最高有效字节(MSB)。

但是,在单个字节中,先发送最高有效位(msb),最后发送最低有效位(lsb)。

(2)宽位数据(Wide width data ,SD寄存器):宽幅数据从最高有效位开始移位。

常规数据格式宽位数据格式1.5 SD卡的引脚SD卡引脚以及引脚定义如下图所示。

SD卡结构及引脚SD卡引脚定义SD卡支持两种总线模式:SD总线、SPI总线,具体定义如图2所示,其中较为常用的嵌入式系统SD总线系统电路连接如图3所示.SD总线电路连接1.6 SD卡基本寄存器介绍SD卡接口定义了6个寄存器OCR,CID,CSD,RCA,DSR和SCR,可通过特定的命令来获得这些寄存器的信息。

OCR:定义了SD卡支持的工作电压范围。

Physical Layer Simplified Specification Version 2.0中规定SD卡支持的工作电压范围在2.7~3.6v之间。

该32位寄存器的最高位bit31是忙标志位。

如果卡暂未完成上电流程,该位为0。

CID:存储了一些制造商、产品名、生成日期等“身份”信息。

该寄存器宽度为128位。

CID寄存器定义CSD:该寄存器存储了一些对卡操作的命令集类型、读写时序、读写电流、块大小等信息。

规定了和SD卡进行信息互交所要遵循的一些规则,或者说是访问卡所需要的配置信息。

CSD寄存器定义RCA:该16位可写寄存器存储了经过卡识别过程后的卡地址信息,用于对总线是某个SD卡的寻址。

DSR:定义了了一些扩展操作,以提高总线性能,这里不做具体讨论,(具体参考Physical Layer Simplified Specification Version 2.00)。

SCR:另外一个SD卡的配置寄存器(另一个为CSD),配置SD卡上的一些特点信息数据。

1.7 SD卡子系统结构嵌入式系统包括若干模块,其中的SD卡子系统是其实现移动存储的重要模块,从系统硬件角度看SD卡子系统可分为SOC 端部分、SD卡端部分和两部分之间的接口部分。

如图所示。

SD卡子系统结构整个SD卡子系统可以看做:从硬件角度来看,SOC上的ARM、MIPS等IP核通过设置SD控制器的寄存器给控制器发送读写请求、中断、时钟设置等信息,SD控制器通过SD总线(或者SPI总线)和SD卡中的控制单元进行控制信息和数据信息的互交;SD卡中的控制单元根据读写请求从SD中的NAND存储模块读取(或者写入)数据,再通过总线接口发送给SOC段的控制器。

S3C2440(ARM920T)的控制器结构如图所示:S3C2440控制器结构SD卡初始化及状态转换2.1 SD卡状态及初始化过程SD卡工作的所有情况下有以下状态和所处的操作模式。

状态是站在SD卡方面而言的,而操作模式可以看作是SD卡控制器(host)所处的模式。

SDSD卡上电过程图中“Power up time”是的是电压从0v上升到最小的Vdd需要的时间;“Supply ramp up time”是达到总线操作需要的时间,一般从Power up time结束要经过74个clock,SD卡才开始识别host发来的命令。

上电后,host发送CMD0(作用是软件重启),所有的SD卡处于idle状态,主机和SD卡然后通过CMD41来协商工作电压。

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

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

当卡发送CID号后,进入识别状态(IdentificationState)。

此后,主机发送CMD3(SEND_RELATIVE_ADDR)要求卡发布一个新的相对卡地址RCA,地址比CID短,在以后的数据传输模式中用来寻址卡。

一旦获得RCA后,卡状态变成就绪状态(Stand-by state)。

此时,如果主机要求卡换成其他的RCA号,可以通过发送另一个SEND_RELATIVE_ADDR命令给卡,要求发布一个新的RCA,最后发布的RCA是实际使用的RCA。

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

SD卡识别模式流程图2.2 SD卡数据传输过程数据传输模式:主机首先发送CMD9获得寄存器的内容,如块大小、卡存储容量、最大时钟速率等。

SD卡数据传输模式流程图通过命令CMD7将某一地址的SD卡它置于传输状态(Transfer state)。

如果已有一个卡处于传输状态,它和主机的连接将释放,并返回到Stand-by状态。

当CMD7以保留相对地址“0x0000”发送时,所有卡将返回到Stand-by状态。

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

在这种状态下已有一个RCA地址的卡不响应识别命令(ACMD41,CMD2,CMD3)。

不同传输模式的关系如下:∙所有读数据命令可以在任何时候通过停止命令(stop command,CMD12)中止。

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

读命令有:块读命令(CMD17),多块读命令(CMD18),发送读保护(CMD30),发送scr(ACMD51),以及读模式的通用命令(CMD56)。

相关主题