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. 【Spring Cloud学习之三】负载均衡

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 Spring Cloud 1.2 主流的负载均衡技术有nginx.LVS.HAproxy.F5,Spring Clou ...

  2. 【Spring Boot学习之十二】mybatis3 分页打印sql日志

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 参考: mybatis手册 Mybatis的插件 PageHelper 分页查询使用方法MyBatis中Like语句使 ...

  3. perl oneline

    可参考博客:http://blog.csdn.net/carzyer/article/details/5117429 Perl常用命令行参数概览 -e 指定字符串以作为脚本(多个字符串迭加)执行 -M ...

  4. SQlL Server ----- 通过年月进行查询

    websit  中的代码. 不修改 对控件进行修改,展示年月 WdatePicker({ dateFmt: 'yyyy-MM', isShowToday: false, isShowClear: fa ...

  5. Navicat 创建oracle表空间、新建用户、授权

    1.利用数据库管理员账号:SYSTEM,再配合数据库管理口令,连接Oracle数据库. 登录界面: 2.创建表空间文件 进入如下界面 进入如下界面 弹出如下界面,输入表空间名称 最终结果:  2 .新 ...

  6. JSON学习(二)

    首先,定义一个实体类Person: import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; public ...

  7. 嵌入式02 STM32 实验05 蜂鸣器

    蜂鸣器:是一种一体化结构的电子讯响器.主要分为分压式蜂鸣器和电磁式蜂鸣器两种类型. 一.有源/无源蜂鸣器(不是指是否带电源,而是有没有自带震荡电路) 1.有源蜂鸣器:有源蜂鸣器自带震荡电路,一通电就会 ...

  8. vue的特殊指令 v-if v-once v-bind v-for v-on v-model

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. [python 2.x] xml.etree.ElementTree module

    XML 文件:xmlparse.xml <?xml version="1.0" encoding="UTF-8" standalone="no& ...

  10. (九)pdf的构成之文件体(content属性)

    content属性简单当成一个流来处理 流内部属一个画笔,下面介绍画笔属性 文本对象: BT    文本开始 ET    文本结束   文本状态:       Tc    字符之间的距离       ...