SanDisk SD Card产品手册之四SD卡协议描述续二
(完整版)SD卡协议-中文

(完整版)SD卡协议-中文一概述1. SD总线模式下CLK:时钟信号CMD:双向命令和响应信号DAT0-3:双向数据信号VDD,VSS:电源和地信号SD模式下允许有一个主机, 多个从机(即多个卡), 主机可以给从机分别地址. 主机发命令有些命令是发送给指定的从机,有些命令可以以广播形式发送.SD模式下可以选择总线宽度, 即选用几根DAT信号线, 可以在主机初始化后设置.2. SD总线协议SD模式下的命令和数据流都有一个开始位和结束位.>命令: 是在CMD上传输的用于启动一个操作的比特流. 由主机发往从机, 可以是点对点也可以是广播的.>响应: 是在CMD上传输的用于之前命令回答的比特流. 由从机发往主机.>数据: 是在DAT上传输的比特流, 双向传输.无响应模式无数据模式多块读操作模式多块写操作模式命令格式响应格式数据格式SD卡上电后会自动初始化,通过给卡发送CMD0也可以复位卡.二.SD卡命令描述.1.广播命令:给所有卡都发送, 某些命令需要响应.2.点对点命令给指定地址的卡发送, 需要响应.SD卡系统有两种工作模式:1.卡识别模式.主机上电复位后即处于此模式,它会在总线上等待卡. 卡复位后也处于此模式, 直到SEND_RCA(CMD3)命令到来.2.数据传输模式.卡收到SEND_RCA(CMD3)命令后即进入此模式. 主机识别到卡后也进入此模式.卡状态和工作模式对照表1.卡识别模式.此模式下主机复位总线所有的卡, 验证工作电压, 询问卡的地址. 这个模式下所有数据的传输都是只通过CMD线来完成.1)卡的复位.当卡上电或收到GO_IDLE_STATE (CMD0)命令后, 卡即进入Idle State状态. 此时卡将其RCA设为0, 相关寄存器设为传输稳定的最优模式.2)工作电压验证每个卡的最高和最低工作电压存储在OCR. 只有当电压比配时, CID和CSD的数据才能正常传输给主机.SD_SEND_OP_COND (ACMD41)命令用来判断卡的工作电压是否符合, 如果不符合的话, 卡应该放弃总线操作, 进入Inactive State状态. 在发送SD_SEND_OP_COND (ACMD41)命令前记得要首先发送APP_CMD (CMD55).卡的状态变换图.ACMD41命令响应中的BUSY位也用于卡表示其还没准备好, 主机此时应重发ACMD41命令,直到卡准备好.主机在这个阶段的ACMD41中不允许改变工作电压, 如果确实想改变的话, 应该先发送CMD0, 然后再发送改变后的ACMD41.GO_INACTIVE_STATE (CMD15)命令用于使指定地址的卡进入Inactive State模式.3)卡识别过程.ALL_SEND_CID (CMD2)命令用于获取卡的CID信息, 如果卡处于Ready State, 它就会在CMD线上传送它的CID信息, 然后进入Identification State模式. 紧接着发送CMD3 (SEND_RELATIVE_ADDR)命令, 用于设置卡新的地址. 卡收到新的地址后进入Stand-by State 模式.2.数据传输模式.数据传输模式下卡的状态转变图进入数据传输模式后, 主机先不停的发送SEND_CSD (CMD9)命令获取卡的CSD信息. SET_DSR (CMD4)用于设置卡的DSR寄存器, 包括数据总线宽度, 总线上卡的数目, 总线频率, 当设置成功后, 卡的工作频率也随之改变. 此步操作是可选的.CMD7命令用于使指定地址的卡进入传输模式, 任何指定时刻只能有一个卡处于传输模式.传输模式下所有的数据传输都是点对点的, 并且所有有地址的命令都需要有响应..所有读命令都可以由CMD12命令停止,之后卡进入Transfer State. 读命令包括单块读(CMD17), 多块读(CMD18), 发送写保护(CMD30), 发送scr(ACMD51)和读模式一般命令(CMD56)..所有写命令都可以由CMD12命令停止. 写命令包括单块读(CMD24), 多块读(CMD25), 写CID(CMD26), 写CSD(CMD27),锁和解锁命令(CMD42)和写模式一般命令(CMD56)..当写命令传输完成后, 卡进入Programming State(传输成功)或Transfer State(传输失败).如果一个卡写操作被停止,但其前面数据的CRC和块长度正确, 数据还是会被写入..卡要提供写缓冲, 如果写缓冲已满并且卡处于Programming State, DAT0保持低BUSY. .写CID,CSD, 写保护, 擦除命令没有缓冲, 当这些命令没完时, 不应发送其他的数据传输命令..参数设置命令在卡被编程时是不允许发送的, 这些命令包括设置块长度(CMD16), 擦除块起始(CMD32)和擦除块结束(CMD33)..当卡正编程时读命令是禁止的..用CMD7使另一个卡进入Transfer State不会终止当前卡的编程和擦除, 当前卡会进入Disconnect State并且释放DAT线.. Disconnect State模式的卡可通过CMD7重新被选中,此时卡进入Programming State 并且使能busy信号.. CMD0或CMD15会终止卡的编程操作, 造成数据混乱, 此操作应禁止.1)总线宽度选择命令ACMD6命令用于选择总线宽度, 此命令只有在Transfer State有效. 应在CMD7命令后使用.2)块读命令块是数据传输的最小单位, 在CSD (READ_BL_LEN)中定义, SD卡为固定的512B.每个块传输的后面都跟着一个CRC校验. CMD17(READ_SINGLE_BLOCK)用于传输单个块,传输完之后,卡进入Transfer State. CMD18 (READ_MULTIPLE_BLOCK)用于多个块的传输,直到收到一个CMD12命令.3)块写命令与块读命令类似, 每个块传输的后面都跟着一个CRC校验.卡写数据时会进行CRC校验.多块写比重复的单块写更能提高效率.如果CSD中的WRITE_BLK_MISALIGN没设置, 并且发送的数据不是块对齐的, 卡会设置状态寄存器中的ADDRESS_ERROR位,并且进入Receive-data-State状态等待停止命令.此时写操作也会停止, 并且卡会设置其的WP_VIOLATION位.如果写缓冲满的话, 卡会停止接受WRITE_BLOCK命令. 此时主机应发送SEND_STATUS (CMD13)命令, 卡返回数据的READY_FOR_DATA位标志卡是否准备好接受新的数据.在多块写操作中通过事先发送ACMD23命令可提高写速度. ACMD23用于定义接下来要写数据的块的数目. 每次多块写操作后, 这个值又被设为默认的1.ACMD22会使卡返回写成功的块数目.4)擦除命令擦除命令的顺序是: ERASE_WR_BLK_START(CMD32),ERASE_WR_BLK_END(CMD33)an d ERASE (CMD38).如果(CMD38或(CMD32, 33)接收到出错信息, 卡会设置状态寄存器中的ERASE_SEQ_ERROR 位并且重新等待新的命令时序.如果接收到时序错误命令, 卡会设置其ERASE_RESET位并且重新等待新的命令时序.5)写保护管理三种机制:-.写保护物理开关-.卡内部写保护通过设置CSD中的WP_GRP_ENABLE位和WP_GRP_SIZE位, SET_WRITE_PROT和CLR_WRITE_PROT命令用来设置和清除保护机制.-. 密码保护.三. 时钟控制如果主机要发送1K的数据, 但是主机缓冲区只有512B, 那么主机可以在发送完前512B 后, 可以先停止时钟, 然后把后512B填充入缓冲区, 再启动时钟, 这样卡并不会检测要两次发送之间的间隔, 认为其是一次完整的数据发送过程.四 CRC校验1.CRC7CRC7用于所有的命令, 除R3以外的响应, 以及CID和CSD寄存器.2.CRC16CRC16用于数据块的校验五. 错误类型.1. CRC错误和命令非法错误命令的CRC校验出错, 卡设置其状态寄存器的COM_CRC_ERROR 位.非法命令错误, 卡设置其状态寄存器的ILLEGAL_COMMAND位.非法命令包括:不支持的命令,未定义的命令以及当前状态不支持的命令.2. 读,写和擦除超时.卡应该在指定的时间内完成一个命令或返回移动的错误信息. 如果在指定的超时时间内主机收不到响应, 应认为卡停止工作, 应重新复位卡.六命令1. 命令类型:- bc不需要响应的广播命令.- bcr需要响应的广播命令. 每个卡都会独立的接收命令和发送响应.- ac点对点命令, DAT线上没数据- adtc点对点命令, DAT线上有数据所有命令均遵守上图中的格式, 总共48位. 首先是1个起始位0,接着是1个方向位(主机发送位1), 6个命令位( 0-63 ), 32位参数(有些命令需要), CRC7位校验, 1个停止位.2.卡命令根据不同的类型分成了不同的Class, 见下表,其中Class0,2,4,5,8是每个卡都必须支持的命令, 不同的卡所支持的命令保存在CSD中.3.命令详细描述1)基本命令Class02)读命令Class23)写命令Class43)擦除命令Class54)应用特定命令Class8下表中的所有命令使用前都应先跟一个APP_CMD(CMD55)命令七. 卡状态转换表八. 应答.所有的应答都是通过CMD发送,不同的应答长度可能不同.总共有四种类型的应答.1. R1: 长度位48位.注意每个块传输完成后有一个BUSY位.2.R1b:与R1类似, 只是将BUSY位加入响应中.3.R2(CID CSD寄存器) : 长度为136位, CID为CMD2和CMD10的应答, CSD为CMD9的应答.4.R3(OCR寄存器):长度位48位. 作为ACMD41的应答.5.R6(RCA地址应答):长度为48位九. 卡的状态SD卡支持两种状态:-卡状态:与MMC卡兼容.-SD卡状态:扩充到了512位.1.卡状态:R1应答包含一个32位的卡状态.见下表.其中Type中的含义为:E:错误位. S:状态位. R:根据命令在响应中设置.X:根据在命令执行期间设置, 必须再次读此位才能获得命令执行后的情况.Clear Condition:A: 与卡的当前状态有关B: 总是与命令有关,无效的命令会清除此位.C: 通过读此位来清除下表指明了哪些命令可能使哪些位产生变化2.SD卡状态:这些位通过DAT线传输, 并伴有CRC16校验. 其是作为ACMD13的应答.十. 卡存储器形式.-块:块是基本读写命令的单位,它可以是固定的或可变的. 关于块的大小以及其是否可变性存储在CSD中.-扇区:扇区是擦除命令的单位, 它是固定的值,保存在CSD中.十一. 时序图时序图中字母含义:1.命令和应答1)卡识别和卡工作电压确认模式:CMD2,ACMD412)地址分配模式:CMD33)数据传输模式:4)命令结束->下一个命令:5)两个命令直接1)单块读:CMD172)多块读:读过程时序.停止命令时序3.数据写1)单块写:注意Busy信号.2)多块写:多块写命令时序停止命令时序卡主动停止时的时序。
sd卡总线协议

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载sd卡总线协议甲方:___________________乙方:___________________日期:___________________sd卡总线协议篇一:sd卡接口的完整规范sd卡接口规范的完整翻译特性:◎容虽:32mb/64mb/128mb/256mb/512mb/1gbyte ◎兼容规范版本1.01 ◎卡上错误校正◎支持cpRm◎两个可选的通信协议:sd模式和spi模式◎可变时钟频率0— 25mh应通信电压范围:2.0-3.6V 工作电压范围:2.0-3.6V◎低电压消耗:自动断电及自动睡醒,智能电源管理◎ 无需额外编程电压◎卡片带电插拔保护◎正向兼容mmc^◎高速串行接口带随即存取----- 支持双通道闪存交叉存取----- 快写技术:一个低成本的方案,能够超高速闪存访问和高可靠数据存储---- 最大读写速率:10mbyte/s◎最大10个堆叠的卡(20mhz,Vcc=2.7-3.6V) ◎数据寿命:10万次编程/擦除◎ ce和Fcc认证◎ pip封装技术◎尺寸:24mm® x 32mn#x 1.44mm厚说明:本sd卡高度集成闪存,具备串行和随机存取能力。
可以通过专用优化速度的串行接口访问,数据传输可靠。
接口允许几个卡垛叠,通过他们的外部连接。
接口完全符合最新的消费者标准,叫做sd卡系统标准,由sd卡系统规范定义。
sd卡系统是一个新的大容虽存储系统,基于半导体技术的变革。
它的出现,提供了一个便宜的、结实的卡片式的存储媒介,为了消费多媒体应用。
sd 卡可以设计出便宜的播放器和驱动器而没有可移动的部分。
一个低耗电和广供电电压的可以满足移动电话、电池应用比如音乐播放器、个人管理器、掌上电脑、电子书、电子白科全书、电子词典等等。
使用非常有效的数据压缩比如mpeg, sd卡可以提供足够的容虽来应付多媒体数据。
SD卡使用手册

