SD和SDIO

SD和SDIO

目录

1 SDIO简介

SD标准提供了极大的灵活性,包括将SD插槽用于存储卡以外的功能。SDIO卡是通过使用标准SD卡插槽为设备提供新功能来扩展设备功能的接口。新功能的部分列表包括:

  • GPS
  • Camera
  • Wi-Fi
  • Ethernet
  • Barcode readers
  • Bluetooth

SDIO(SD输入/输出)卡基于SD记忆卡并与之兼容。这种兼容性包括机械,电气,功率,信号和软件。SDIO卡的目的是为移动电子设备提供低功耗的高速数据I / O。

1.1 SDIO功能

  • 针对部分和固定应用
  • 最少或不需要修改SD物理总线
  • 对内存驱动程序软件的更改最少
  • 扩展的物理形式因子可用于特殊应用
  • 即插即用(PnP)支持
  • 多功能支持,包括多个I / O以及组合的I / O和内存
  • 一张卡最多支持7个I / O功能和一个内存。
  • 允许卡中断主机。
  • 工作电压范围:2.7-3.6V
  • 标准SDIO功能的应用规范。
  • 多种形式的事实:
    • 全尺寸SDIO
    • miniSDIO

2 SDIO信令定义

 

2.1 SDIO卡类型

  • 全速卡:
  • 在0-25MHz的完整时钟范围内支持SPI,1位SD和4位SD传输模式。
  • 超过100Mb /秒(10MB /秒)
  • 低速SDIO卡:
  • 仅需要SPI和1位SD传输模式。4位支持是可选的。
  • 支持0-400 KHz的完整时钟范围

2.2 SDIO卡模式

 

2.2.1 SPI(卡强制支持)

在此模式下,未定义存储器的引脚8用作中断引脚。

2.2.2 1位SD数据传输模式(必选卡)

在这种模式下,数据仅在DAT [0]引脚上传输。

2.2.3 4位SD数据传输模式(对于高速卡是必需的,对于低速是可选的)

在此模式下,数据在所有四个数据引脚(DAT [3:0])上传输。4位SD模式可提供最高100 Mb /秒的最高数据传输速度。

2.3信号引脚

signal_pins.jpg

3 SD总线协议

 

3.0.1 SD总线

SD总线上的通信基于命令和数据位流,这些命令和数据位流由起始位启动,并由停止位终止。

  • 命令:命令是启动操作的令牌。命令从主机发送到单个卡(寻址命令)或所有连接的卡(广播命令)。命令在CMD线上串行传输。
  • 响应:响应是令牌,令牌是从地址卡或从所有连接的卡(同步)发送到主机的,作为对先前收到的命令的答复。响应在CMD线上串行传输。
  • 数据:可以将数据从卡传输到主机,反之亦然。数据通过数据线传输。

command_response.png

卡寻址使用会话地址实现,在初始化阶段分配给卡。
与SD记忆卡之间的数据传输是分块进行的。数据块总是以CRC位为后。定义了单个和多个块操作。请注意,多块操作模式最好用于更快的写操作。当在CMD线上发出停止命令时,多块传输将终止。主机可以将数据传输配置为使用单个或多个数据线。

block_read_operation.png

块写操作使用DAT0数据线上的写操作持续时间的简单忙碌信号,而不管用于传输数据的数据线的数量如何。

block_write_operation.png

命令令牌具有以下编码方案:

command_token_format.png

每个命令令牌的前面都有一个开始位(0),后面是一个结束位(1)。总长度为48位。每个令牌均受CRC位保护,因此可以检测到传输错误,并且可以重复操作。

根据其内容,重操作令牌具有四种编码方案之一。令牌长度为48或136位。块数据的CRC保护算法是16位CCITT多项式。

response_token_format.png

在CMD线中,最高有效位(MSB)首先发送,最低有效位(LSB)最后发送。使用宽带总线选项时,数据一次传输4位。对于每条DAT线,都发送起始位和结束位以及CRC位。分别计算和检查每个DAT线的CRC位。卡的CRC状态响应和“忙”指示将仅通过DAT0发送到主机。

SD卡有两种类型的数据包格式。(1)常规数据(8位宽度):常规数据(8位宽度)首先以LSB(最低有效字节)发送,最后以MSB(最高有效字节)发送。但是在单个字节中,它是首先的MSB(最高有效位),最后是LSB(最低有效位)。(2)宽数据(SD存储器寄存器):宽数据从MSB位移出。

  • 常用数据的数据包格式(8位宽度)

data_packet_format.png

  • 宽数据的数据包格式(例如ACMD13)

data_packet_format_wide.png

3.1 SD存储卡功能说明

主机和卡之间的所有通信均由主机(主机)控制。主机发送两种类型的命令:广播命令和寻址(点对点)命令。

  • 广播命令

广播命令适用于所有卡。其中一些命令需要响应。

  • 寻址(点对点)命令

已寻址的命令将发送到已寻址的卡,并引起该卡的响应。

  • 卡识别模式

复位后,主机在总线上寻找新卡时,主机将处于卡识别模式。重置后,卡将处于此模式,直到收到SEND RCA命令(CMD3)。

  • 数据传输方式

卡首次发布RCA后将进入数据传输模式。主机在识别总线上的所有卡后将进入数据传输模式。

下表显示了操作模式和卡状态之间的依赖关系。

operation_modes.png

3.2卡识别模式

在卡识别模式下,主机会重置处于卡识别模式的所有卡,验证操作电压范围,识别卡,并要求它们发布相对卡地址(RCA)。对每个ard分别在其自己的CMD线上执行此操作。卡识别模式下的所有数据通信仅使用命令行(CMD)。在卡识别过程中,卡应以识别时钟速率的SD时钟频率运行。

3.2.1卡重置

GO IDLE STATE(CMD0)命令是软件重置命令,可将每张卡设置为空闲状态,而与当前卡状态无关。

3.2.2工作条件验证

主机发出一个指定电压的复位命令(CMD0),同时假定该卡可能支持该命令。为了验证电压,在物理层规范版本2.00中定义了以下新命令(CMD8)。如果条件
发送(CMD8)用于验证SD存储卡接口的运行状况。该卡通过分析CMD8的参数来检查操作条件的有效性,而主机通过分析CMD8的响应来检查有效性。所提供的电压由自变量中的VHS表示。该卡假定VHS中指定的电压为当前提供的电压。在任何给定时间,只能将VHS的1位设置为1。CRC和校验码都用于主机,以检查主机与卡之间通信的有效性。如果卡无法在提供的电压下运行,则它不会返回任何响应并保持空闲状态。必须先在第一个ACMD41之前发出CMD8,才能初始化大容量SD存储卡。

SD SEND OP COND(ACMD41)旨在为SD存储卡主机提供识别和拒绝与主机所需的V DD范围不匹配的卡的机制无法在指定范围内执行数据传输的卡应将其自身从进一步的总线操作中丢弃,并进入非活动状态注意,ACMD41是专用命令,因此APP CMD(CMD55)必须始终在ACMD41之前。

card_identification_mode.png

3.3卡的初始化和识别

通过设置操作条件和OCR中的HCS位, 初始化过程从SD SEND OP COND(ACMD41)开始HCS(主机容量支持)位设置为1表示主机支持大容量SD内存卡。HCS(主机容量支持)位设置为0表示主机不支持高容量SD存储卡。

card_initialization.png

3.4数据传输方式

在卡识别模式结束之前,主机应保持在OD自由状态,因为某些卡在卡识别模式期间可能会有工作频率限制。在数据传输模式下,主机可以在f PP频率范围内操作卡主机发出SEND CSD(CMD9)以获得卡特定数据(CSD寄存器),例如块长度,卡存储容量等。广播命令SET DSR(CMD4)配置所有已识别卡的驱动器级。它根据应用程序总线布局,总线上卡的数量和数据传输频率对它们的DSR寄存器进行编程。此时时钟频率也从f OD切换到f PPDSR命令是卡和主机的选项。

CMD7用于选择一张卡并将其置于传输状态。在给定的时间只能有一张卡处于转移状态。如果先前选择的卡处于“传输状态”,则它与主机的连接将被释放,它将移回“ 待机”状态当使用保留的相对卡地址“ 0x0000”发出CMD7时,所有卡都将返回到待机状态

data_transfer_mode.png

各种数据传输模式之间的关系总结如下。

  • 停止命令(CMD12)可以随时中止所有数据读取命令。数据传输

会终止,并且卡会返回到转让状态读取命令为:块读取(CMD17),多块读取(CMD18),发送写保护(CMD30),发送scr(ACMD51)和读取模式下的常规命令(CMD56)。

  • 停止命令(CMD12)可以随时中止所有数据写入命令。在通过CMD7取消选择卡之前,应停止写命令。写入命令为:块写入(CMD24和CMD25),程序CSD(CMD27),锁定/解锁命令(CMD42)和写入模式下的常规命令(CMD56)。
  • 一旦数据传输完成,卡将退出数据写入状态,并进入编程状态(传输成功)或传输状态(传输失败)。
  • 如果块写操作停止并且最后一个块的块长度和CRC有效,则将对数据进行编程。
  • 卡可以为块写提供缓冲。这意味着可以在编程前一个块的同时将下一个块发送到卡。

如果所有写缓冲区都已满,并且只要卡处于编程状态,DAT0线将保持低电平(忙)。

  • 没有用于写CSD,写保护和擦除的缓冲选项。这意味着当卡忙于服务这些命令中的任何一个时,将不接受其他数据传输命令。

只要卡处于忙状态且处于编程状态, DAT0线就会保持低电平实际上,如果卡的CMD和DAT0线保持分开,并且主机保持繁忙的DAT0线与(其他卡的)其他DAT0线断开连接,则主机可以在卡处于繁忙状态时访问其他卡。

  • 参数设置命令同时卡编程允许。

参数设置命令包括:​​设置块长度(CMD16),擦除块开始(CMD32)和擦除块结束(CMD33)。

  • 卡编程时不允许读取命令。
  • 使用CMD7 将另一张卡从待机状态转移传输状态不会终止擦除,并且

编程操作。卡将切换到“ 断开状态”,并释放DAT线。

  • 处于断开状态时,可以使用CMD7 拔出卡。在这种情况下,卡将进入编程状态并重新激活忙碌指示。
  • 重置卡(使用CMD0或CMD15)将终止所有挂起或激活的编程操作。这可能会破坏卡上的数据内容。这是房东的

防止这种情况的责任。

  • CMD34-37,CMD50和CMD57保留用于SD命令系统扩展。这些命令的状态转换在每个命令系统规范中定义。

3.5命令

 

3.5.1命令格式

所有命令的固定代码长度均为48位,在25 MHz时的传输时间为1.92 us,在50 MHz时的传输时间为0.96 us。

command_format.png

3.5.2详细命令说明

basic_command_1.png

basic_command_2.png

write_command.png

3.6回应

所有响应都通过命令行CMD发送。响应传输始终从与响应代码字对应的位串的左位开始。代码长度取决于响应类型。

SD存储卡有五种类型的响应。SDIO卡支持名为R4和R5的其他响应类型。

3.6.1 R1(正常响应命令):

代码长度为48位。位45:40指示要响应的命令的索引,该值被解释为二进制编码的数字(介于0和63之间)。卡的状态以32位编码。

response_r1.png

3.6.2 R1b

R1b与R1相同,在数据线上传输可选的忙信号。根据命令接收之前的状态,卡在接收到这些命令后可能会变得很忙。主机应检查响应是否忙碌。

3.6.3 R2(CID,CSD寄存器)

码长为136位。CID寄存器的内容作为对命令CMD2和CMD10的响应发送。CSD寄存器的内容作为对CMD9的响应发送。仅传送CID和CSD的位[127…1],这些调节器的保留位1替换为响应的结束位。

response_r2.png

3.6.4 R3(OCR寄存器)

代码长度为48位。OCR寄存器的内容作为对ACMD41的响应发送。

response_r3.png

3.6.5 R6(已发布的RCA响应)

代码长度为48位。比特45:40表示要响应的命令的索引-在这种情况下,它将是'000011'(与状态比特的比特5一起= CMD3)。参数字段的16个MSB位用于已发布的RCA编号。

response_r6.png

3.7 R7(卡接口状态)

代码长度为48位。卡支持电压信息通过CMD8的响应发送。位19-16指示卡支持的电压范围。接受提供的电压的卡返回R7响应。在响应中,卡将回显参数中设置的电压范围和检查模式。

response_r7.png

