要了解SD卡的设计规范,我们必须从SD从卡的分类开始。一般有两种分类方法。一是根据卡容量进行分类。分为标准卡(SDSC)、高容量卡(SDHC)、扩展容量卡(SDXC)。SDSC不超过2GB,支持所有的SD协议。SDHC不超过32GB,但大于2GB,知识SD2.0协议。SDXC不超过2TB但大于32GB,支持SD3.0协议。另一种根据卡的速率进行分类,如SDR104支持最大传输速率为104MB/S,时钟频率为208MHz,供电1.8V。SDR50、SDR25、SDR12类以上,不再赘述。DDR50与SDR与50相比,最大时钟频率为50MHz。high speed类型同SDR25,但供电为3.3V,default speed类型同SDR12,供电为3.3V。
就设计而言,只有两种情况,即是否根据客户需求支持热插拔。
我们都知道,SD卡信号是有VDD,CLK,DATA0~3,CMD,GND组成。但是,如果支持热插拔,需要增加中断检测pin即detect,接到卡座的硬开关。
对于识卡过程,如果支持热插拔,会先检测DETECT当卡插入时,上电平会降低。不支持热插拔卡可自动省略此步骤,直接给予SD卡上电3.3V(某些平台或SD3.0上电前可能会有低电平持续时间,bring up需要注意的是,如果检测不到卡系统,电源将直接关闭。检测到后CPU会发送CMD信号给到SD,SD收到后会做ACK应答给到CPU,从而实现和CPU建立通信。
我们在设计时应该注意什么?重点来了。
DATA0~3作为信号传输,需要尽可能保证干扰最小,因此最好预留0欧姆电阻串接以供调试。当然,当出现干扰问题时,也可以尝试调整驱动电流。SD卡信号线小于1000张mm,DATA,CLK,CMD信号组间差值控制7mm同时,此类信号线需要包地处理,以减少其他信号的干扰。SD2.0驱动电流200mA,输出电容1uF,SD3.0,S/DDR50:400mA,2.2uF。SDR104需要800mA驱动电流,4.7uF输出电容滤波。所以要注意过流能力。
那对于SD卡片设计需要验证其功能是否正常,也需要以下考虑。
我们需要测试SD对比卡的接口协议SPEC判断是否正确。同时,还需要测试每个管脚的抗浪涌能力和静电测试。如果卡支持热插拔,还需要测试热插拔功能是否正常。最好测量特定的波形。
当然,SD当卡出现故障时,我们需要通过专业能力快速定位问题。
首先,我们必须检查它是否是单一的问题,所以我们需要与其他机器进行比较。同时测量出SD与正常卡相比,卡信号的对地阻抗最好用二极管档进行测试,看是否是卡座虚焊造成的。然后,用示波器测试识卡过程是否正常。如果不正常,可能是CPU有问题,同时抓取log给软件分析。