SD卡协议2.0

目录

1. 概述

1.1 总线接口 

2. 寄存器描述 

2.1 CID寄存器 

2.2 RCA 寄存器

2.3 DSR 寄存器

2.4 CSD 寄存器 

2.5 SCR 寄存器

2.6 OCR 寄存器 

3. 命令 

3.1 命令格式 

 3.2 命令分类

3.3 命令描述 

3.3.1 基本命令

 3.3.2 块读命令

 3.3.3 块写命令

 3.3.4 擦除命令

4. 响应 

4.1 R1(正常响应命令) 

4.2 R1b 

4.3 R2( CID 和 CSD 寄存器) 

4.4 R3( OCR 寄存器) 

4.5 R6 (RCA 响应)

4.6 R7 (卡接口状态) 

5. SD Bus

5.1 无响应或者无数据模式 

5.2  多块读模式

 5.3 多块写模式

 5.4 数据传输格式 

6. 工作流程

6.1 工作电压范围验证

6.2 卡识别过程 

1. 概述

SD卡是基于flash的存储卡。

SD卡和MMC卡的区别在于初始化过程不同。

SD卡的通信协议包括SD和SPI两类。 

1.1 总线接口 

针脚        1 		2		3		4		5		6		7		8		9
SDIO模式	CD/DAT3 CMD		VSS		VCC		CLK		VSS		DAT0	DAT1	DAT2
SPI模式		CS		MOSI	VSS 	VCC		CLK		VSS		MISO	NC		NC

2. 寄存器描述 

2.1 CID寄存器 

 CID寄存器是128位宽。它包含在卡片识别阶段使用的卡片识别信息。每个读/写(RW)卡应该有一个唯一的识别号码。

2.2 RCA 寄存器

 卡的相对地址,该16位卡地址寄存器保存了卡在识别过程中发布的地址。该地址用于在主机识别卡后,利用该地址与卡进行通信。该寄存器只有在SD模式下才有效。 

2.3 DSR 寄存器

它可以选择性地用于改善扩展工作条件下的总线性能(取决于总线长度、传输速率或卡数等参数)。CSD寄存器携带有关DSR寄存器使用情况的信息。DSR寄存器的默认值为Ox404。

2.4 CSD 寄存器 

2.5 SCR 寄存器

SD配置寄存器提供SD卡的特殊特性信息,其大小为64位。该寄存器由厂商编程,主机不能对它进行编程。 

2.6 OCR 寄存器 

保存有卡支持的工作电压,支持的话相应的位置 1,否则为 0 

3. 命令 

有四种命令定义来控制SD存储卡:

  • 广播命令(bc),无响应-广播特性仅在主机中的所有CMD行连接在一起时才会出现。如果它们是分开的,那么每一张牌将轮流单独接受它。
  • 广播命令与响应(bcr)响应同时来自所有卡-由于SD存储卡中没有Open Drain模式,这种类型的命令只能在所有CMD行分开时使用-命令将被每个卡单独接受和响应。
  • 寻址(点对点)命令(ac)在DAT上没有数据传输
  • 地址(点对点)数据传输命令(adtc)数据在DAT上传输

所有命令和响应都通过SD存储卡的CMD行发送。命令传输总是从与命令码字对应的位串的左位开始。

3.1 命令格式 

所有命令均遵守上图中的格式,总共 48 位.首先是 1 个起始位 0, 接着是 1 个方向位(主机发送位 1),6 个命令位(0-63),32 位参数(有些命令需要),CRC7 位校验,1 个停止位. 

 3.2 命令分类

        系统的命令集分为几类,如下表所示。每个类都支持一组卡片功能。表4-17根据卡支持的命令进行设置。一个CCC位对应一个支持的命令号,设置为1。cCC中包含强制命令的类总是被设置为1。具有特定功能的卡可能需要支持一些可选命令。例如,Combo Card应该支持CMD5。 

        等级0、2、4、5、7和8是强制性的,所有SD存储卡都应支持。其他类是可选的。支持的卡命令类(CCC)被编码为每个卡的卡特定数据(CSD)寄存器中的参数,为主机提供如何访问卡的信息。

3.3 命令描述 

