SDIO控制器驱动SD卡的步骤一: SD卡上电(六)
本文讲解SD卡上电的步骤:
主机应为卡供电,以使电压在250ms内达到Vdd_min,并且开始向SD卡提供至少74个SD时钟,同时保持CMD线为高电平。如果是SPI模式下,CS应在74个时钟周期内保持高电平。
•通电后(包括热插入,即在总线运行时插入卡)SD卡进入空闲状态。对于SD主机,则不需要CMD0。如果是SPI主机,则CMD0为将卡发送到SPI模式的第一个命令。
•在物理层规范版本2.00中新添加了CMD8,以支持多种电压范围,用于检查卡是否支持供电电压。 2.00版主机应发出CMD8并在卡初始化之前验证电压。不支持CMD8的主机应
提供高电压范围。
•ACMD41是一个同步命令,用于协商工作电压范围并轮询直到它们超出开机顺序为止。如果主机系统连接了多个卡,主机应检查所有卡是否满足供电电压。否则,主机应选择一个
卡并初始化。
上电描述过程:
- 上电后,延时74个时钟,确保电压达到 Bus master supply voltage,然后发送软复位CMD0命令,进入IDLE 状态。
- 发送CMD8命令。此命令是新命令,用于区分SD卡0,只有0及以后的卡才支持CMD8命令,MMC卡和V1.x的卡,是不支持该命令的。设置VHS位,以告诉SD卡,主机的供电情况,让SD卡知道主机的供电范围。
建议在“check pattem”中使用“10101010b”
这里我们使用参数0X1AA,即告诉SD卡,主机供电为2.7~3.6V之间,如果SD卡支持CMD8,且支持该电压范围,则会通过CMD8的响应(R7)将参数部分原本返回给主机,如果不支持CMD8,或者不支持这个电压范围,则不响应。
Cmd8命令格式如下:
CMD8 |
[31:12]Reserved bits |
R7 |
SEND_IF_COND |
Reserved bits,设置为0。 此命令,用于区分SD卡2.0,只有2.0及以后的卡才支持CMD8命令,MMC卡和V1.x的卡,是不支持该命令的。 设置VHS位,以告诉SD卡,主机的供电情况,让SD卡知道主机的供电范围。 |
R7 命令格式如下:
- 发送ACMD41命令,进一步确认SD 卡的电压范围,和确认是否是SDHC卡。
ACMD41
|
bcr
|
[31]reserved bit
|
R1
|
SD_SEND_OP_COND
|
发送主机容量支持信息(hcs),并要求访问卡在cmd线上的响应中发送其运行状态寄存器(ocr)内容。 保留位应设置为“0”。
|
OCR 寄存器的内容 是对ACMD41 的回复。
第一图是简单的步骤,第二个图是详细的。