2023年SD卡详解.pdf

上传人:C****o 文档编号:91137649 上传时间:2023-05-22 格式:PDF 页数:42 大小:1.58MB
返回 下载 相关 举报
2023年SD卡详解.pdf_第1页
第1页 / 共42页
2023年SD卡详解.pdf_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《2023年SD卡详解.pdf》由会员分享,可在线阅读,更多相关《2023年SD卡详解.pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、SD 卡操作 一、概述 1、简介 SD 卡是基于 flash 的存储卡。SD 卡和 MMC 卡的区别在于初始化过程不同。SD 卡的通信协议包括 SD 和 SPI 两类。SD 卡使用卡内智能控制模块进行 FLASH 操作控制,包括协议、安全算法、数据存取、ECC 算法、缺陷处理和分析、电源管理、时钟管理。2、功能介绍 2.1特点 1)主机无关的 FLASH 内存擦除和编程 读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机无需关心具体操作的完成。当采用新型的 FLASH 时,主机代码无需更新。2)缺陷管理 3)错误恢复 4)电源管理 Flash 每个扇区有大约10万次的写寿命,读没

2、有限制。擦除操作可以加速写操作,因为在写之前会进行擦除。3 SD 总线模式 3.1 Negotiating Operation Conditions 当主机定义了 SD 卡不支持的电压范围时,SD 卡将处于非活动状态,将忽略所有的总线传输。要退出非活动状态唯一的方法就是重新上电。3.2 SD 卡获取和识别 SD 卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。主机依次分别访问每个卡,每个卡的 CID 寄存器中已预编程了一个唯一的卡标识号,用来区分不同的卡。主机通过 READ_CID 命令读取 CID 寄存器。CID 寄存器在 SD 卡生产过程中的测试和格式化时被编程,主机只能读取该号

3、。DAT3 线上内置的上拉电阻用来侦测卡。在数据传输时电阻断开(使用ACMD42)。3.3卡状态 卡状态分别存放在下面两个区域:卡状态(Card Status),存放在一个32位状态寄存器,在卡响应主机命令时作为数据传送给主机。SD 状态(SD_Status),当主机使用 SD_STATUS(ACMD13)命令时,512位以一个数据块的方式发送给主机。SD_STATUS 还包括了和 BUS_WIDTH、安全相关位和扩展位等的扩展状态位。3.4内存组织 数据读写的基本单元是一个字节,可以按要求组织成不同的块。Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储在 CSD 寄存

4、器。Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的,大小信息存储在 CSD 寄存器。WP Group:写保护单位。大小包括几个 group,写保护由一位决定,对每个设备大小是固定的,存储在 CSD 寄存器。3.5读写操作 Single Block Mode:主机根据事先定义的长度读写一个数据块。由发送模块产生一个16位的 CRC 校验码,接受端根据校验码进行检验。读操作的块长度受设备 sector 大小(512 bytes)的限制,但是可以最小为一个字节。不对齐的访问是不允许的,每个数据块必须位于单个物理 sector 内。写操作的大小必须为 sector

5、大小,起始地址必须与 sector 边界对齐。Multiple Block Mode:主机可以读写多个数据块(相同长度),根据命令中的地址读取或写入连续的内存地址。操作通过一个停止传输命令结束。写操作必须地址对齐。3.6数据传输速率 SD 卡可以通过单数据线(DAT0)或四根数据线(DAT0-DAT3)进行数据传输。单根数据线传输最大传输速率为25 Mbit/s,四根数据线最大传输速率为100 Mbit/s。3.7数据保护 每个 sector 的数据通过 Error Correction Code(ECC)进行保护。在写 sector 时生成 ECC,在读 sector 时检验 ECC。如果发

6、现错误,在传输前进行纠正。3.8数据擦除 SD 卡数据擦除的最小单位是 sector。为了加速擦除操作,多个 sector 可以同时擦除。为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址,在地址范围内的所有 sector 将被擦除。3.9写保护 两种写保护方式可供选择,永久保护和临时保护,两种方式都可以通过PROGRAM_CSD 指令进行设置。永久保护位一旦设置将无法清除。3.10 拷贝位 通过 CSD 寄存器中的拷贝位(copy bit)设置 SD 卡中的数据是原始数据还是拷贝数据。拷贝位一旦设置,将无法清除,在测试和格式化时使用。3.11 CSD寄存器 所有 SD 卡的配置信息

