2023年SD卡详解.pdf
《2023年SD卡详解.pdf》由会员分享,可在线阅读,更多相关《2023年SD卡详解.pdf(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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、写保护和擦除时没有缓冲。这表明在卡因这些命令而处于忙时,不再接收其他数据传输命令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 SD 详解
限制150内