首先,本博文遵照SD卡协议3.01版本,最旧协议版本为1.10,但是协议是向下兼容的。SD卡Physical 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

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

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

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

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

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

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

2、3保留

下面介绍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占了12个bit位,所以C_SIZE最大值为210  = 2048。

注意:这是CSD version 1.0版本,

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

这也就预示了SDSC与SDHC、SDXC的区别。

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

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)

注意:上述数据算出的大小不包含保护区域的大小。

最新文章

  1. java多线程 生产者消费者模式
  2. tiltShift.js - CSS3 滤镜实现移轴镜头效果
  3. MAC 系统下使用 Sublime Text 2 直接编译运行 java 代码
  4. 文件输入流 FileInputStream类 文件输出流FileOutputStream ---转载
  5. iOS使用AVFoundation实现二维码扫描
  6. c语言与c++基础知识
  7. C++ primer 中文第三版 阅读笔记 第八章
  8. 使用POI插件,提取导出excel的工具类
  9. HDU4893:Wow! Such Sequence!(段树lazy)
  10. Linux简介与厂商版本下
  11. Python 练习——计算1-2+3-4...+99
  12. PHP的会话控制
  13. Java WebSocket 线程安全的保证
  14. 微信小程序精品demo
  15. (1.9)SQL优化——mysql导入导出优化
  16. HttpWebRequest 跳转后(301,302)ResponseUri乱码问题
  17. 在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效
  18. Linux下安装配置 Jdk1.6+Tomcat6+Apache2.2.x+jk_mod1.2 详解
  19. resin WED服务器初用遇到的问题和解决方法 java.lang.RuntimeException: java.net.SocketException: Unrecognized Windows Socke ts error: 0: JVM_Bind
  20. 前端开发 - HTML

热门文章

  1. Object的增。删。查。改。遍历
  2. ecmall 点滴记录
  3. [C++]KMP算法实现
  4. 《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽
  5. [转载]CTreeCtrl 和 CListCtrl 控件(VC_MFC)
  6. jquery解决onmouseover和onmouseout合用的bug问题
  7. CentOS yum安装配置lnmp服务器(Nginx+PHP+MySQL)
  8. springFramework 源码学习之源码下载与编译
  9. C++小知识之Vector排序
  10. e3.tree参考手册