7、存储在 CSD 寄存器。通过SEND_CSD 读取,PROGRAM_CSD 修改。4 SPI 模式 二、SD 卡接口描述 1引脚和寄存器 主机通过9个引脚和 SD 卡相连 1.1 SD 模式引脚 扩展数据线(DAT1-DAT3)上电后为输入,SET_BUS_WIDTH 命令执行后作为数据线。即使只有 DAT0使用,所有数据线都和外部上拉电阻连接,否则 DAT1&DAT2(如果未被使用)的振荡输入将引起非期望的高电流损耗。上电后,数据线输入50K(+/-20K)欧姆的上拉(用来进行卡侦测和 SPI 模式选择)。用户可以在常规数据传输时,通过 SET_CLR_CARD_DETECT(ACMD42)

8、命令分离上拉。1.2 SPI 模式引脚 1.3寄存器 名称 宽度 描述 CID 128 卡标识号 RCA 16 相对卡地址(Relative card address):本地系统中卡的地址,动态变化,在主机初始化的时候确定*SPI 模式中没有 CSD 128 卡描述数据:卡操作条件相关的信息数据 SCR 64 SD 配置寄存器:SD 卡特定信息数据 OCR 32 操作条件寄存器 主机通过重新上电来重置(reset)卡。卡有它自身检测上电的电路,当上电后卡状态切换到idle 状态。也可以通过GO_IDLE(CMD0)指令来重置。2 SD 卡总线拓扑 SD 总线有6根通信线和三根电源供应线:CMD

9、 命令线是双向信号线。主机和卡通过 push pull 模式工作。DAT0-3数据线是双向信号线。主机和卡通过 push pull 模式工作。CLK 时钟是从主机到卡的信号。CLK 通过 push pull模式操作。VDDVDD是所有卡的电源供应线。VSS1:2VSS 是2根地线。在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽(physical slot)分配逻辑地址。数据通常分别传输给每个卡。然后,为了方便处理卡堆栈,初始化后所有命令同时发送给所有卡,在命令数据包中包含了操作地址。SD 总线允许动态配置数据线数目。上电后默认SD 卡只用 DAT0作为数据传输线。初始化后,主机

10、可以改变总线宽度。这个特性使得在硬件开销和系统性能间取得平衡。3 SPI 总线拓扑 4 电气接口 4.1上电 上电后,包括热插入,卡进入 idle 状态。在该状态 SD 卡忽略所有总线操作直到接收到 ACMD41 命令。ACMD41 命令是一个特殊的同步命令,用来协商操作电压范围,并轮询所有的卡。除了操作电压信息,ACMD41 的响应还包括一个忙标志,表明卡还在 power-up 过程工作,还没有准备好识别操作,即告诉主机卡还没有就绪。主机等待(继续轮询)直到忙标志清除。单个卡的最大上电时间不能操作1秒。上电后,主机开始时钟并在 CMD 线上发送初始化序列,初始化序列由连续的逻辑“1”组成。序

11、列长度为最大1毫秒,74个时钟或 supply-ramp-up时间。额外的10个时钟(64个时钟后卡已准备就绪)用来实现同步。每个总线控制器必须能执行 ACMD41 和 CMD1。CMD1 要求 MMC 卡发送操作条件。在任何情况下,ACMD41 或 CMD1 必须通过各自的 CMD 线分别发送给每个卡。5 寄存器 5.1 OCR(Operating Conditions Register)32位的操作条件寄存器存储了 VDD 电压范围。SD 卡操作电压范围为23.6V。然而从内存中访问数据的电压是2.73.6V。OCR 显示了卡数据访问电压范围,结构如下表所示。表3-8 OCR 寄存器定义

12、OCR 位 VDD 电压范围 0-3 保留 4 1.61.7 5 1.71.8 6 1.81.9 7 1.92.0 8 2.02.1 9 2.12.2 10 2.22.3 11 2.32.4 12 2.42.5 13 2.52.6 14 2.62.7 15 2.71.8 16 2.82.9 17 2.93.0 18 3.03.1 19 3.13.2 20 3.23.3 21 3.33.4 22 3.43.5 23 3.53.6 24-30 保留 31 卡上电状态位(忙)OCR 结构如下图所示。如果第32位(busy bit)置位,表明卡上电过程已结束。5.2 CID(Card Identifi

13、cation)CID 寄存器长度为16个字节的卡唯一标识号,该号在卡生产厂家编程后无法修改。SD 和 MMC 卡的 CID 寄存器结构不一样。名称 类型 宽度 CID 位 内容 CID 值 厂商 ID Binary 8 127:120 SD 卡协会管理和分配 0 x03 OEM/Application ID(OID)ASCII 16 119:104 识 别 卡 的OEM或卡内容,由制造商分配 0 x53,0 x44 产品名(PNM)ASCII 40 103:64 5 个 ASCII字符 SD128 产 品 版 本(PRV)BCD 8 65:56 2个二进制编码的十进制数 产 品 版 本(30)

