1. 介绍

MMC,MultiMediaCard,即多媒体卡,是一种非易失性存储器件,有7pin,目前已基本被SD卡代替

eMMC,Embedded Multimedia Card,内嵌式存储器,以BGA方式封装到SOC上;内置主控制器,以实现统一MMC接口

SD,Secure Digital Memory Card,即安全数码卡,新一代多媒体储存卡,高速,安全;它在MMC的基础上发展而来,大小和MMC卡差不多,比MMC卡厚了0.7mm,并且比MMC多了2pin作为数据线

SDIO,是在SD标准上定义了一种外设接口,它和SD卡规范间的一个重要区别是增加了低速标准

2. 分类

尺寸上区分SD有如下三种

功能上SD可分为

- SD Memory Card
- SDIO Card
- SD Combo Card (SD Memory + SDIO Functions)
- iSDIO Wireless LAN SD Card
- iSDIO TransferJet SD Card
- smart microSD (microSD with Secure Element or with or without NFC interface)

容量上可分为

- SDSC: Standard Capacity (     ~  2GB)
- SDHC: High Capacity ( 2GB ~ 32GB)
- SDXC: eXtended Capacity (32GB ~ 2TB)

总线接口上可分为

- Non UHS (Non Ultra High Speed) Card
- UHS-I Card
* UHS50: SDR50 is mandatory(50MB/Sec Max.)
* UHS104: SDR50 and SDR104 is mandatory(104MB/sec Max.)
- UHS-II Card
* UHS156 FD156 is mandatory (Full Duplex 156MB/sec Max.)
HD312 is optional (Half Duplex 312MB/sec Max.)

具体可参考如下图

3. 总线

SD使用的总线协议(Bus Protocol)包括

- SD Bus Protocol
- SPI Bus Protocol
- UHS-II Bus Protocol

3.1 SD总线协议

SD总线通信是基于起始位开始和停止位结束的指令和数据比特流,有三种可以在SD总线上传输的token

- Command:  由CMD线串行传输, 从Host发往Card, 开始某个操作
- Response: 由CMD线串行传输, 从Card发往Host, 用于回应Command
- Data: 通过data线传输, 可以双向传输

TIP: CMD线字节传输的顺序是MSB先传,LSB后传输

Command编码格式如下

Response编码格式如下

3.2 其他总线协议

SPI总线协议和UHS-II总线协议可参考规范

3.3 总线模式

相关名词含义如下

SDR:  Single Data Rate(Use rising clock edge)
DDR: Double Data Rate(Use rising and falling clock edge)
UHS: Ultra High Speed
LVDS: Low Voltage Differential Signaling
FD: Full Duplex
HD: Half Duplex

4. 引脚

SD总线对应引脚如下图

各引脚定义如下图

5. 寄存器

SD总线对应寄存器定义如下表格

TIP: UHS-II总线引脚和其新增寄存器此处不做介绍

6. UHS-I

UHS-I(Ultra High Speed Phase I)在4-bit SD总线上提供了高达104MB/sec的速度
UHS-I支持两种类型:  UHS50和UHS104

下图显示了使用UHS-I时的命令时序图

TIP: UHS-II内容此处不做介绍

7. 功能

7.1 概述

在Host和Card之间的通信是由Host控制

Host发送的命令(Commands)有两类

- 广播命令: Broadcast commands, 适用于所有的Cards, 部分命令需要响应
- 点对点命令: Addressed (point-to-point) commands, 该命令需要响应

Host和Card有两种操作模式(operation modes)

- 卡识别模式: Card Identification Mode, Host在reset后寻找新的Card时; Card在rest后至收到RCA命令(CMD3)之前
- 数据传输模式: Data Transfer Mode, Host识别了所有的Card后; Card在第一次发出RCA命令后

操作模式和Card状态之间的关系

7.2 识别模式

在该模式下, Host复位(reset)所有处于该模式的Card, 验证操作电压范围
识别Card并要求他们发布RCA; 每个卡在其自己的CMD线上单独完成此操作
该模式中的所有数据通信仅使用CMD线传输; 同时Card应以工作在特定时钟频率下

