一、概述
SD卡全称为 Secrue Digital Memory Card,具有轻巧、可加密、传输速度高、适用于手持设备使用等优点。
二、总线接口
SD需要高速读写,同时也要使手持等嵌入式设备能方便使用,特设有两个访问接口中:SD模式接口和SPI接口。SD卡在上电初期,卡主控通过检测引脚1(DAT3)来决定使用SD模式还是SPI模式。当此脚接50KOhm上拉电阻时,卡进入SD模式;当此脚为低电平,卡则工作于SPI模式。
表1:SD卡接口定义
1、SPI接口
SPI接口是为嵌入式和手持设备准备的,只使用普通的三线制SPI总线,即可对卡进行一般的慢速的读写等操作。
2、SD接口
SD接口是为高速专有设备而设计,使设备能对卡进行高速可靠的传输而设计,因SD模式在每个命令及数据转输时,都必须具有正确的CRC校验。因此,此模式下主机一般需要专门设计的硬件模块以产生CRC校验。
在此模式下,SD卡具有四根数据线,且时种速度最大可达50MHz,所以此模式下数据传输速率比SPI模式快得多。
三、总线协议
SD卡命令共分为12类,分别为class0到class11,不同的卡主控根据其功能,支持不同的命令集。主要如下:
class0:卡的识别、初始化命令集。
class2:读卡命令集
class4:写卡命令集
class7:卡的锁定,解锁功能命令集
SD卡只有唯一的主机,所有命令是由主机发出。总线上可传输三种类型数据,分别是命令帧、响应、数据。
命令帧:由总线上唯一的主机发出,由设备响应并执行。
响应:指设备响应主机的命令。
数据:指由主机传给设备,或由设备传给主机的数据实体。
一个完整的命令由命令帧和响应,或命令帧、响应和数据组合而成。
主机发出command请求,然后卡返回该命令的respond,如果respond响应为正确,则Host通过读取cmd线状态,等待卡准备好数据;如果cmd为低电平,表示卡busy,busy结束后卡会把cmd线拉高,并且发出start token,随即进入数据传输阶段;数据传输结束后,主机发送结束命令停止命令,传输结束。
(图参照SD协议.doc)
四、卡的初始化
上电后,卡处于IDLE状态,主机发送CMD0复位SD Card,然后通过CMD55和ACMD41判断当前电压是否在卡的工作范围内。但如果是MMC卡,则不能识别CMD55,所以可以通过此命令的响应正确与否,判断插入的是MMC卡还是SD卡。 得到正确的响应后,主机可以继续通过CMD10读取SD卡的CID寄存器,通过CMD16设置数据Block长度,通过CMD9读取卡的CSD寄存器。从CSD寄存器中,主机可获知卡容量,支持的命令集等重要参数。 此时,卡已进入了传输状态,主机就可通过CMD17/18和CMD24/25对卡进行读写。 继SD1.1之后又推出了SD2.0,主要特性是支持更大容量。SD1.1中卡容量存放于CSD寄存器中,而由于其规范中相关域的值较小,固最大只能表示2G地址。随着Nand容量的大大提高,SD1.1已经不适合潮流,因而推出了SD2.0。 初始化流程大同小义,只需要CMD0之后再加上CMD8命令的识别。SD1.1不支持CMD8,而SD2.0的CMD8能读到卡的接口信息。如果卡响应CMD8为无效命令,则走SD1.1的流程,可能是SD1.1或MMC。如CMD8响应正确,则很可能是SD2.0了。 五、SD Memory Card的寄存器
CID 卡标识寄存器 产品序列 生产日期 CSD 卡特性寄存器 SCR 卡配置寄存器 支持协议 支持总线宽度 OCR 操作寄存器 电压值 上电状态 DSR 驱动层寄存器 RCA 卡地址 |
|