14、1 序列号(PSN)Binary 32 55:24 32位无符号整数 产品序列号 保留 4 23:20 生 成 日 期(MDT)BCD 12 19:8 yym(从2000年的偏移量)如:Apr 2001=0 x014 CRC7 校 验和(CRC)Binary 7 7:1 CRC CRC7 Calculation:G(x)=x7+3+1 M(x)=(MID-MSB)*x119+.+(CIN-LSB)*x0 CRC6.0=Remainder(M(x)*x7)/G(x)未用 1 0:0 1、格式为“n.m”,如“6.2”表示为0110 0010 5.3 CSD(Card Specific Data)

15、CSD 寄存器包含访问卡数据所需的配置信息。SD 卡和 MMC 卡的 CSD 不同。6 数据交互格式和卡容量 通常,SD 卡分为2个区:用户区用户通过读写命令存储安全和非安全数据。安全保护区(Security Protected Area)版权保护应用程序用来保存安全相关数据,通过 SD 安全规范中定义的条件验证后,由主机使用安全的读写指令完成操作。安全保护区的大小大概是总大小的1%。三、SD 卡协议 1 SD 总线协议 SD 总线通信是基于命令和数据位流方式的,由一个起始位开始,以一个停止位结束:命令命令是开始开始操作的标记。命令从主机发送一个卡(寻址命令)或所有连接的卡(广播命令)。命令在

16、 CMD 线上串行传送。响应响应是从寻址卡或所有连接的卡(同步)发送给主机用来响应接受到的命令的标记。命令在 CMD 线上串行传送。数据数据可以通过数据线在卡和主机间双向传送。卡寻址通过会话地址方式实现,地址在初始化的时候分配给卡。SD 总线上的基本操作是 command/response。数据传送采用块方式,数据块后接 CRC校验位,操作包括单数据块和多数据块。多数据块更适合快速写操作,多数据块传输当在 CMD 线出现停止命令时结束。数据传输可以在主机端设置采用单数据线或多数据线方式。块写操作在 DAT0 数据线写操作期间使用忙信号,无论用来传输的信号线数目是多少。命令格式如下所示:响应标记

17、(token)根据内容不同具有四种格式,标记长度。长度为48位或136位。数据块的 CRC算法采用16位的 CCITT多项式。在命令行中,MSB位首先传送,LSB位最后传送。当使用宽总线模式时,数据同时在4根数据线上传输。开始位、结束位和 CRC在每根数据线上传送。CRC对每根数据线单独计算。CRC状态响应和 Busy 信号只通过 DAT0 由卡发送给主机。2协议功能描述 所有主机和 SD 卡间的通信由主机控制。主机发送下述两类命令:广播命令广播命令发送给所有 SD 卡,有些命令需要响应。寻址(点对点)命令寻址命令只发送给具有相应地址的卡,并需要从卡返回一个响应。对卡而言也有两类操作:卡识别模

18、式在重置(reset)后当主机查找总线上的新卡时,处于卡识别模式。重置后 SD 卡将始终处于该模式,直到收到 SEND_RCA 命令(CMD3)。数据传输模式一旦卡的 REC 发布后,将进入数据传输模式。主机一旦识别了所有总线上的卡后,将进入数据传输模式。操作模式与卡状态关系:3卡识别模式 在卡识别模式,主机重置所有处于卡识别模式的 SD 卡,检验操作电压范围,识别卡并请求卡发送相对卡地址 RCA。操作对每个卡在各自的 CMD 线上单独进行,所有的数据传送只使用 CMD 线。3.1重置 GO_IDLE_STATE(CMD0)是软件重置命令,设置每个 SD 卡进入 Idle 状态。处于 Inac