SD卡使用手册第1章 SD软件包使用手册SD/MMC 卡是一种大容量(最大可达4GB)、性价比高、体积帏、访问接口简单的存储卡。
SD/MMC 卡大量应用于数码相机、MP3 机、手机、大容量存储设备,做为这些便携式设备的存储载体,它还具有低功耗、非易失性、保存数据无需消耗能量等特点。
SD 卡接口向下兼容MMC(MutliMediaCard 多媒体卡)卡,访问SD 卡的SPI 协议及部分命令也适用于MMC 卡。
1.1 SD/MMC卡的外部物理接口SD 和MMC 卡的外形和接口触点如图1 所示。
其中SD 卡的外形帺寸为:24mm x 32mm x 2.1mm (普通)或24mm x 32mm x 1.4mm (薄SD 存储卡),MMC 卡的外形帺寸为24mm x 32mm x 1.4mm 。
表1 为SD/MMC 卡各触点的名称及作用,其中MMC 卡只使用了1 ~ 7 触点。
表1 SD/MMC 卡的焊盘分配滨:1. S:电源;I:输入;O:推挽输出;PP:推挽I/O。
2. 扩幕的DAT 线(DAT1 ~ DAT3 )在上电后处于输入状态。
它们在执行SET_BUS_WIDTH 命令后作为DAT 线操作。
当不使用DAT1 ~ DAT3 线时,主机应使自己的DAT1~DAT3 线处于输入模式。
这样定义是为了与MMC 卡保持兼容。
3. 上电后,这条线为带50KΩ上拉电阻的输入线(可以用于检测卡是否存在或选择SPI 模式)。
用户可以在正常的数据传输中用SET_CLR_CARD_DETECT(ACMD42 )命令断开上拉电阻的连接。
MMC 卡的该引脚在SD 模式下为保留引脚,在SD 模式下无任何作用。
4. MMC 卡在SD 模式下为:I/O/PP/OD。
5. MMC 卡在SPI 模式下为:I/PP。
由表1 可见,SD 卡和MMC 卡在不同的通信模式下,各引脚的功能也不相同。
这里的通信模式是指微控制器(主机)访问卡时使用的通信协议,分为两种:SD 模式及SPI 模式。
SanDisk手机闪存卡简介

