Linux SD Driver (一)

一、SD Bus

    1Command命令是一次操作开始的令牌,从主机发送到一个卡片(编址命令)或者连接到主机的

所有卡片(广播命令)。命令的编码格式如下图所示:每个令牌都有一个起始位结束位,总长度为48 bits

并且每个令牌都有 7 bits CRC 校验码。命令只能通过CMD 线传输,并且MSB为先。

        下面是 CMD8 的示意图:

    Linux SD Driver (一)

    * bit[40:45] - Command index 的内容就是 CMD 的编号

    * bit[8:39] - Command Argument 为每个命令自带的参数

Linux SD Driver (一)

    * Command 共分为12类(class0 - class11),在寄存器 CSD 中有 12 bits CCC Card Command Class

对本卡支持的分类进行描述,基本命令class-0)如下图所示:

Linux SD Driver (一)

Linux SD Driver (一)

  2Response:应答是卡片发回数据的令牌,响应主机之前发送的命令。应答的编码格式如下图所示:

每个令牌都有一个起始位和结束位,总长度为48 bits 或者136 bits,有相应的 CRC 校验码。

应答信号也只在 CMD 线上传输,并且 MSB 为先。

Linux SD Driver (一)


3 * SD 存储卡有 5种类型的应答R1R1bR2R3R6

  SDIO 卡还支持另外两种应答类型:R4R5,除了 R3 其他类型的应答都有 CRC 校验码

    * R1 为通常命令的应答格式,如下图所示

Linux SD Driver (一)


* R6 CMD3 的专用应答格式,其中 Argument 字段的高 16 bits 为卡片新的相对地址,如下图所示

Linux SD Driver (一)


  4Data:数据通过 DATA 线双向传输。数据传输有两种模式:

        aUsual data 模式:通常的数据以最低有效字节为先发送,在单个字节里面以最高有效位为先,示意图如下:

Linux SD Driver (一)


Linux SD Driver (一)