19、tive 状态的卡不受此命令影响。主机上电后,所有 SD 卡进入 Idle 状态,包括处于 Inactive 状态的卡。至少74个时钟周期后才能开始总线传输。上电或 CMD0(重置)后,所有 SD 卡的命令线处于输入模式,等待下一个命令的起始位。卡通过一个默认的相对卡地址 RCA(RCA=0 x0000)和默认驱动寄存器设置(最低速,最高驱动电流)初始化。3.2操作电压范围验证 SD 的物理规范标准要求所有 SD 卡能通过最小和最大供电电压间的任何电压和主机建立通信。然而,数据传输时的最小和最大电压值在操作条件寄存器OCR 中定义,可能并不能覆盖所有的电压范围。SD 卡主机希望通过读取卡的OC

20、R 寄存器获取合适的电压值或弹出卡。SD 卡 3.3卡识别过程 在识别时钟速率 fOD 下主机开始卡识别过程。SD 卡的 CMD 线输出驱动是push-pull驱动。总线激活后,主机要求卡发送它们的有效操作条件(ACMD41 preceding with APP_CMD CMD55 with RCA=0 x0000)。ACMD41 命令的响应是卡的操作条件寄存器。相同的命令将发送给系统中所有的卡。不兼容的卡将进入 Inactive 状态。主机然后发送命令 ALL_SEND_CID(CMD2)到每个卡以获取每个卡的唯一标识 CID 号。未识别的卡通过 CMD 线发送 CID 号作为响应。当卡发送

21、 CID 号后,进 入 识 别 状 态(Identification State)。此 后,主 机 发 送CMD3(SEND_RELATIVE_ADDR)要求卡发布一个新的相对卡地址 RCA,地址比 CID短,在以后的数据传输模式中用来寻址卡。一旦获得 RCA 后,卡状态变成就绪状态(Stand-by state)。此时,如果主机要求卡换成其他的 RCA 号,可以通过发送另一个 SEND_RELATIVE_ADDR命令给卡,要求发布一个新的 RCA,最后发布的 RCA 是实际使用的 RCA。主机对系统中的每个卡重复识别过程。所有的 SD 卡初始化完以后,系统将开始初始化 MMC 卡(如果有的话

22、),使用 MMC 卡的 CMD2 和 CMD3。4数据传输模式 直到主机知道所有 CSD 寄存器的内容,fpp 时钟速率必须保持在 fOD,因为一些卡有操作频率限制。主机发送 SEND_CSD(CMD9)获取卡定义数据(Card Specific Data,CSD 寄存器),如块大小、卡存储容量、最大时钟速率等。CMD7 用来选择一个卡并将它置于传输状态(Transfer state),在任何时间只能有一个卡处于传输状态。如果已有一个卡处于传输状态,它和主机的连接将释放,并返回到 Stand-by 状态。当 CMD7 以保留相对地址“0 x0000”发送时,所有卡将返回到 Stand-by状态

23、。这可以用来识别新的卡而不重置其他已注册的卡。在 这 种 状 态 下 已 有 一 个RCA地 址 的 卡 不 响 应 识 别 命 令(ACMD41,CMD2,CMD3)。注意:当卡接收到一个带有不匹配 RCA 的 CMD7 时,卡将取消选中。在公用 CMD 线时,选中一个卡时将自动不选中其他卡。因此,在 SD 卡系统中,主机具有如下功能:初始化完成后,在公用 CMD 线时,不选中卡是自动完成的。如果使用单独的 CMD 线,需要关注不选中卡的操作 在主机和选择的 SD 卡之间的所有数据通信是点对点的方式。所有寻址命令都需要响应。不同数据传输模式的关系如图4-8 所示,使用如下步骤:所 有 读 数

24、 据 命 令 可 以 在 任 何 时 候 通 过 停 止 命 令(stop command,CMD12)中止。数据传输将中止,卡回到传输状态(Transfer State)。读命令有:块读命令(CMD17),多块读命令(CMD18),发送读保护(CMD30),发送 scr(ACMD51),以及读模式的通用命令(CMD56)。所 有 写 数 据 命 令 可 以 在 任 何 时 候 通 过 停 止 命 令(stop command,CMD12)中止。在不选中卡命令 CMD7 前写命令必须停止。写 命令 有:块 写 命 令(CMD24 and CMD25),写 CID(CMD26),写CSD(CMD

25、27),lock/unlock命令(CMD42)以及写模式通用命令(CMD56)。一旦数据传输完成,卡将退出数据写状态并进入 Programming State(传输成功)或 Transfer State(传输失败)。如果一个快写操作停止,而且最后一块块长度和 CRC 是有效的,那么数据可以被操作(programmed)。卡可能提供块写缓冲。这意味着在前一块数据被操作时,下一块数据可以传送给卡。如果所有卡写缓冲已满,只要卡在 Programming State,DAT0将保持低电平(BUSY)。写 CSD、CID、写保护和擦除时没有缓冲。这表明在卡因这些命令而处于忙时,不再接收其他数据传输命令