3.3.1 基本命令

 3.3.2 块读命令

 3.3.3 块写命令

 3.3.4 擦除命令

4. 响应 

        所有响应都是通过 MCCMD 命令线 SDIO_CMD 来发送。响应传输始终从对应于响应代码字的位字符串的左侧位开始。代码长度取决于响应类型。

        响应始终从起始位(始终为 0)开始,后跟用于指示传输方向的位 (card = 0)。下表中标有 x的值表示变量项。除 R3 响应类型之外的所有响应均受 CRC 保护。每个命令代码字由结束位(始终为 1)来终止。

4.1 R1(正常响应命令) 

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

4.2 R1b 

        同 R1,并且有一个可选的繁忙信号在数据线上传输。根据卡在接收命令之前所处的状态,卡在接收到这些命令之后可能会变为繁忙状态。

4.3 R2( CID 和 CSD 寄存器) 

        代码长度 = 136 位。发送 CID 寄存器的内容以响应 CMD2 和 CMD10 命令。发送 CSD 寄存器的内容以响应 CMD9。仅传输 CID 和 CSD 的位 [127...1],这些寄存器的保留位 [0] 将被替换为响应的结束位。卡通过将 MCDAT 保持低电平来指示擦除正在进行中。实际擦除时间可能很长,主机可以发出 CMD7 来取消选择卡。 

4.4 R3( OCR 寄存器) 

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

4.5 R6 (RCA 响应)

         码长为48位。位45:40表示要响应的命令的索引——在这种情况下,它将是'000011'(与状态位中的位5一起表示= CMD3)。

4.6 R7 (卡接口状态) 

 码长为48位。卡支持电压信息由CMD8的响应发送。19:16表示卡支持的电压范围。接受供电电压的卡返回R7响应。在响应中,卡回显参数中设置的电压范围和校验模式。

5. SD Bus

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

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

5.1 无响应或者无数据模式 

5.2  多块读模式

 5.3 多块写模式

 5.4 数据传输格式 

6. 工作流程

6.1 工作电压范围验证

  1. 在主机与卡通信之前,主机不清楚卡支持的电压范围,并且卡也不知道是否支持主机提供的供电电压,主机会发送CMD0让SD卡处于IDLE State

  2. 为了验证SD卡接口的操作条件,主机通过发送SEND_IF_COND (CMD8)命令,去获取SD卡支持的工作电压范围

  3. SD卡通过检测CMD8的参数部分来检查主机使用的工作电压,主机通过分析卡CMD8的response参数来确认SD卡是否可以在所给电压下工作,如果SD卡可以在指定电压下工作,则它的response里面会包含cmd8参数里面提供的电压 ;如果不支持所给电压,则SD卡不会给出任何响应信息,并继续处于IDLE状态。

  4. SD_SEND_OP_COND (ACMD41)命令来识别或者拒绝不匹配host主机供电电压范围的卡。如果SD卡在主机规定的电压范围内不能实现数据传输,卡将放弃下一步的总线操作而进入不活动状态(Inactive State)。

  5. 主机发送ACMD41命令时,可以通过将该命令所带的OCR参数设置为0,用来查询卡支持的工作电压范围。当ACMD41被用于查询时,卡将忽略掉ACMD41里面的HCS参数。主机在查询到卡的工作电压后,也许会将该电压作为接下来发送的ACMD41命令的参数。

  6. 在整个初始化过程中,主机不允许改变正在操作的电压范围。

6.2 卡识别过程 

1. 激活总线。

2. SDIO 卡主机广播 SD_APP_OP_COND (ACMD41)

3. 卡以其运行条件寄存器的内容进行响应。

4. 不兼容的卡将被置于无效状态。

5. SDIO 卡主机向所有有效卡广播 ALL_SEND_CID (CMD2)

6. 这些卡将发回其唯一的卡识别号 (CID) 并进入识别状态。

7. SDIO 卡主机向某个地址的有效卡发出 SET_RELATIVE_ADDR (CMD3)。这一新地址称为相对卡地址 (RCA) ;它比 CID 更短,可对卡进行寻址。分配的卡变为待机状态。SDIO 卡主机可以重新发出此命令以更改 RCA。卡的 RCA 是最后分配的值。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值