1. SDIO数据流程
1.1 SDIO数据读写流程
1.1.1"no response"和"no data"
具体的操作流程如下所示:
例子:
绿色:SDMMC_CLK
黄色:SDMMC_CMD,空闲时一直处于高电平
- 主控发出的波形:当最开始的两个电平有一高一低时,是主控发出去的命令;
- SD卡响应的波形:当最开始的两个电平有连续的两个低电平是表示卡端有响应;
其次主控和响应一般包含48个bit的数据,所以48个clk为一个完整的包。要确认的就是:主控发出去命令包后,SD卡端是否有响应。
1.1.1.1 Command的数据格式
每个Command都有一个起始位(0)和一个结束位(1)。总长度为48位。每个命令都有CRC保护,以便检测传输错误,并可以进行重复操作。
1.1.1.2 Response的数据格式
Response的编码方式取决于它们的内容,长度可以是48位或136位。
1.1.2 数据块操作
1.1.2.1 多数据块读操作
SDIO的Host和Device之间是以数据块形式传输,可以是一次单个数据块,也可以是一次多个数据块。下图给出了一次读取多个数据块的操作:
读操作流程:
- Device触发中断给Host;
- Host通过CMD线发起一次command指令;
- Device给出command对应的response响应;
- Device发送数据块给Host;
- Host发送停止接受数据块的指令;
- Device发送响应并停止发送数据块;
1.1.2.2 多数据块写操作
如下图所示,是一次写多个数据块的操作:
写操作流程:
- Host通过CMD线发起一次command指令;
- Device给出command对应的response响应;
- Host发送数据块给Device;
- Host发送停止接受数据块的指令;
- Device发送响应并停止发送数据块;
1.1.2.3 数据类型
SD卡有两种类型的数据包格式。
- Usual data (8-bit width)
- Wide width data (SD Memory Register)