3
MiniSD
Nokia---6270/N73/N71 MOTO----E60i/E60g /E2 多普达---565/566/575/585/58 6 飞利浦---768/960/680 夏新----M639/ E600 联想---I750/I921/I902/V920 /I950 LG----G262 明基----E61 /Qube 波导----D610 康佳-----D161/ S901/D261/D162 金立----K8/N6
2m2大小只有msproduo13产品介绍手机存储卡手机适配表microsdtransflashminisdmmcmobilemsproduonokia3250613155006125motoa1200a780l7v3ie398v360a732samsungd608x808x708x818i308d518d828e778e908i858联想v707v517lgg912g832多普达710夏新a668a665a865a868e850tclm360d866d868d308v9d668d628d638e787766782c338c328c318d368v5明基cl71s88波导d650d700康佳s905d163m960金立v8s30v99nokia6270n73n71motoe60ie60ge2多普达565566575585586飞利浦768960680sd多普达818828830飞利浦968tcle777nokian70n723230qd93007610668166706230isamsungd728msproduo索爱k750cw800cw700cmsmicrom2索爱z530ck790cw300cw710cz710cz550cm608c3夏新m639e600联想i750i921i902v920i950lgg262明基e61qube波导d610康佳d161s901d261d162金立k8n6明基p50
SD2.0协议标准完整版[1-6章中文翻译]
![SD2.0协议标准完整版[1-6章中文翻译]](https://img.taocdn.com/s3/m/6963f0cabb4cf7ec4afed05a.png)
3.5.1 SD 总线
图 3-2 SD 卡总线拓扑 SD 总线包含下面的信号: CLK: 时钟信号 CMD: 双向命令/响应信号 DAT0-DAT3: 双向数据信号 Vdd,Vss1,Vss2: 电源和地信号 SD 卡总线有一个主(应用),多个从(卡),同步的星型拓扑结构(图 3-2)。时钟,电源和 地信号是所有卡都有的。命令(CMD)和数据(DAT0-3)信号是根据每张卡的,提供连续地点对 点连接到所有卡。 在初始化时, 处理命令会单独发送到每个卡, 允许应用程序检测卡以及分配逻辑地址给 物理卡槽。数据总是单独发送(接收)到(从)每张卡。但是,为了简化卡的堆栈操作,在初始 化过程结束后,所有的命令都是同时发送到所有卡。地址信息包含在命令包中。 SD 总线允许数据线的动态配置。上电后,SD 卡默认只使用 DAT0 来传输数据。初始化之 后, 主机可以改变总线宽度(使用的数据线数目)。 这个功能允许硬件成本和系统性能之间的 简单交换。
注意:当 DAT1-DAT3 没有使用的时候,相关的主机 DAT 先应该被设置为输入模式。SDIO 卡 DAT1 和 DAT2 用于信令。
3.5.2 SPI 总线
SD 卡的 SPI 兼容通信模式是用来同 SPI 信道通信,主要是用在市场是哪个的各种微处 理器。模式选择是在上电后的第一次 reset 命令期间,并且只要不断电就不能改变。SPI 标 准只是定义了物理连接,没有完成数据传输协议。SD 卡的 SPI 实现使用了 SD 模式相同的命 令。从应用的角度来说,SPI 模式的优点是使用现成主机的能力,从而减小设计压力。相对 于使能宽总线选项的 SD 卡来说,缺点是性能的损失。SD 卡 SPI 接口同市场上现有的 SPI 主 机兼容。同其他 SPI 设备一样,SD 卡的 SPI 信道有以下 4 个信号: CS: 主机到卡的片选(chip select)信号 CLK: 主机到卡的时钟信号 DataIn: 主机到卡的数据信号 DataOut: 卡到主机的数据信号 另一个 SPI 的通用特点是字节传输,这也是卡的实现。所有的数据都是字节(8 bit)的 整数倍,并且直接总是对齐 CS 信号。
sd卡协议(中文)

数据包的封装与命令协议相关1 sd 卡指令数据包sd 卡的指令被封装成48位的数据包,每次传送这48位的数据包。
数据包的内容包括起始位、结束位、传输位、命令索引、传输参数和7位CRC 校验码。
其具体格式分布如下图 Bit 位置 47 46 [45:40] [39:08] [07:01] 00 Bit 宽度 1 1 6 32 7 1 值 “0” “1” x x x “1”说明Start bit Transmission bit CommandindexArgument CRC7 End bit其中的命令索引位是[45:40],里面可以封装各种命令,具体的命令表将在下面给出。
不同的命令会对应不同的回应(respond),回应有三种(R1,R2,R3)格式,在命令表中的选项会给出。
2 sd 卡命令索引表 CMD 简略语 指令说明 SPI 模式自变量 回应0 GO_IDLE_STATE 这是使card 初始化到Idle 状态的指令.CS 信号设在Low 的状态时,接到本指令后,card 将转换到SPI 模式.None R11 SEND_OP_COND 接到本指令后,card 将做R3回应(含有OCR 数据).根据OCR 值,可以得知card 能工作电压范围.OCR 数据最高值位的1bit 是用来确认card 内部处理是否结束(Ready/Busy 轮询).None R12 ALL_SEND_CID 接到本指令后, 处于Ready 状态的card 将传送CID 数据.在MMC 模式下,数据被送到CMD 信号,在CID数据的每1bit传送后,CMD信号状态将与该card内部状态相比较,如果不一致,將中止数据传送,card返回到Ready状态.如果相一致,该card 将认为已被选中,然后转换到Identification 状态.3 SET_RELATIVE_ADDR 本指令会为已转换到Identification状态的card分配一个相对card地址(RCA).当RCA分配后,card将转换到Stand-by 状态,对以后的CMD2和CMD3不回应.4 NOP 这是用来设定DSR(DriveState寄存器)的指令,但是本car不支持DSR.7 SELECT/DESELECT_CARD本指令是用来选择一张card,让它在Stand-by状态和Transfer状态之间转换的指令.如果给card设定已分配到的RCA地址,card将从Stand-by状态转换到Transfer状态,并将回应以后的读取指令及其他指令.如果给card设定RCA以外的地址,card将转换到Stand-by状态。
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) 。
tf卡通信协议

