SD、SDIO和MMC接口基础和规范介绍

您所在的位置:网站首页 redmibook14dc接口 SD、SDIO和MMC接口基础和规范介绍

SD、SDIO和MMC接口基础和规范介绍

2024-07-09 12:13| 来源: 网络整理| 查看: 265

在MMC规范发展的过程中出现了很多的名词,如SDHC、SDIO、SDXC等,每次看到这些不同的规范都有点懵,也很容易搞混,所以本篇文章就来介绍一下MMC规范发展过程中出现的一些新的规范,并详细地理解一下SD和SDIO。

文章目录 1 MMC规范发展历史2 基本SD协议3 SD和MMC的不同规范版本4 SD速度等级5 SD主机控制器6 SD卡内部设计

1 MMC规范发展历史

1997年,MMC(Multimedia Card)即多媒体存储卡的规范发布,它是一种非易失性存储卡规范,定义了卡的形态、尺寸、容量、电气特性和通讯协议等内容。基于不同的需求的考量,如物理尺寸、容量、位宽、频率等,在MMC的规范的基础上又出现了很多不同的规范:

(1)多媒体存储方向:由MMC进化出了MMCPlus(更快)、Secure MMC(更安全)、MMCmobile和MMCmicro(更小)、MiCard(高容量)和eMMC(嵌入式)等标准。其中eMMC为BGA封装,可以直接焊接在板子上。

(2)安全和存储方向:由MMC先进化出了SD/SDSC(Secure Digital Standard Capacity),这类标准的特点就是安全。在继承了SDSC的一些优点的同时,基于存储容量、尺寸和使用范围等方面进行了优化和改进,又诞生了miniSD和microSD/TF(更小)、SDHC(高容量)、micro SDHC(更小)、SDXC(更快更大)等标准。

(3)接口方向:在SD/SDSC的基础上还诞生了另外一个分支,就是SDIO,目的是为移动电子设备提供低功耗的高速数据I/O。

下面是不同接口规范的封装引脚和大小对比图,当SD接口要和MMC兼容时,8和9脚留空即可。 在这里插入图片描述

2 基本SD协议

SD卡遵循两个协议:SD协议和SPI协议。

SPI和MMC、SD的关系 SPI硬件接口非常简单,但信号是单向的,且只支持1个数据位。最初,SD和MMC总线都支持SPI模式,这样只要带有SPI外设的CPU就可以与SD卡通信。对于SD主机来说,SPI模式并不是必需的,因为任何设计用于SD总线的主机应该实现SD总线协议,而不是性能较低的SPI协议。从MMC版本4.3开始,不再强制要求支持兼容SPI接口。但是SD卡仍然需要支持兼容SPI接口。

比如对于microSD来说,就有以下两种引脚映射: (1)SD模式

Pin #Pin NameSignal Function1DAT2Data Bit 22CD/DAT3Card Detect/Data Bit 33CMDCommand Line4VddSupply Voltage 2.7V/3.6V5CLKClock6VssGround7DAT0Data Bit 08DAT1Data Bit 1

(2)SPI模式

Pin #Pin NameSignal Function1NCNo Connect2/CSChip Select3DIMaster Out/Slave In(MOSI)4VddSupply Voltage 2.7V/3.6V5CLKClock6VssGround7DOMaster In/Slave Out(MISO)8RSVReserved

(1)SD总线通过双向CMD和DATA引脚串行地传输信息。在CMD引脚上,每个命令包含48位的命令信息,而一个命令信息包括命令索引、参数和CRC校验位。命令始终由主机发送,响应也通过CMD引脚由SD发送。大多数响应包也是48位长。主机始终是命令发起者,传输命令给SD。 在这里插入图片描述

(2)并非所有命令都有数据传输(DATA引脚),只有读写命令会伴随数据传输。数据包的单位称为块,主机可以定义不同的块大小,一般为512字节。数据可以使用1个或4个DATA引脚进行传输。每个数据包后面跟着16位的CRC数据。

(3)SD卡在状态机下运行,每个状态都有不同的命令集,只有在特定的状态下才能执行特定的指令。主机可以通过CMD引脚更改SD状态,比如上电后发送初始化序列改变SD状态,直到SD卡准备好传输数据。

(4)命令和数据信号通过时钟信号同步,复位后,主机使用最低的400KHz时钟速率与SD卡通信。SD卡内部寄存器可以向主机提供与SD卡容量等相关的信息。

3 SD和MMC的不同规范版本

1、SD SD的第一个版本在2000年发布,它支持25MHz的总线频率和最大2GB的容量,数据可以在SD模式(可选择1bit或4bit)和向下兼容的SPI模式(1bit)下进行传输。

SD的第二个版本在2006年发布,它增加了SDHC(SD High Capacity)规范,即增加了存储容量最高可达32GB。这次修订版本的变化并不大,但是SDHC的诞生未未来的规范的修订奠定了基础。这次修订占据了图片和视频存储应用的市场,即使在后面的SD 3.0版本出来后,SDHC规范依旧有很大的市场。

