logo资料库

SD卡读写规范(SD卡资料).pdf

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
SDSDSDSD 操作学习笔记 操作学习笔记 操作学习笔记 操作学习笔记 标签: 笔记 学习 SD 卡驱动 2009-11-11 21:51 SD 卡操作 一、 概述 1、简介 SD 卡是基于 flash 的存储卡。 SD 卡和 MMC 卡的区别在于初始化过程不同。 SD 卡的通信协议包括 SD 和 SPI 两类。 SD 卡使用卡内智能控制模块进行 FLASH 操作控制,包括协议、安全算法、 数据存取、ECC 算法、缺陷处理和分析、电源管理、时钟管理。 2、功能介绍 2.1 特点 1) 主机无关的 FLASH 内存擦除和编程 读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机无 需关心具体操作的完成。当采用新型的 FLASH 时,主机代码无需更新。 2) 缺陷管理 3) 错误恢复 4) 电源管理 Flash 每个扇区有大约 10 万次的写寿命,读没有限制。 擦除操作可以加速写操作,因为在写之前会进行擦除。 3 SD 总线模式 3.1 Negotiating Operation Conditions 当主机定义了 SD 卡不支持的电压范围时,SD 卡将处于非活动状态,将忽 略所有的总线传输。要退出非活动状态唯一的方法就是重新上电。 3.2 SD 卡获取和识别
SD 卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。主机 依次分别访问每个卡,每个卡的 CID 寄存器中已预编程了一个唯一的卡标识号, 用来区分不同的卡。 主机通过 READ_CID 命令读取 CID 寄存器。CID 寄存器在 SD 卡生产过程 中的测试和格式化时被编程,主机只能读取该号。 DAT3 线上内置的上拉电阻用来侦测卡。在数据传输时电阻断开(使用 ACMD42)。 3.3 卡状态 卡状态分别存放在下面两个区域: 卡状态(Card Status),存放在一个 32 位状态寄存器,在卡响应主机命令 时作为数据传送给主机。 SD 状态(SD_Status),当主机使用 SD_STATUS(ACMD13)命令时,512 位以一个数据块的方式发送给主机。SD_STATUS 还包括了和 BUS_WIDTH、安 全相关位和扩展位等的扩展状态位。 3.4 内存组织 数据读写的基本单元是一个字节,可以按要求组织成不同的块。 Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储 允许的块大小是实际大小等信息存储 允许的块大小是实际大小等信息存储 允许的块大小是实际大小等信息存储 在在在在 CSD 寄存器寄存器寄存器寄存器。。。。 Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的, 大小信息存储在 CSD 寄存器。 WP Group:写保护单位。大小包括几个 group,写保护由一位决定,对每个 设备大小是固定的,存储在 CSD 寄存器。 3.5 读写操作 Single Block Mode:主机根据事先定义的长度读写一个数据块。由发送模块产 生一个 16 位的 CRC 校验码,接受端根据校验码进行检验。读操作的块长度受设 备 sector 大小 (512 bytes)的限制,但是可以最小为一个字节。不对齐的访问是不 允许的,每个数据块必须位于单个物理 sector 内。写操作的大小必须为 sector 大 小,起始地址必须与 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。如果发现错误,在传输前进行纠正。 3.8 数据擦除 SD 卡数据擦除的最小单位是 sector。为了加速擦除操作,多个 sector 可以同 时擦除。为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址, 在地址范围内的所有 sector 将被擦除。 3.9 写保护 两种写保护方式可供选择,永久保护和临时保护,两种方式都可以通过 PROGRAM_CSD 指令进行设置。永久保护位一旦设置将无法清除。 3.10 拷贝位 通过 CSD 寄存器中的拷贝位(copy bit)设置 SD 卡中的数据是原始数据还是拷 贝数据。拷贝位一旦设置,将无法清除,在测试和格式化时使用。 3.11 CSD 寄存器 所有 SD 卡的配置信息存储在 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) 命令分离上拉。 1.2 SPI 模式引脚 1.3 寄存器 宽度 名称 CID 128 16 RCA 128 64 32 CSD SCR OCR 描述 卡标识号 相对卡地址(Relative card address):本地系统中卡的地 址,动态变化,在主机初始化的时候确定 *SPI 模式中没有 卡描述数据:卡操作条件相关的信息数据 SD 配置寄存器:SD 卡特定信息数据 操作条件寄存器 主机通过重新上电来重置(reset)卡。卡有它自身检测上电的电路,当上电后卡 状态切换到 idle 状态。也可以通过 GO_IDLE (CMD0)指令来重置。 2 SD 卡总线拓扑 SD 总线有 6 根通信线和三根电源供应线: CMD——命令线是双向信号线。主机和卡通过 push pull 模式工作。 DAT0-3——数据线是双向信号线。主机和卡通过 push pull 模式工作。 CLK——时钟是从主机到卡的信号。CLK 通过 push pull 模式操作。 VDD—VDD 是所有卡的电源供应线。 VSS[1:2]—VSS 是 2 根地线。
在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽 (physical slot)分配逻辑地址。数据通常分别传输给每个卡。然后,为了方便处 理卡堆栈,初始化后所有命令同时发送给所有卡,在命令数据包中包含了操作地 址。 SD 总线允许动态配置数据线数目。上电后默认 SD 卡只用 DAT0 作为数据 传输线。初始化后,主机可以改变总线宽度。这个特性使得在硬件开销和系统性 能间取得平衡。 3 SPI 总线拓扑 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.1 OCR(Operating Conditions Register) 32 位的操作条件寄存器存储了 VDD 电压范围。SD 卡操作电压范围为 2~3.6V。 然而从内存中访问数据的电压是 2.7~3.6V。OCR 显示了卡数据访问电压范围, 结构如下表所示。 表表表表 3-8 OCR 寄存器定义 寄存器定义 寄存器定义 寄存器定义 OCR 位 VDD 电压范围
0-3 4 5 6 7 8 9 10 11 12 13 14 15 16 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 位(busy bit)置位,表明卡上电过程已结 束。 5.2 CID(Card Identification) CID 寄存器长度为 16 个字节的卡唯一标识号,该号在卡生产厂家编程后无 法修改。SD 和 MMC 卡的 CID 寄存器结构不一样。
名称 类型 宽 CID 位 内容 CID 值 度 厂商 ID Binar 8 [127:12 SD 卡协会管理和分配 0x03 y 0] OEM/Applicati ASCI 1 [119:10 识别卡的 OEM 或卡内容, 0x53,0x44 on ID(OID) I 6 4] 由制造商分配 产品名(PNM) ASCI 4 [103:64] 5 个 ASCII 字符 SD128 I 0 产品版本 BCD 8 [65:56] 2 个二进制编码的十进制数 产品版本 (PRV) 序列号(PSN) Binar 3 [55:24] 32 位无符号整数 CRC7 校验和 Binar 7 [7:1] (CRC) y CRC Calculation: G(x)=x7+3+1 M(x)=(MID-MSB)*x119+...+(CIN-LS B)*x0 CRC[6...0]=Remainder[(M(x)*x7)/G(x) ] 未用 1 [0:0] 1、格式为“n.m”,如“6.2”表示为 0110 0010 5.3 CSD(Card Specific Data) CSD 寄存器包含访问卡数据所需的配置信息。SD 卡和 MMC 卡的 CSD 不同。 6 数据交互格式和卡容量 通常,SD 卡分为 2 个区: 用户区—用户通过读写命令存储安全和非安全数据。 y 2 4 [23:20] 保留 生成日期 (MDT) 2 BCD 1 [19:8] yym(从 2000 年的偏移量) 如:Apr (30)1 产品序列 号 2001=0x0 14 CRC7
安全保护区(Security Protected Area)—版权保护应用程序用来保存安全相 关数据,通过 SD 安全规范中定义的条件验证后,由主机使用安全的读写指 令完成操作。安全保护区的大小大概是总大小的 1%。 三、 SD 卡协议 1 SD 总线协议 SD 总线通信是基于命令和数据位流方式的,由一个起始位开始,以一个停 止位结束: 命令——命令是开始开始操作的标记。命令从主机发送一个卡(寻址命令) 或所有连接的卡(广播命令)。命令在 CMD 线上串行传送。 响应——响应是从寻址卡或所有连接的卡(同步)发送给主机用来响应接受 到的命令的标记。命令在 CMD 线上串行传送。 数据——数据可以通过数据线在卡和主机间双向传送。 卡寻址通过会话地址方式实现,地址在初始化的时候分配给卡。SD 总线上 的基本操作是 command/response。 数据传送采用块方式,数据块后接 CRC 校验位,操作包括单数据块和多数据 块。多数据块更适合快速写操作,多数据块传输当在 CMD 线出现停止命令时结束。 数据传输可以在主机端设置采用单数据线或多数据线方式。 块写操作在 DAT0 数据线写操作期间使用忙信号,无论用来传输的信号线数 目是多少。 命令格式如下所示: 响应标记(token)根据内容不同具有四种格式,标记长度。长度为 48 位或 136 位。数据块的 CRC 算法采用 16 位的 CCITT 多项式。 在命令行中,MSB 位首先传送,LSB 位最后传送。 当使用宽总线模式时,数据同时在 4 根数据线上传输。开始位、结束位和 CRC 在每根数据线上传送。CRC 对每根数据线单独计算。CRC 状态响应和 Busy 信 号只通过 DAT0 由卡发送给主机。
分享到:
收藏