26、。在卡忙时 DAT0保持低电平,并处于 Programming State。实际上如果 CMD 和 DAT0线分离,而且主机占有的忙 DAT0线和其他 DAT0线分开,那么在卡忙时,主机可以访问其他卡。在卡被编程(programming)时,禁止参数设置命令。参数设置命令包括:设置块长度(CMD16),擦除块开始(CMD32)和擦除块结束(CMD33)。卡在操作时不允许读命令。使用 CMD7 指令把另一个卡从 Stand-by状态转移到 Transfer 状态不会中止擦除和编程(programming)操作。卡将切换到 Disconnect 状态并释放 DAT 线。使用 CMD7 指令可以不选

27、中处于 Disconnect 状态的卡。卡将进入Programming状态,重新激活忙指示。使用 CMD0 或 CMD15 重置卡将中止所有挂起和活动的编程(programming)操作。这可能会破坏卡上的数据内容,需要主机保证避免这样的操作。4.1宽总线选择/不选择 宽总线(4位总线宽度)操作模式通过 ACMD6 选择和不选择。在上电后或GO_IDLE(CMD0)命令后默认的总线宽度是1位。ACMD6 命令只在“tran state”有效,即只有在卡选中后(CMD7)总线宽度才能修改。4.2读数据格式 DAT 总线在没有数据传输时处于高电平。一个传输数据块包含一个起始位(LOW),接着连续的

28、数据流。数据流包含有效数据(如果使用了 ECC 了还包括错误纠正位)。数据流以一个结束位(HIGH)结束。数据传输和时钟信号同步。以块传输的有效数据包含 CRC 校验和。产生多项式是标准 CCITT 多项式。采用了缩短的 BCH 码,d=4,有效数据长度最长为2048字节。CRC 校验和对每个 DAT线单独计算并附加在每个数据块后。在宽总线模式操作(DAT0-DAT3)中,16位的 CRC 校验对每个 DAT 分别计算。数据块读 传输的基本单位是数据块,最大尺寸在 CSD 中定义(READ_BL_LEN)。开始和结束地址完全包含在一个物理数据快(如READ_BL_LEN定义)中的较小的块也可以

29、传递。CRC 附加在每个数据块的尾部用来保证数据传输的完整性。CMD17(READ_SINGLE_BLOCK)开始一个块读操作,然后传输完成后进入Transfer 状态。CMD18(READ_MULTIPLE_BLOCK)开始连续的块传输,直到停止命令。停止命令有一个执行延迟。在停止命令最后一位发送完以后数据传输停止。如果主机使用累计长度不是块对齐的部分块,在第一个不对齐块的开始,卡会发现一个块未对齐错误,在状态寄存器中设置 ADDRESS_ERR 错误,中止传输并等待(在 Data 状态)停止命令。4.3数据写格式 数据写传输格式类似于读格式。对于以块为单位的写数据传输,CRC 检验位附加到

30、每个数据块。卡的每根数据线在接收到数据并在写操作前,执行 CRC校验。数据块写 数据块写(CMD24-27,42,56(W)),一个或多个数据块从主机发送给卡,主机在每个数据块后附加 CRC 校验。数据块长度 WRITE_BL_LEN(512B)。如果CRC 校验失败,卡将在 DAT 数据线上指示错误。传输的数据将被抛弃,而且后续传输的数据块(在多数据块写模式)也都会被忽略。多数据块写命令比连续的单数据块写命令速度快。不允许部分块写(小于512B)。当主机试图在写保护区域写数据时写操作将中止。在这种情况下,卡在状态寄存器设置 WP_VIOLATION 位,并忽略所有后续数据传输,并在 Rece

31、ive-data状态下等待停止命令。对 CID 和 CSD 寄存器进行编程操作不需要实现设置块长度,传输的数据也是 CRC 保护的。如果 CSD 或 CID 寄存器一部分存储于 ROM 中,那么不可改变部分必须和接收缓冲中的相应部分内容保持一致。如果匹配失败,卡将报告一个错误,而且不改变任何寄存器内容。接收到一个数据块并完成 CRC 校验后,卡将开始写,如果写缓冲满而且不能从一个新的 WRITE_BLOCK 命令接收新数据时,DAT0线保持为低电平。任何时候主机都可以通过 SEND_STATUS(CMD13)命令获取卡的状态。状态位READY_FOR_DATA指示卡是否可以接收新数据或写操作还

