一个完整的 SD 卡操作过程是:主机(单片机等)发起“命令”,SD 卡根据命令的内容决定是 否发送响应信息及数据等,如果是数据读/写操作,主机还需要发送停止读/写数据的命令来结束 本次操作,这意味着主机发起命令指令后,SD 卡可以没有响应、数据等过程,这取决于命令的 含义。这一过程如下图 所示。:
SD 卡有多种命令和响应,它们的格式定义及含义在SD协议中有详细介绍,发送命令时主机只能通过 CMD 引脚发送给 SD 卡,串行逐位发送时先发送最高位 (MSB),然后是次高位这样类推……。
SD 卡的命令格式,如下表所示:
SD 卡的命令固定为 48 位,由 6 个字节组成,字节 1 的最高 2 位固定为 01,低 6 位为命令 号(比如 CMD16,为 10000B 即 16 进制的 0X10,完整的 CMD16,第一个字节为 01010000,即 0X10+0X40)。字节 2~5 为命令参数,有些命令是没有参数的。字节 6 的高七位为 CRC 值, 最低位恒定为 1。
SD 卡的命令总共有 12 类,分为 Class0~Class11,本章,此文仅介绍几个比较重要的命令,
如下表所示:
上表中,大部分的命令是初始化的时候用的,而表中的 R1、R1b、R2、R3、R6 和 R7 等是 SD 卡的应答信号。在主机发送有响应的命令后,SD 卡都会给出相对应的应答,以告知主机该 命令的执行情况,或者返回主机需要获取的数据,具体场景如下图所示:
SD 的响应大体分为短响应 48bit 和长响应 136bit,每个响应也有规定好的格式。R1、R1b、
R3、R6 和 R7 属于短响应,而 R2 属于长响应,它们具体作用如下表所示。
SD 卡的响应因使用接口不同,比如 SDIO 和 SPI 接口,它们的响应种类以及响应格式也是 不同。这里以 SDIO 接口下的 R1 响应为例,其内容格式如下表所示:
全部0条评论
快来发表一下你的评论吧 !