原创 【博客大赛】SD卡协议规范学习(一)

2013-1-20 13:59 3685 19 22 分类: MCU/ 嵌入式

首先,本博文遵照SD卡协议3.01版本,最旧协议版本为1.10,但是协议是向下兼容的。SDPhysical Layer Simplified Specification Version 3.01英文协议规范可以去官方下载地址为:https://www.sdcard.org/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卡的传输速度!!

 

20130111221535912001.png

20130111221654993001.png

 

 

 

 

 

 

 

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

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

20130111221734752001.png

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

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

  23保留

 

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

20130111222344501001.png

20130111222437338001.png

20130111222459750001.png

 

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

20130111222541307001.png

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

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

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

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

 

  其余为保留!!

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

 

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

 

20130111222638686001.png

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

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

 

关于计算SD卡容量,放在SD卡协议规范学习(二)中。

今天就写到这里,回头继续更新关于SD协议方面的知识,本文如有翻译不当或讲解错误的地方,欢迎大家指出,各种拍砖,本人不胜感激!!

 

如若转载请加上本博客地址。

文章评论3条评论)

登录后参与讨论

用户377235 2013-1-27 03:10

博主赶紧更新啊!

用户416608 2013-1-20 13:57

好的!!

用户377235 2013-1-17 21:36

最近也在看这方面协议,希望博主继续更新!!
相关推荐阅读
用户416608 2013-07-05 15:36
学习tcp ip协议的总结:
假如说,本地pc,访问百度网站,经过路由转发出去。   则数据包的第一次转发时的目的mac地址为路由的mac地址,而不是百度的mac地址。   刚开始看tcp...
用户416608 2013-07-01 16:15
[博客大赛]ubuntu-10.04中安装lunch
在编译android源码时,用到lunch这个软件,可是ubuntu软件源中没有这个软件。   所以需要手动安装,步骤如下:     在ubuntu 10.04中安装lunch...
用户416608 2013-05-23 10:24
最近在看fat32文件系统做点笔记
最近在学fat32文件系统是如何组织硬盘上的数据存储的问题。   关于数据编码格式,fat32文件系统中的无论是中文字符还是英文字符都是以unicode编码的形式存在。   但如果...
用户416608 2013-01-23 09:46
【博客大赛】一个空格惹的祸
写了个读文件的应用程序,可是open一直报错,跳了快一个小时,才知道是这的原因!!   程序是这样的:   char *file = "/tmp/hello.c ": int ...
用户416608 2013-01-11 22:41
【博客大赛】SD卡协议规范学习(二)
接着上篇博文,【博客大赛】SD卡协议规范学习(一)   C_SIZE占了12个bit位,所以C_SIZE最大值为210  = 2048。<?xml:namespace prefix = "o" ...
我要评论
3
19
关闭 站长推荐上一条 /2 下一条