32、在进行中。主机通过 CMD7(选中另一个卡)不选中卡,这个操作可以把卡的状态编程 Disconnect并释放 DAT 线而不中断写操作。当不选中卡时,如果编程还在进行而且写缓冲不可用时,将通过下拉 DAT 为低电平来重新激活忙信号。实际上,主机通过interleaving可以实现多个卡同时写操作,interleaving 过程可以通过在卡忙时访问其他卡实现。预擦除设置优先于多数据块写操作 设置多个写数据块的预擦除(ACMD23)可以使得接下来的多个数据块写操作比没有预先执行 ACMD23 的相同操作更快。主机可以通过该命令设置多少个数据块将在接下来的写操作中发送。如果在所有数据块发送给卡时中止

33、了写操作(使用停止传输命令),残余写数据块的内容(指要写入新内容的数据块?)将变得不确定(可能已擦除或还是原来的数据)。如果主机发送了超过 ACMD23 中定义的数据块数目的数据,卡将逐个擦除数据块(在收到新数据时)。多数据块写操作完成后值将重新设置为默认值1。建议在 CMD25 命令前使用该命令以加速写操作。如果需要预擦除主机在写命令前发送 ACMD23。如果不发送 ACMD23 命令,设置的预擦除数将在其他指令执行时自动清除。发送写数据块数目 系统使用管道机制进行数据缓冲管理,有时候在多数据块写操作过程中发生错误,使得无法确定哪一个数据块是最后成功写入的数据块。卡可以把正常写入的数据块数(

34、the number of well-written blocks)作为对命令 ACMD22 的响应。擦除 同 时 擦 除 多 个 写 数 据 块 可 以 提 高 数 据 吞 吐 量。通 过ERASE_WR_BLK_START(CMD32)和 ERASE_WR_BLK_END(CMD33)实现写数据块的识别。主机必须严格按照下列的命令操作顺序:ERASE_WR_BLK_START,RASE_WR_BLK_END,and ERASE(CMD38)。如果不按顺序接收到擦除指令(CMD38)或地址设置指令(CMD32,33),卡将在状态寄存器中设置 ERASE_SEQ_ERROR 位,并重置整个顺序

35、(sequence)。如果接收到一个不顺序的命令(除了 SEND_STATUS),卡将在状态寄存器设置 ERASE_RESET 状态位,重置擦除顺序和执行最后的命令。如果擦除范围包括写保护扇区,将不被擦除,擦除命令只擦除无保护的扇区。状态寄存器的 WP_ERASE_SKIP 位将设置。地址设置命令中的地址是以字节为单位的块写地址。卡将忽略所有小于WRITE_BLK_LEN(CSD)LSB(最低有效位)。如上所述的块写操作,卡通过保持DAT0为低电平指示擦除操作正在进行中。实际的擦除操作时间可能会很长,主机可以通过 CMD7 不选中卡或执行卡断开操作。卡上擦除操作后的数据为“0”或“1”,由卡制

36、造商确定。SCR 寄存器的DATA_STAT_AFTER_ERASE(bit55)定义了是“0”或“1”。4.4写保护管理 写保护方法如下:机械写保护开关(由主机负责)卡内部写保护(由卡负责)密码保护锁操作 4.4.1 机械写保护开关 4.4.2 卡内部写保护 4.4.3 密码保护锁操作 5时钟控制 SD 卡主机可以使用 SD 卡总线时钟信号设置卡进入节能模式或控制总线上的数据流。主机可以降低时钟频率或直接关闭。SD 卡主机必须遵循下列约束:总线频率可以在任何时候改变(满足最大和最小值的约束)。ACMD41(SD_APP_OP_COND)是一个例外。发送 ACMD41 命令后,主机将执行下面步

