SD卡识别流程简介

SD卡速度模式描述众多,命名让人觉得极其混乱,USB在它面前不过是小巫见大巫。从容量角度出发,SDSC、SDHC、SDXC和 SDUC;从速度角度出发,Default SpeedHigh Speed、Speed Class 2/4/6/10、UHS-I/UHS-II(UHS Speed Grade 3:U1/U2/U3)、Video Speed Class V4/6/10/30/60/90、Application Performance Class A1/A2、PCIe 4.0 single lane/PCIe 4.0 dual lane/PCIe 3.1 dual lane

我们也可以从厂商的商品介绍大概了解一下,该 SD卡是支持 UHS-II mode的 SDXC卡。

KIOXIA SD Card

*某东价格:2459元,对老法师来说这个价格不算贵,该 SD卡不仅拥有众多奇奇怪怪的图标,连管脚都多人 8根,真是金闪闪。

UHS-II PIN

虽然很混乱,但幸运的是消费类市场上,最高速度一般是 UHS-I,属于低速信号,软件 debug比较方便。也正是规格要求低,各种各样的白牌卡一堆,都是些省成本的幺蛾子。

在混乱中,我们只要了解 Default Speed、High Speed和 UHS-I(SDR12、SDR25、SDR50、DDR50和 SDR104),就可以在遇到识别问题时心中不慌,有条理的解决问题。

UHS-I Host Init Flow Chart

上图是 UHS-I Host的初始化流程图,SD卡识别流程(SD mode)也是基于该图进行介绍,详细说明请看 4. SD Memory Card Functional Description。

1)Power On,host为卡提供工作电压,一般是 3.3V,当电压上升到 2.7V,卡开始初始化,host需要等待最大 1ms或者 74个 clock cycle(400KHz),具体如下图;

Power-up

2)设置卡进入 Idle State,CMD0,卡初始化完成后,host发送 CMD0让卡进入 Idle State;

3)发送接口条件命令,CMD8,卡已经处于 Idle State,host发送 CMD8确认卡是否支持 host当前提供的工作电压,卡通过 R7响应,不支持则不响应,继续走流程;

4)发送初始化命令,ACMD41,host反复的发送 ACMD41(HSC=1 / Host Capacity Support和 S18R=1 / Switching to 1.8 Request)(只有第一个 ACMD41的参数是有效的,但后续的 ACMD41也应该使用相同的参数发送),直到卡响应的 R3的 bit31=1,表示卡初始化完成后,host检测 CCS(Card Capacity Status)和 S18A(Switching to 1.8 Accepted),S18A=1表示卡支持切换工作电压到 1.8V,CCS=1表示卡为 SDHC or SDXC;

ACMD41 Voltage Switch Sequence

5)发送电压切换命令,CMD11,S18A=1则 host发送 CMD11,卡返回 R1响应,host开始切换电压,当 host检测到卡的 DAT[3:0]任意管脚为高电平,则电压切换成功,此时卡进入 UHS-I模式,默认总线速度模式为 SDR12;

6)获取 CID,CMD2,host发送 CMD2获取卡的 CID,卡返回 R2响应;

7)获取 RCA,CMD3,host发送 CMD3获取卡发布的 RCA,host可以多次发送 CMD3要求卡发布新的 RCA;

8)发送选卡命令,CMD7,host发送 CMD7,卡进入 Transfer State,如果卡返回了 R1b响应,bit25 CARD_IS_LOCKED=1,则卡已经锁定,需要在下一步操作前发送 CMD42解锁卡;

9)设置总线带宽,ACMD6,UHS-I仅支持 4bit模式,host通过 ACMD6选择总线工作在 4bit模式;

10)设置驱动强度,CMD6,host通过 CMD6设置 Driver Strength(Function Group 3),默认是 Type-B,具体值见下图 Available Functions;

11)设置具体 UHS-I模式和对应的电流限制,CMD6,host通过 CMD6设置 Bus Speed Mode(Function Group 1),Current Limit(Function Group 4),具体值见下图 Available Functions;

Available Functions

12)tuning of sampling point,CMD19,采样点优化,在 SDR50和 SR104模式中 host通过发送 CMD19确认最优的采样点,在兼容性方面,host可以在 CMD19失败的情况下发送 CMD12去停止该笔传输,再发送下一个采样点的 CMD19;

13)后面 host就可以正常的与卡进行数据交互了;

14)对于步骤 4),CCS=0表示卡为 SDSC,直接跳到步骤 6)完成后续流程,SDSC的卡不支持 UHS-I模式,S18A=0表示卡只工作在 3.3V电压,除了跳过切换电压步骤,后续流程与正常的 UHS-I识别流程一样。

Power Cycle,是指 host执行 Power-off –> Power-up的操作,并保持 1ms以上,即 VDD掉电再重新上电。一般保持的时间需要根据具体硬件确定,可以通过示波器测量 VDD跌落至 0.5V的时间,不过测量跌落到 0V的时间最保险。

详细的 1)Power On到 7)获取 RCA流程,可以查看协议 Figure 4-2: Card Initialization and Identification Flow (SD mode)。


SD卡识别流程简介
http://xxxdk.xyz/xxx/2021/03/SD卡识别流程简介/
作者
sni
发布于
2021年3月23日
许可协议