前言
在前面的文章中,介绍了基于SD卡的一些基本但是却比较重要的信息。后来在实践过程中,发现还遗忘了一个重要的知识点,那便是协议兼容问题。比如,UHS-II类型的设备是在V4.0.1协议才新支持的功能,如果我们使用按照V3.0.1协议开发的驱动去操作UHS-II设备,那么就可能产生不可预知的错误。所以,本人对V1.0.1协议作了一个简单的学习,从头了解整个SD卡的发展历程。本文也算是对基础知识的一个回顾。如有疏漏或错误之处,还望各位读者可以及时指正,我将在之后的文章中进行纠正。
SD卡系统的架构
使用SD卡时,仅支持**一主(控制器)多从(SD卡)**模式。
SD卡支持的通讯协议
SD卡支持两种通讯协议:SD协议和SPI协议
最高时钟频率
在V1.0.1协议中,SD卡支持的最高时钟频率为25MHz
SD卡与MMC卡的区别
两者的主要区别是不同的初始化流程。比如:通常使用ACMD41命令初始化SD卡,而使用CMD1命令初始化MMC。
SD协议与SPI协议主要区别
① 在SD协议下,会经历一个卡识别状态,用于识别总线上的SD卡。另外,会具有相应的寻址方式,用于指定特定的一张SD卡,但是在SPI协议中,没有上述两个过程,取而代之的是CS片选引脚。因为每个SD卡的CS引脚都是独立存在的,所以当某个CS引脚有效时,便意味着该SD卡被选中了。
② 在SPI协议下,没有广播命令的概念,同样是被选中的SD卡才能接收到主机发送的命令。
③ SD协议中,对命令分为有响应命令或者无响应命令,但是在SPI模式下,会对所有的命令进行响应。
SD协议下的总线连接示意图
由上图可知,同一个SD总线上的SD卡,数据线和命令线都是独立的,而其他的引脚都都是可以共用的。
SPI协议下的总线连接示意图
由上图可知,在SPI总线上,只有CS片选引脚是独立的,其它引脚都可以是共用的。
SPI协议下的CS片选引脚
当SD卡在传输数据(包括命令、数据、响应…)时,CS引脚必须保证处于选通状态,即低电平状态(一般而言都是低电平有效),但是当SD卡处于内部编程的过程中时,该CS引脚的状态可以不受限制。
总结
本文以V1.0.1协议为基础,对SD卡的一些重要内容再次进行总结。如果不足之处,还望大家能够体谅。