37、骤1和步骤2直到卡进入就绪状态:1)持续发送100KHZ-400KHZ 之间的时钟频率。2)如果主机要停止时钟,通过 ACMD41 命令以小于50ms 的间隔设置 busy 位。6 CRC 7错误条件 7.1 CRC 和非法命令 8命令 8.1卡类型 共有四类用来控制 SD 卡的命令:广播命令(bc),无响应广播命令只有在所有 CMD 线一起连接到主机时才能使用。如果分开连接,那么每个卡将单独接收命令。带响应的广播命令(bcr)所有卡同时响应。因为 SD 卡没有开漏模式,这个命令只有在所有的 CMD 线分开时采用使用。该命令将被每个卡分别接收和响应。(OPEN DRAIN 输出只能做输出口,当

38、外部无上拉电阻时,该口为高阻状态。只有外部有上拉电阻时,才有可能输出高或低的电平。)寻址(点对点)命令(ac)DAT 上没有数据传输。寻址(点对点)数据传输命令(adtc)DAT 上传输数据。所有的命令和响应通过 CMD 线传输。8.2命令格式 命令长度48位,1.92us25MHZ 0 1 bit 5.bit 0 bit 31.bit 0 bit 6.bit 0 1 起始位 host 命令 参数 CRC7 end bit 7-bit CRC 计算:G(x)=x7+x3+1 M(x)=(start bit)x39+(host bit)x38+.+(last bit before CRC)x0

39、CRC6.0=余数(M(x)x7)/G(x)8.3命令分类 SD 卡命令集分为几个类,每个类支持一个卡功能集合操作。0 1 2 3 4 5 6 7 8 9-11 支持命令 基本 保留 读块 保留 写块 擦除 写保护 锁 应用 保留 CMD0+CMD2+CMD3+CMD4+CMD7+CMD9+CMD10+CMD12+CMD13+CMD15+CMD16 +CMD17 +CMD18 +CMD24 +CMD25 +CMD27 +CMD28 +CMD29 +CMD30 +CMD32 +CMD33 +CMD38 +CMD42 +CMD55 +CMD56 +ACMD6 +ACMD13 +ACMD22 +AC

40、MD23 +ACMD41 +ACMD42 +ACMD51 +8.4详细命令描述 *所有无用位必须填入,但是值 irrelevant 表4-3 基本命令(类0和类1)命令索引 类型 参数 响应 缩写 描述 CMD0 bc 31:0无用 GO_IDLE_STATE 重置所有卡到 Idle状态 CMD1 保留 CMD2 bcr 31:0无用 R2 ALL_SEND_CID 要求所有卡发送CID 号 CMD3 Bcr 31:0无用 R6 SEND_RELATIVE_ADDR 要求所有卡发布一个新的相对地址RCA CMD4 不支持 CMD5 保留 CMD6 保留 CMD7 ac 31:16RCA 15:

41、0无用 R1(只来自选中的卡)选中/不选中卡 Command toggles a card between the Stand-by and Transfer states or between the Programming and Disconnect state.In both cases the card is selected by its own relative address and deselected by any other address;address 0 deselects all.When the RCA equals 0,the host may do one

42、of the following:use other RCA number to perform card deselection Or re-send CMD3 to change its RCA number to other then 0 and then use CMD7 with RCA=0 for card de-selection.CMD8 保留 CMD9 ac 31:16 RCA 15:0无用 R2 SEND_CSD 寻址卡并让其发送卡定义数据 CSD CMD10 ac 31:16 RCA 15:0无用 R2 SEND_CID 寻址卡并让其发送卡识别号 CID CMD11 ad

43、tc 31:0数据地址 R1 READ_DAT_UNTIL_STOP 从卡读取数据流,从给定地址开始,知道停止传输命令结束 CMD12 ac 31:0无用 R1b STOP 中止多个块的读/写操作 CMD13 ac 31:16 RCA 15:0无用 R1 SEND_STA TUS 寻址卡并发送卡状态寄存器 CMD14 保留 CMD15 ac 31:16 RCA _ GO_INACTIVE_STA TE 设置卡到 inactive 状态 15:0无用 表4-4 块读操作命令(类2)命令索引 类型 参数 响应 缩写 描述 CMD16 ac 31:0块长度 R1 SET_BLOCKLEN 为接下来的

44、块操作指令设置块长度 CMD17 adtc 31:0数据地址 R1 READ_SINGLE_BLOCK 读取一个块 CMD18 adtc 31:0数据地址 R1 READ_MULTIPLE_BLOCK 连续读取多个块,直到停止命令 CMD19-23 保留 表4-5 块写操作命令(类4)命令索引 类型 参数 响应 缩写 描述 CMD24 adtc 31:0数据地址 R1 WRITE_BLOCK 写一个长度由SET_BLOCKLEN 指定的块 CMD25 adtc 31:0数据地址 R1 WRITE_ MULTIPLE _BLOCK 连续写多个块直到STOP_TRANSMISSION命令 CMD2

