Linux SD Driver (一)
一、SD Bus
1、Command:命令是一次操作开始的令牌,从主机发送到一个卡片(编址命令)或者连接到主机的
所有卡片(广播命令)。命令的编码格式如下图所示:每个令牌都有一个起始位和结束位,总长度为48 bits,
并且每个令牌都有 7 bits 的CRC 校验码。命令只能通过CMD 线传输,并且MSB为先。
下面是 CMD8 的示意图:
* bit[40:45] - Command index 的内容就是 CMD 的编号
* bit[8:39] - Command Argument 为每个命令自带的参数
* Command 共分为12类(class0 - class11),在寄存器 CSD 中有 12 bits CCC (Card Command Class)
对本卡支持的分类进行描述,基本命令(class-0)如下图所示:
2、Response:应答是卡片发回数据的令牌,响应主机之前发送的命令。应答的编码格式如下图所示:
每个令牌都有一个起始位和结束位,总长度为48 bits 或者136 bits,有相应的 CRC 校验码。
应答信号也只在 CMD 线上传输,并且 MSB 为先。
3 * SD 存储卡有 5种类型的应答:R1、R1b、R2、R3、R6,
SDIO 卡还支持另外两种应答类型:R4、R5,除了 R3 其他类型的应答都有 CRC 校验码
* R1 为通常命令的应答格式,如下图所示
* R6 为 CMD3 的专用应答格式,其中 Argument 字段的高 16 bits 为卡片新的相对地址,如下图所示
4、Data:数据通过 DATA 线双向传输。数据传输有两种模式:
a、Usual data 模式:通常的数据以最低有效字节为先发送,在单个字节里面以最高有效位为先,示意图如下: