• SD介绍


    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有如下三种

    SDCard

    功能上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.)

    具体可参考如下图

    SD 

    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编码格式如下

    CommandTokenFormat

    Response编码格式如下

    ResponseTokenFormat

    3.2 其他总线协议

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

    3.3 总线模式

    Bus Speed Modes

    相关名词含义如下

    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总线对应引脚如下图

        image

    各引脚定义如下图

    SDMemoryCardPadAssignment

    5. 寄存器

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

    SDMemoryCardRegisters

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

    6. UHS-I

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

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

    Command Sequence to Use 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状态之间的关系

    Card States vs. Operation Modes

    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
    Format of 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

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

    SDMemoryCardStateDiagram

    7.2.3 初始化和识别过程

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

    CardInitializationandIdentificationFlow

    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状态图如下所示

    image

    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>

  • 相关阅读:
    with一个对象,自动触发__enter__方法
    SQLAlchemy-Utils
    SQLAlchemy
    wtforms
    Python数据库连接池DBUtils(基于pymysql模块连接数据库)
    VMWare安装linux centos,安装中文输入法
    HttpServletRequest和ServletRequest的区别
    Java序列化
    mybatis循环取序列,值相同问题处理
    利用jdk将wsdl生成java代码
  • 原文地址:https://www.cnblogs.com/hzl6255/p/9595389.html
Copyright © 2020-2023  润新知