45、6 不支持 CMD27 adtc 31:0无用 R1 PROGRAM_CSD 编辑 CSD 位 表4-6 写保护(类6)命令索引 类型 参数 响应 缩写 描述 CMD28 ac 31:0R1b SET_WRITE_PROT 设置地址组保护位。写数据地址 保护由卡配置数据的WP_GRP_SIZE 指定 CMD29 ac 31:0数据地址 R1b CLR_WRITE_PROT 清除保护位 CMD30 adtc 31:0写保护数据地址 R1 SEND_WRITE_PROT 要求卡发送写保护位状态 CMD31 保留 表4-7 擦除命令(类5)命令索引 类型 参数 响应 缩写 描述 CMD32 ac 3

46、1:0数据地址 R1 ERASE_WR_BLK_START 设置要擦除的第一个写数据块地址 CMD32 ac 31:0数据地址 R1 ERASE_WR_BLK_END 设置要擦除的最后一个写数据块地址 CMD34 CMD37 保留 CMD38 ac 31:0无用 R1b ERASE 擦除所有选中的写数据块 CMD39 CMD41 保留 表4-7 擦除命令(类5)命令索引 类型 参数 响应 缩写 描述 CMD32 ac 31:0数据地址 R1 ERASE_WR_BLK_START 设置要擦除的第一个写数据块地址 CMD32 ac 31:0数据地址 R1 ERASE_WR_BLK_END 设置要擦

47、除的最后一个写数据块地址 CMD34 CMD37 保留 CMD38 ac 31:0无用 R1b ERASE 擦除所有选中的写数据块 CMD39 CMD41 保留 表4-8 卡锁命令(类7)命令索引 类型 参数 响应 缩写 描述 CMD42 .CMD54 SDA 可选命令 表4-9 应用相关(Application Specific)命令(类8)命令索引 类型 参数 响应 缩写 描述 CMD55 ac 31:16 RCA R1 APP_CMD 告诉卡接下来的命令是应15:0填充位 用相关命令,而非标准命令。CMD56 adtc 31:1填充位 0:RD/WR,1读,0写 R1 GEN_CMD 应

48、用相关(通用目的)的数据块读写命令 CMD57 CMD59 保留 CMD60 CMD63 厂商保留*命令相关命令,可能指 SD 卡专用命令 所有应用相关命令之前必须先执行APP_CMD(CMD55)。表4-10 SD卡使用/保留的应用相关命令 ACMD 索引 类型 参数 响应 缩写 描述 ACMD6 ac 31:2填充位 1:0总线宽度 R1 SET_BUS_WIDTH 00:1bit 10:4bit ACMD13 adtc 31:0填充位 R1 SD_STATUS 设置 SD 卡状态 ACMD17 保留 ACMD18-保留作为 SD 安全应用 ACMD19 ACMD21 保留 ACMD22-

49、adtc 31:0 填充位 R1 SEND_NUM_WR_BLOCKS 发送写数据块的数目。响应为32位+CRC ACMD23-ac 31:23填充位 22:0 数据块数目 R1 SET_WR_BLK_ERASE_COUNT 设置写前预擦除的数据块数目(用来加速多数据块写操作)。“1”=默认(一个块)(1)ACMD24 保留 ACMD25-保留作为 SD 安全应用 ACMD26-保留作为 SD 安全应用 ACMD38-保留作为 SD 安全应用 ACMD39 ACMD40 保留 ACMD41-bcr 31:0OCR without R3 SD_APP_OP_COND 要求访问的卡发送它的操作条件

50、寄存器(OCR)内容 busy ACMD42-ac 31:1 填充位 0set_cd R1 SET_CLR_CARD_DETECT 连接1/断开0卡上CD/DAT3(pin 1 的50K欧姆上拉电阻。上拉电阻可用来检测卡 ACMD43 ACMD49-保留作为 SD 安全应用 ACMD51-adtc 31:0 填充位 R1 SEND_SCR 读取 SD 配置寄存器SCR(1)不管是否使用 ACMD23,在多数据块写操作中都需要 STOP_TRAN(CMD12)命令 9卡状态迁移表 10响应 所有响应通过 CMD 线传输,响应以 MSB 开始,不同类型的响应长度根据类型不同而不同。响应以起始位开始

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