4 SDIO卡初始化

复位或上电后,卡上的所有I / O功能都将被禁用,并且卡的I / O部分不得执行任何操作,但CS = low的CMD5或CMD0除外。如果卡上安装了SD内存,则该内存应能对所有常规的强制性内存命令做出正常响应。

sdio_initialization.png

知道SDIO的主机应在加电或CMD52写入I / O复位后,发送CMD5 arg = 0作为初始化序列的一部分。发送没有在这两个复位条件之一之前的CMD5 arg = 0不会导致主机或卡进入初始化序列。

card_initialization_flow.png

card_initialization_flow_1.png

4.1 IO SEND OP COND命令(CMD5)

图3-4显示了IO SEND OP COND命令(CMD5)的格式用于SDIO卡的CMD5的功能类似于用于SD存储卡的ACMD41的操作。用于查询I / O卡所需的电压范围。对CMD5的正常响应是SD或SPI格式的R4。SD模式下的R4响应如图3-5所示,SPI版本如图3-6所示。

cmd5.png

4.2 IO SNED OP COND响应(R4)

接收到CMD5的SDIO卡应以SDIO唯一响应R4进行响应。SD和SPI模式的R4格式为:

r4.png

SD记忆体规格的5个差异

 

5.1不支持的SD内存命令

仅SDIO卡或Combo卡的I / O部分不支持SD存储卡所需的几个命令。这些命令中的某些命令在SDIO卡中没有用,例如擦除命令,因此在SDIO中不受支持。此外,SD存储卡中的一些命令与卡的SDIO部分一起使用时具有不同的命令。

unsupported_sd_memory_commands.png unsupported_sd_memory_commands_1.png

5.2修改的R6响应

存储卡对CMD3的正常响应是R6。

r6_response_to_cmd3.png

5.3新的I / O读/写命令

 

5.3.1 IO RW DIRECT命令(CMD52)

IO RW DIRECT是在任何I / O功能(包括公共I / O区域(CIA))中访问总共128K寄存器空间内的单个寄存器的最简单方法。该命令仅使用1个命令/响应对读取或写入1个字节。通常的用途是初始化寄存器或监视I / O功能的状态值。该命令是读取或写入单个I / O寄存器的最快方法,因为它仅需要一个sigle命令/响应pari。

cmd52.png

5.3.2 IO RW 直接响应(R5)

SDIO卡对CMD52的响应应采用以下两种格式之一。卡与主机之间的通信是1位还是4位SD模式。

  1. CDM52响应(SD模式)

    cmd52_response1.png

    cmd52_response2.png

  2. R5,IO RW DIRECT响应(SPI模式)

    cmd52_response3.png

5.3.3 IO RW 扩展命令(CMD53)

为了使用单个命令读取和写入多个I / O寄存器,定义了一个新命令IO RW EXTENDED 。该命令允许通过单个命令读取或写入大量I / O寄存器。

cmd53.png

cmd53_1.png

6 SDIO卡内部操作

 

6.1概述

每个SDIO卡可能具有1到7个功能以及一个内置的存储功能。

6.2中断

所有SDIO主机都应支持硬件中断。

6.3 SDIO固定内部映射

SDIO卡具有固定的内部寄存器空间和功能独特的区域。固定区域包含有关卡以及固定位置中某些强制性和可选寄存器的信息。固定位置允许任何主机获取有关卡的信息,并以简单的方式执行诸如启用之类的简单操作。功能唯一区域是每个功能区域,由标准SDIO功能的应用程序规范或非标准功能的销售商定义。

sdio_internal_map.png

6.4通用I / O区域(CIA)

通用I / O区域(CIA)必须在所有SDIO卡上实现。主机通过对功能0的I / O读取和写入来访问CIA。提供CIA中的寄存器以启用/禁用I / O功能的操作,控制中断的产生以及可选地加载软件支持I / O功能。CIA中的寄存器还提供有关功能可用性和要求的信息。CIA内支持三种不同的寄存器结构。他们是:

  1. 卡通用控制寄存器(CCCR)
  2. 功能基本寄存器(FBR)
  3. 卡信息结构(CIS)
 
posted @ 2020-06-01 16:49  蒲城小农  阅读(4071)  评论(0编辑  收藏  举报