SDHC 与SD的区别

来源:互联网 发布:剑灵女剑士捏脸数据图 编辑:程序博客网 时间:2024/05/04 12:48

SDHC 与SD的区别

何为SDHC卡

SDHC是“High Capacity SD Memory Card”的缩写,即“高容量SD存储卡”。2006年5月SD协会发布了最新版的SD 2.0的系统规范,在其中规定SDHC是符合新的规范、且容量大于2GB小于等于32GB的SD卡。 

SDHC最大的特点就是高容量(2GB-32GB)。另外,SD协会规定SDHC必须采用FAT32 文件系统,这是因为之前在SD卡中使用的FAT16文件系统所支持的最大容量为2GB,并不能满足SDHC的要求。所有大于2G容量的SD卡必须符合SDHC规范,规范中指出SDHC至少需符合Class 2的速度等级,并且在卡片上必须有SDHC标志和速度等级标志。

1. 高密度卡和普通卡的地址区别

cmd命令中携带的地址,在高密卡中是以block为单位,在普通卡中是以byte为单位。因此高密卡中不支持Partial Access and Misalign Access模式。

2. 对高密度卡来说,初始化必须使用cmd8命令。如果直接对其发acmd41命令,卡将一直返回busy信号;因此不支持v2.0的host,其不能支持sdhc卡。

在支持v2.0的host中插入非高密度卡,如果卡不支持v2.0,host发cmd8后,卡不响应,host可以判断出其为非高度卡,即普通卡;如果卡支持v2.0,卡响应,接下来卡发acmd41命令,则host可以判断卡对acmd41的相应判断卡是否为高密度卡。

对卡来说,支持v1.1及之前版本的只有normal card,无高密度卡;支持v.2.0版本的有可能是normal卡,也可能是hc(高密度)卡。

3.

SD卡有一个CSD寄存器,里面有各种参数。CSD寄存器有1.0和2.0两个版本,这两个版本的格式不一样。

其中计算卡的容量的参数即在该寄存器中。

该寄存器前两位“CSD_structure”仅起一个标志性作用,不能依据此位判断CSD寄存器的版本。

判断CSD的格式要靠ACMD41的响应CCS位来判断。CCS=0,表示该卡为Standard Capacity Card,那么对该卡的寻址要以byte为单位来进行。当进行块读写(CMD17,18,24,25时,如果写第0块地址为0x00;写第1块地址则为0x200;(默认block_len为512byte)。因为2的32次方最大为4G,因此Standard Capacity Card最大容量不超过4G。实际上在SDV1.1以前规定的Standard Capacity Card卡的容量都不超过2G。在SDV2.0里对Standard Capacity Card卡的容量才放大到4G。

CCS=1,表示该卡为High Capacity Card,那么对该卡的寻址要以512 byte为单位来进行。当进行块读写(CMD17,18,24,25)时,如果写第0块地址为0x00;写第1块地址则为0x01;

如果判断出卡CCS=0,则读取CSD寄存器时要以CSD_V1.0版本格式来读。有些比较新的卡,其CCS=0,而其CSD_structure= “01”,此时仍要以CCS为标准,以CSD_V1.0的格式来读去其内容,从而正确判断卡的容量