分享

SD卡协议规范学习

 WUCANADA 2013-11-06
博客大赛】SD卡协议规范学习(一) 发布时间:2013-01-11 22:34:43
技术类别:嵌入式
http://bbs./BLOG_ARTICLE_3010464.HTM

首先,本博文遵照SD卡协议3.01版本,最旧协议版本为1.10,但是协议是向下兼容的。SDPhysical Layer Simplified Specification Version 3.01英文协议规范可以去官方下载地址为:https://www./downloads/pls/simplified_specs/

 

关于SD卡做一个简单介绍如下:

SD卡按照内存容量大小分3类:

SDSC(标准容量SD内存卡) :最大支持为2GByte

SDHC(大容量SD内存卡)   :SD卡容量介于2Gyte~32GByte

SDXC(扩展容量SD卡内存卡):SD卡容量介于32GByte~2TByte

 

再来介绍一下关于SD卡的传输速度分为5个等级:

Class 0  :未定义它的传输速度!!

Class 2  :定义它的传输速度大于等于2MB/sec

Class 4 :定义它的传输速度大于等于4MB/sec

Class 6  :定义它的传输速度大于等于6MB/sec

Class 10 :定义它的传输速度大于等于10MB/sec

协议中还规定了SDHCSDXC这两类卡的传输速度应当大于等于2MB/sec


SD卡的可以看看自己SD卡上边有这些标号:这些标号代表此SD卡的传输速度!!

 

 

 

 

 

 

 

 

再介绍下SD卡控制器是如何识别SD卡大小的,

SD卡内部有一些关于SD卡自身信息的寄存器,关于SD卡大小的就是CSD Register,此寄存器共128位,最高两位(即:127:126两位)的值分为2个版本,如下:

注释:0代表此卡容量为标准容量。

  1代表此卡容量为大容量或扩展容量。

  23保留

 

下面介绍CSD寄存器中与容量有关的位,它的大小与这三个参数有关C_SIZE, C_SIZE_MULT and READ_BL_LEN,下图是寄存器中的位置:

 

下图是关于READ_BL_LEN寄存器位的说明:

注释:4个二进制位来表示最大读取数据的长度,

          1001b表示读取数据最大长度为29 Byte = 512Byte

  1010b表示读取数据最大长度为210 Byte= 1024Byte

  1011b表示读取数据最大长度为211 Byte=2048Byte

 

  其余为保留!!

注意:SD内存卡的WRITE_BL_LEN一直等于READ_BL_LEN的大小!!

 

下图是关于C_SIZE_MULT 寄存器为的说明:

 

      注释:3个二进制位来表示计算设备总大小的一个乘数。

  这个就不用我多解释了吧!!


C_SIZE占了12bit位,所以C_SIZE最大值为210  = 2048

 

    注意:这是CSD version 1.0版本,

CSD version 2.0版本的C_SIZE占了22bit位,它的最大值为2^22

这也就预示了SDSCSDHCSDXC的区别。

 

接着看内存卡容量是如何计算的,上公式:

memory capacity = BLOCKNR * BLOCK_LEN 

注释:BLOCKNR = (C_SIZE+1) * MULT 

      MULT = 2C_SIZE_MULT+2   (C_SIZE_MULT < 8) 

      BLOCK_LEN = 2READ_BL_LEN(READ_BL_LEN < 12)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多