7.2.1 复位

GO_IDLE_STATE(CMD0)是一种软复位命令

CMD0会使处于Inactive State状态外的Card进入Idle State; 在被Host上电(Power-On)后, 则会使包括Inactive State状态中的所有的Card进入Idle State

在Power-On或者CMD0后, 所有Card的CMD线处于输入模式, 等待Command的到来; 初始化时Card会有一个默认RCA地址(0x0000), 时钟频率为400KHz

UHS-II模式下, RCA默认值并非0x0000, 而是由枚举来决定并保留其设备ID

7.2.2 运行条件验证

Host和Card通信开始时, Host不知道Card支持的电压, Card不知道Host支持供应的电压
Host发出具有指定电压的CMD0, 并假设Card可能支持该复位命令; 为了验证电压, 在V2.00规范中定义了CMD8

CMD8, 即SEND_IF_COND(Send Interface Condition Command)命令, 用于验证SD存储卡接口的工作状态

Card通过分析CMD8的参数(VHS)来检查操作条件的有效性; 主机则通过分析CMD8的响应来检查有效性
如果Card能够支持Command中的VHS字段指定的电压, 则在Response中回显电源电压和相关参数;
如果Card不能在指定电压下工作, 则不回应并保持在Idle State

在用ACMD41初始化SDHC和SDXC Card前, 必须发出CMD8; 收到CMD8使Card认识到主机支持V2.00或更高版本, 并且卡可以启用新功能

SD_SEND_OP_COND(ACMD41)旨在为Host提供识别和拒绝与Host所需VDD范围不匹配的Card的机制;
Host发送电压窗口作为操作数, 对于不能在指定范围内进行数据传输的Card应放弃进一步总线操作进入Inactive State, 随后定义OCR寄存器中的电平
注意: ACMD41是Application Specific Command, 因此在ACMD41之前需要发送APP_CMD(CMD55)

总体来说, 就是在Host发出CMD0复位Card后, Host应在ACMD41之前发出CMD8以重新初始化SD Card

下图显示了识别模式下状态图

7.2.3 初始化和识别过程

在总线激活后, Host开始Card初始化和识别过程, 其流程图如下:

HCS(Host Capacity Support)位为1表明Host支持SDHC或SDXC, 为0表明Host既不支持SDHC也不支持SDXC
CCS(Card Capacity Status)位为0表明Card为SDSC, 为1表明Card是SDHC或SDXC
OCR的busy位表示Card是否初始化完成, 0表明还在初始化中, 为1表明初始化完成

ACMD41用于初始化Card
CMD11, Voltage Switch Command, 用于电压切换
CMD19, Tuning Command, 用于调整采样点(???)
CMD2, ALL_SEND_CID, 用于获取Unique Card Identification(CID) Number
CMD3, SEND_RELATIVE_ADDR, 用于向Card获取RCA(Relative Card Address)

7.3 数据传输模式

数据传输模式下SD状态图如下所示

7.3.1 总线宽度

SD支持的总线宽度4 bit和1 bit, 在Power-Up和CMD0后默认总线宽度为1 bit模式
通过ACMD6可以改变总线宽度, 但需要满足下面两个条件

- Card处于tran state状态中
- Card没有被锁定

7.3.2 数据操作

数据操作包括读、写、擦除、锁定/解锁, 具体细节可参考规范

8. 命令

命令(Command)有4类

- Broadcast Commands(bc), No Response:                 广播类型的指令, 不需要有响应
- Broadcast Commands with Response(bcr): 广播类型的指令且需要响应
- Addressed(Point-To-Point) Commands(ac): 由Host发送到指定的卡设备, 没有数据的传输
- Address(Point-To-Point) Data Transfercommands(adtc): 由Host发送到指定的卡设备且伴随有数据传输

按照功能分为12类

