首页 > 代码库 > SD3.0协议解读一

SD3.0协议解读一

前言:

老衲我近期研究的是SD/MMC卡驱动,研究过的SD/MMC驱动的贫僧们都应该知道SD/MMC协议是必不可少的一部分,除非你不想研究透SD/MMC驱动,那你大可只研究driver/mmc/host目录下的文件即可。说到SD/MMC协议,网上一搜,SD3.0的协议只有英文版的资料,要想真正理解协议,英文水平差的贫僧就可吃力了,老衲英文水平实在是一般,但是网上对SD3.0协议的解读相关的中文资料实在是少的可怜。老衲怒想写写对SD3.0协议的理解,于是这一系列的SD3.0协议解读将会陆续问世.....

系统特征:

卡容量:

1.标准容量卡(SDSC):最大容量为2GB

2.高容量卡(SDHC):容量大小为2~32GB的卡

3.扩展容量卡(SDXC):容量大小为32GB~2TB的卡

问:这有什么用呢?在哪里会用到?

答:SD卡一般作为外置扩展容量,那么不同用户用的卡肯定不一样,那为了区分不同的卡,SD3.0协议中在初始化和识别卡的过程中会判断用户插入的卡是SDSC/SDHC/SDXC中的哪一种卡,比如在R3中的第38Bit的CCS = 0b时,表示插入的卡为SDSC卡,而CCS = 1b时,表示插入的卡为SDHC或者SDXC卡。不同的卡在Cammand和Response中有微小的区别,具体用到的时候再回头再说。

电压范围:

工作电压范围为:2.7~3.6V

问:告诉你电压范围有什么用呢?

答:卡的工作不是单边性的,它是和CPU理的卡控制器(host)之间互动的,那么host端也有自己支持的电压,card端也有自己支持的电压,而这二者支持的电压或许不一样。比如:host支持1.8~3.8V,而card支持2.7~3.6V,而协议就是完成取交集的作用,帮助host和card协调一个大家都支持的电压。

卡的属性:

卡可以设计为只读卡和可读/可写的卡

四线总线速率模式:


大家都应该看的懂什么意思吧?英文水平不至于比老衲还差吧?实在太差的就装个金山词霸呗~~这里要解释二个缩写,SDR的意思是Single Data Rate(单边数据采样,换句话说就是,要么上升沿采样,要么下降沿采样),DDR的意思是Double Data Rate(双边数据采样,换句话说,双边沿采样)。

注意了,这些总线速率模式是在四线的模式下才支持的,如果是1线的模式下,那可能就不一样了,而且并不是所有的host都支持所有的模式,比如并不是所有的CPU都支持SDR104模式,这个需要很强的IO输入输出能力,即便你的主频可以跑1.8GHz,但是到了SD卡这边的IO可不一定支持208MHz,这个具体要看CPU的spec。

好了,这篇就写这么多,注意了,老衲并不是单纯的将SD3.0的英文协议翻译过来,翻译只是对英文的解析,这并不是对协议的理解,这里是解读协议!