SD卡协议规范学习
首先,本博文遵照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)
注意:上述数据算出的大小不包含保护区域的大小。
最新文章
- java多线程 生产者消费者模式
- tiltShift.js - CSS3 滤镜实现移轴镜头效果
- MAC 系统下使用 Sublime Text 2 直接编译运行 java 代码
- 文件输入流 FileInputStream类 文件输出流FileOutputStream ---转载
- iOS使用AVFoundation实现二维码扫描
- c语言与c++基础知识
- C++ primer 中文第三版 阅读笔记 第八章
- 使用POI插件,提取导出excel的工具类
- HDU4893:Wow! Such Sequence!(段树lazy)
- Linux简介与厂商版本下
- Python 练习——计算1-2+3-4...+99
- PHP的会话控制
- Java WebSocket 线程安全的保证
- 微信小程序精品demo
- (1.9)SQL优化——mysql导入导出优化
- HttpWebRequest 跳转后(301,302)ResponseUri乱码问题
- 在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效
- Linux下安装配置 Jdk1.6+Tomcat6+Apache2.2.x+jk_mod1.2 详解
- resin WED服务器初用遇到的问题和解决方法 java.lang.RuntimeException: java.net.SocketException: Unrecognized Windows Socke ts error: 0: JVM_Bind
- 前端开发 - HTML
热门文章
- Object的增。删。查。改。遍历
- ecmall 点滴记录
- [C++]KMP算法实现
- 《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽
- [转载]CTreeCtrl 和 CListCtrl 控件(VC_MFC)
- jquery解决onmouseover和onmouseout合用的bug问题
- CentOS yum安装配置lnmp服务器(Nginx+PHP+MySQL)
- springFramework 源码学习之源码下载与编译
- C++小知识之Vector排序
- e3.tree参考手册