竭诚为您提供优质文档/双击可除tf卡通信协议篇一:sd卡和tF卡简介sd卡和tF卡简介tF卡全名:transFlash,原名microsdcard。
由摩托罗拉与sandisk共同研发,在20xx年推出。
是一种超小型卡(11*15*1mm),约为sd卡的1/4,可以算目前最小的储存卡了。
tF卡可经sd卡转换器后,当sd卡使用。
利用适配器可以在使用sd作为存储介质的设备上使用。
transFlash主要是为照相手机拍摄大幅图像以及能够下载较大的视频片段而开发研制的。
transFlash卡可以用来储存个人数据,例如数字照片、mp3、游戏及用于手机的应用和个人数据等,还内设置版权保护管理系统,让下载的音乐、影像及游戏受保护;未来推出的新型transFlash还备有加密功能,保护个人数据、财政纪录及健康医疗文件。
体积小巧的transFlash让制造商无须顾虑电话体积即可采用此设计,而另一项弹性运用是可以让供货商在交货前随时按客户不同需求做替换,这个优点是嵌入式闪存所没有的。
tF卡引脚定义:tF卡(sd模式):1-data2,2-data3,3-cmd,4-vdd,5-clk,6-vss,7-data0,8-d ata1tF卡(spi模式):1-rsv,2-cs,3-di,4-vdd,5-sclk,6-vss,7-do,8-rsv sd卡(securedigitalmemorycard)安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(外语缩写pda)和多媒体播放器等。
sd卡是一种基于半导体闪存工艺的存储卡,1999年由日本松下主导概念,参与者东芝和美国sandisk公司进行实质研发而完成。
2000年这几家公司发起成立了sd协会(securedigitalassociation简称sda),阵容强大,吸引了大量厂商参加。
其中包括ibm,microsoft,motorola,nec、samsung等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上周看了卡的识别模式后,现在看看卡的数据传输模式,这是最重要的模式,勿庸置疑。
因为一些卡可能有时钟限制,fpp必须保持在fod,直到CSD寄存器被host读取。
host发出SEND_CSD(CMD9)来得到一些卡的专用数据,比如block length等等。
CMD7可以将卡置在传输模式。
只有一个卡可以在一个时间内在这个状态。
如果一个之前的卡在这个状态,那么与host的连接将会释放,并且回到stand-by 模式,当CMD7被发出保留相关卡地址0x0000,所有的卡传输都回到stand-by 状态。
这个可以用来识别新插入卡,并且不会重置以及注册的卡。
以及有RCA
的卡,不需要对识别命令相应。
*取消选择发生在一个特定的卡在重试CMD7的时候,发现RCA不匹配。
在另外一个卡和CMD线通用的时候,会自动发生。
因此,在SD卡系统中,系统需要负责做二选其一的事情。
-初始化后,通过公用CMD线工作,在这个情况下,取消选择会自动发生
-有意识去取消选择,如果CMD线是分开的
所有的数据通信在数据传输模式都是点对点的。
所有的命令都会有个在CMD线上的相应。
下面我们看下卡里的命令。
1 停止命令CMD12,能够忽略所有的读命令在任何时候,数据传输会中止,并且卡会返回到传输状态,读命令能够阻止块读CMD17,多块读CMD18,发送写保护CMD30,发送SCR ACMD51,和general命令在读模式中CMD56。
2 停止命令CMD12,能够中止所有的数据写命令在任何时候。
写命令必须在取消选择CMD7之前停止。
写命令被块写CMD24、CMD25,写CSD(CMD27),锁和解锁(CMD42),和在写模式的通用命令(CMD56)阻止。
3 当数据传输完成的时候,sd卡会在数据写状态。
之后如果写成功了,那么就去编程状态,如果失败了,就去传输状态。
4 如果block写操作被停止,并且block长度的crc是有效的,数据会被写入。
5 卡可以提供块写入的缓冲,下一个块可以在之前的块被写入的时候往卡里发送,如果所有的卡buffer都满了的话,sd卡就会在编程状态,DAT0线会被拉低
6 没有buffer提供给写CSD,写保护,和擦除。
当卡在忙于一个命令或前面的命令的时候,DAT0会被保持为低并且在编程状态。
实际上,如果CMD和DAT0被分开,并且host保持DAT0为忙,并且和其他卡的DAT0是分开的时候,host可能会读写其他卡如果这个卡是忙的时候。
7 参数设置命令是不被允许的,如果卡在编程中。
参数设置涉及块长度CMD16,擦除块开始CMD32,和擦除块结束CMD33。
8 卡被编程的时候,读命令是被不会允许的
9 把另外一张卡从stand-by转到传输状态的时候(CMD7),不会中止编程操作。
卡会切换到非连接状态,并且释放DAT线。
10 通过CMD7,一个卡可以在非连接状态被重新选择。
在这个情景下,卡会去编程状态,并且激活busy的鉴别状态。
11 重置卡通过CMD0,CMD15,会中止如何挂起或有效的操作,这个有可能破坏卡上的数据。
host有责任去阻止对数据的潜在伤害。
宽总线的选择和取消选择
4bits当然就是宽的了,是通过ACMD6来选择的。
在上电或者GO_IDLE后的默认的宽度是1bit。
ACMD6只在传输状态有效。
也就是说只有在CMD7,一个卡被选择了后,总线宽度才能改变。
下面看看读数据的格式
当数据没有被发送的时候,数据线是高的。
一个传输的数据块包括一个低的开始位,之后是连续的数据流。
这个数据流包含了负载的数据,错误校验位如果卡外面的ECC被使用。
数据流会以一个结束位结束。
数据传输是同步的操作于时钟的。
基于块的数据传输是通过CRC算法。
多项式产生是通过标准的CCITT格式:x16+x12+x5+1
对于块读操作,我们单独来说说
块传输的最大长度是通过READ_BL_LEN在CSD寄存器中定义的。
一些起始地址在一个物理块之内的长度,被READ_BL_LEN来定义的,可能会被传输,只是可能。
附着在每个块后面的CRC能够保证数据的完整性。
CMD17或者READ_SINGLE_BLOCK 开始一个块读,完成后返回到传输状态。
CMD18或者READ_MULTIPLE_BLOCK启动一个连续的多块操作。
块会被连续的传输,直到一个stop命令。
stop命令那,由于一系列的命令,有一个延迟,数据传输会在收到结束命令后结束。
如果主机用了多个块以及块的部分作为一个累加传输长度,而这个长度不是块对齐的。
卡会在第一个没有对齐没有对齐的块上,检测到块非对齐错误,在状态寄存器中设置ADDRESS_ERROR位,中断传输,并且在数据状态等待停止命令。
下面看下写数据的格式
其实那,这个数据传送格式,跟读的类似。
对于基于块的写数据传输,CRC被插入在每个数据块。
在这个操作之前那,卡会对接受到的数据块执行一个CRC检查,算法跟读的一样。
这个操作就阻止了写入数据的错误。
对于块写操作,我们单独来说说
块写入(CMD24-27,42,56),的意思是一个或多个块的数据从主机发送到卡,同时主机在每个块后面会挂1bit或4bits的CRC。
老san的卡那支持的块写入被块长度规定了,这个长度被CMD16设置,不管WRITE_BL_LEN设置为1k还是
2k bytes,都是512bytes。
下面有个表来说明这个事情
CSD值 | 当前块长度 | 写命令的开始地址
--------------------------------
最大块长度 | 不对齐 | 部分的 |
WRITE_BL_LEN | | |
----------------------------------------------------------------
512bytes dis dis 512bytes n*512bytes
1-kbytes dis dis 512bytes n*512bytes
2-kbytes dis dis 512bytes n*512bytes
当前块长度是被CMD16来设置的,小于512是允许的。
如果WRITE_BL_PARTIAL是被允许的,那么小的块,即使是1byte也是被允许的。
如果CRC失败了,那么卡会丢弃数据,不写入,并将要传输的多个块也会被忽略,并且在DAT线上显示错误。
多块写入命令会被经常用到,因为速度比单块操作快得多。
如果host用了一个或几个块的部分,并且长度不是块对齐,而且块不对齐是不被允许的,那么卡会检查到块不对齐的错误,并且中止操作在不对齐的块操作之前。
卡会设置ADRRESS_ERROR错误在状态寄存器中,并且忽略进一步的和数据传输,在接受数据状态等待中止命令。
在写保护的区域写入数据会被中止。
在这个情况下,卡会设置WP_VIOLATION位。
对CSD寄存器编程不需要知道之前的块长度的设置,传输的数据还是有crc保护的。
如果CSD寄存器的一部分被存储在ROM中,那么这个不被改变的部分必须和收buffer中的对应。
如果不配对,那么卡会报错,并且不改变任何reg的值。
一些卡可能需要一个非常长的,不能预测的时间来完成一个块的数据写入。
当收完一个块的数据,并且crc检查ok,卡会把DAT0拉低,如果写buffer满了或者不能接受WRITE_BLOCK命令发送的新的数据。
这个时候host需要通过CMD13来查询卡的状态。
状态位READY_FOR_DATA表示了是否卡能接受新的数据。
如果卡不能接受数据,那么主机可能通过CMD7释放此卡,这样卡就会进入非连接状态,并且在无需中断写操作的情况下释放DAT线(这样卡就可以自己偷偷的写了,而主机也去干别的事情了)。
当主机重新选择这个卡的时候,需要通过拉低DAT 来看是不是写入还在进行来检查busy。
实际上啊,主机可能执行同时的写入给几个卡,通过inter-leaving的技术来完成(其实这就是SSD的雏形了),interleaving可以通过别的卡忙的时候来分别操作每个卡。
这个操作是通过CMD 和DAT0-3来完成的。
(再多说一句,对于SSD,flash完全在忙,host可以在sdram开始往nandflash写数据的时候闪人,去干别的事情,而flash的dma或者master来完成写入的事情。
host就可以去命令其他的空闲flash来写入)。
发送写模块的数目?号码!
由于系统采用流水线的机制来控制数据管理,在一些情况,如果一个多块写操作中间发生了错误,系统不知道最后那个写好的块是哪个。
而卡会相应ACMD22一个带有写好的块的号码(这个号码应该是卡的编号)。