SDIO控制器驱动SD卡的步骤一: SD卡上电(六)

本文讲解SD卡上电的步骤:

SDIO控制器驱动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是一个同步命令,用于协商工作电压范围并轮询直到它们超出开机顺序为止。如果主机系统连接了多个卡,主机应检查所有卡是否满足供电电压。否则,主机应选择一个

卡并初始化。

 

上电描述过程:

  1. 上电后,延时74个时钟,确保电压达到 Bus master supply voltage,然后发送软复位CMD0命令,进入IDLE 状态。
  2. 发送CMD8命令。此命令是新命令,用于区分SD0,只有0及以后的卡才支持CMD8命令,MMC卡和V1.x的卡,是不支持该命令的。设置VHS位,以告诉SD卡,主机的供电情况,让SD卡知道主机的供电范围。

建议在“check pattem”中使用“10101010b”

这里我们使用参数0X1AA,即告诉SD卡,主机供电为2.7~3.6V之间,如果SD卡支持CMD8,且支持该电压范围,则会通过CMD8的响应(R7)将参数部分原本返回给主机,如果不支持CMD8,或者不支持这个电压范围,则不响应。

 

Cmd8命令格式如下:

SDIO控制器驱动SD卡的步骤一: SD卡上电(六)

 

 

 

CMD8

[31:12]Reserved bits
[11:8]supply voltage(VHS)
[7:0]check pattern

R7

SEND_IF_COND

Reserved bits,设置为0

此命令,用于区分SD2.0,只有2.0及以后的卡才支持CMD8命令,MMC卡和V1.x的卡,是不支持该命令的。

设置VHS位,以告诉SD卡,主机的供电情况,让SD卡知道主机的供电范围。

 

R7 命令格式如下:

SDIO控制器驱动SD卡的步骤一: SD卡上电(六)

 

  1. 发送ACMD41命令,进一步确认SD 卡的电压范围,和确认是否是SDHC卡。

ACMD41

 

bcr

 

[31]reserved bit
[30]HCS(OCR[30])
[29:24]reserved bits
[23:0] VDD Voltage
Window(OCR[23:0])

 

R1

 

SD_SEND_OP_COND

 

发送主机容量支持信息(hcs),并要求访问卡在cmd线上的响应中发送其运行状态寄存器(ocr)内容。

保留位应设置为“0”。

 

 

SDIO控制器驱动SD卡的步骤一: SD卡上电(六)

 

OCR 寄存器的内容 是对ACMD41 的回复。

 

SDIO控制器驱动SD卡的步骤一: SD卡上电(六)

 

 

 

 

 

 

 

 

 

 

第一图是简单的步骤,第二个图是详细的。

SDIO控制器驱动SD卡的步骤一: SD卡上电(六)

 

SDIO控制器驱动SD卡的步骤一: SD卡上电(六)