SD3.0规范增加了一个新的容量标准SDXC,最多支持2T的存储空间,同时还根据UHS-I(Ultra High Speed)规范增加了数据的带宽。使用相同的4bit DATA接口,UHS-I支持最大单数据速率达到208MHz,可以实现104MB/s的数据传输速率;它支持的最大双数据传输速率为50MHz,即50MB/s的数据传输速率。

SD4.0规范增加了UHS-II速度版本,继续提高数据传输速率。

2、MMC MMC规范最早由西门子和闪迪于1996年发布。该规范在2008年之前由MMC协会控制,之后由JEDEC控制规范和新版本的发布。1999年发布了2.0版本,随后于2001年发布了3.0版本。SD 1.0规范与MMC 2.11版本正式兼容。2003年的4.0版本引入了四位和八位数据宽度。八位数据宽度使MMC在相同速度下的数据带宽比SD翻倍。然而,许多主机不支持八位数据宽度,四位数据宽度仍然是与可移动存储卡通信最广泛使用的数据宽度。

JEDEC接管MMC规范后,引入了嵌入式MMC(eMMC)作为4.3版本。eMMC适用于嵌入式应用,除了机械形状之外,eMMC和MMC有相同的特性和功能。从4.4版本起,还支持引导模式,允许将设备用作BootROM(上电运行的程序)。接着还引入了DDR数据速率,以最高带宽为50MHz运行的8位DDR,传输速率达到100MB/s,与以4倍时钟速率运行的SD卡相同。

以下表格总结了不同版本的两种总线的数据速率。

RevisionMax Clock FrequencyData RateSD 1.0 to 1.0125MHz12.5MB/sSD 1.10 to 2.050MHz25MB/sSD 3.0208MHz104MB/sMMC 1.0 to 320MHz2.5MB/sMMC 4.0 to 4.350MHz50MB/sMMC 4.450MHz100MB/s 4 SD速度等级

为了向用户提供SD卡可用性能的真实度量,从SD规范2.0开始定义了几个速度等级:

Speed ClassDecriptionRevisionClass 0这类卡没有说明其性能,包括所有SD规范2.0之前的卡1.0Class 2速度大于等于2MB/s2.0Class 4速度大于等于4MB/s2.0Class 6速度大于等于6MB/s2.0Class 10速度大于等于10MB/s3.0 5 SD主机控制器

SD主机控制器是硬件逻辑,它构成了主机CPU和SD总线之间的桥梁。SD总线规范的主机规范部分对主机控制器设计提供了非常严格的定义。从CPU的角度来看,主机控制器包含一个256字节的寄存器集,它映射到系统的内存或IO空间。 在这里插入图片描述

与SD通信时,建议打开DMA,能大大减轻CPU的运算

SD总线上的事务是由软件读取或写入该寄存器集发起的。通过此寄存器设置,用户程序可以:

检测SD卡的插入或拔出打开/关闭SD卡电源启用/禁用/控制SD时钟速度定义命令参数和发送命令到SD卡接收来自SD卡的命令响应从SD卡读取和写入数据暂停、恢复和终止数据事务中断CPU的不同类型的事件,如命令完成,CRC错误等

主机系统负责为SD卡提供电源和时钟信号,SD规范中定义了卡检测机制,允许热插拔,即在插卡时产生中断,在产生该中断时,CPU再给SD卡上电。上电后,用户程序可能会使能默认的400KHz的时钟信号给SD卡,完成初始化序列,接着用户程序可以通过SD卡的寄存器获得SD卡的容量和带宽等信息,以重新配置时钟频率。

CPU可以在无操作时停止时钟信号或关闭SD卡的电源通路,以节省电源。SD卡时钟信号不能使用锁相环(PLL)。

6 SD卡内部设计

在这里插入图片描述 上图展示了一个典型的SD卡设计。它包括了SD存储和SDIO功能。在SD存储的实现中,实际上就是一个NAND Flash,内部一般有一个MPU来管理这些内存。典型的SDIO实现包括SD接口和IO功能逻辑模块(IO Logic),IO逻辑模块内部也可能会有MPU。

图中的SD控制器SD Controller)完成所有物理和数据链路层的功能,如命令解码、响应生成、CRC、状态管理和预定义的SD寄存器集,许多SD命令可以直接由SD控制器模块处理,而对内存空间的访问将被从SD控制器转发到卡内其他模块。

由于NAND Flash很容易有坏块,所以访问NAND的内存时一般还会经过一个用于处理坏块和其它事物的本地处理器。SD控制器不直接访问NAND闪存芯片,它可以访问“处理器”中的**影子内存(存储一些重要的数据,如设备状态)**进行数据传输,或者中断本地处理器,然后进行所需的数据传输。

当MPU接收到中断时,它会通过查询SD控制器模块来获取来自SD总线的数据请求。如果是读请求,它会从NAND中检索数据并将读取的数据传送到SD控制器模块。如果是写入请求,它会从SD控制器模块中检索数据并将其写到NAND中。

对于SDIO设备,根据正在实现的IO逻辑的特性,当从SD总线接收到用户数据传输请求时,SD控制器核心可以直接访问IO逻辑模块,或者使用中断方法来请求IO逻辑模块的服务。实际上SD规范并没有规定SD卡的内部架构,设计者可以根据应用选择最合适的架构。通常在SD存储卡中使用中断方式访问,而在SDIO中则采用直接访问方式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3