- Class0: 卡的识别、初始化等基本命令集
- Class2: 读卡命令集
- Class4: 写卡命令集
- Class5: 擦除卡命令集
- Class6: 写保护命令集
- Class7:卡锁定/解锁命令集
- Class8:特定应用命令
- Class9:SDIO接口相关命令集

9. 回应

回应(Response)有5类

- R1: normal response command
- R2: CID, CSD register
- R3: OCR register
- R6: Published RCA response
- R7: Card interface condition

参考:
<SD 2.0协议标准完整版>
<SD Simplified Specifications>
<SD Standards and SD Technology>
<Physical Layer Simplified Specification>
<Understanding SD,SDIO and MMC Interface>
<Secure Digital Card Interface for the MSP430>

SD介绍的更多相关文章

  1. SD卡中FAT32文件格式快速入门(图文详细介绍)【转】

    本文转自:http://blog.csdn.net/mjx91282041/article/details/8904705 说明: MBR :Master Boot Record ( 主引导记录) D ...

  2. SD卡中FAT32文件格式快速入门(图文详细介绍)

    说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表 ...

  3. SD卡中FAT32文件格式高速入门(图文具体介绍)

    说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表 ...

  4. SD卡FAT32获得高速的文件格式(图文介绍)

    说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表 ...

  5. SD/MMC相关寄存器的介绍

    1.SD卡内部架构 在熟悉SD/MMC相关寄存器之前,我们先来看看SD卡的内部架构是怎么样的,如下图所示: 2.SD/MMC相关寄存器的介绍 从上图中总结出:SD卡内部有7个寄存器. 一.OCR,CI ...

  6. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(六)-FatFs使用的思路介绍

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  7. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(五)-文件管理初步介绍

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  8. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  9. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(四)-介绍库函数,获取一些SD卡的信息

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

随机推荐

  1. pidstat 命令详解

    pidstat 概述 pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu.内存.线程.设备IO等系统资源的占用情况.pidstat首次运行时显示自系统启动开始的各项统计信息, ...

  2. Mysql 语句 insert into 与 replace into 区别

    []insert into 与 replace into 区别 replace into 的运行与insert into 很相似.不同点: 若表中的一个旧记录与一个用于PRIMARY KEY 或 一个 ...

  3. 嵌入式02 STM32 实验11 NVIC和中断总结

    一.基础知识 1.cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断 2.STM32只有84个中断,包括16个内核中断和68个可屏蔽中断 3.STM32F103上只有60个 ...

  4. Django框架(十一)--cookie和session

    cookie和session组件 cookie 1.cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它 ...

  5. DS AVL树详解

    先说说二叉搜索树: 是有序的二叉树,根值>左节点值,右节点值>根值. 如果要查找某个值,二叉搜索树和二分查找一样,每进行一次值比较,就会减少一半的遍历区间. 但是,如果树插入的值一直递增/ ...

  6. go包管理

    摘自: http://blueskykong.com/2019/02/18/go-dep-1/ https://www.cnblogs.com/apocelipes/p/10295096.html#v ...

  7. [cf 1236 E] Alice and the Unfair Game

    题意: 给定一个长度为m的序列$A$,你有一个长度为n的棋盘,可以任选一个位置x作为起点. 在时刻$[1,m+1]$你可以向左或向右移动一格. 设时刻i你移动后所在的位置为$B_i$,你需要满足对于任 ...

  8. Compact Middle Packages

    idea工具进行Java开发,在项目视图,默认是将package层级以简洁显示的,如下图: 但有时,我们希望不要使用这种模式,比如:某个父包下,有一个子包,想在父包下,增加一个包,可是来时增加在子包下 ...

  9. WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里?

    原文:WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里? 在 WPF 程序中,我们有 Mouse.GetPosition(IInputElement relativeTo) 方法可以拿到鼠标 ...

  10. 【解决方案】文件上具有 Web 标记,请删除 Web 标记

    错误: 无法处理文件 Form1.resx,因为它位于 Internet 或受限区域中,或者文件上具有 Web 标记.要想处理这些文件,请删除 Web 标记.  解决方法: 文件-右键-属性 点击”解 ...