SD2.0 Specification之功能切换

10 篇文章 0 订阅

本文章主要讲解关于SD2.0功能切换(CMD6)的内容,基础概念和其它内容请参考以下文章。
SD2.0 Specification简述

简述

SD卡将一些功能进行分组,归属于同一组的若干功能,在同一时刻只能有一个生效,也就是组内功能互斥,具体哪一个生效,可通过CMD6命令来指定,每组都会有一个默认生效的功能。断上电或者发送CMD0命令进行复位,都会导致默认功能生效。

目前SD2.0总规划是分成6个功能组,每组可包含16个功能。但当前只使用了2个功能组,其它组预留,方便以后升级扩展。

  • 组1是访问模式,只包含2个速度选项,一个是默认速度(12.5 MB/sec),一个是高速(25 MB/sec)。从SD1.10版本开始,SD卡支持高速模式,但上电后,是处于默认速度模式,需要通过切换使得SD卡支持高速模式,让主机能够以50MHz的速度访问。
  • 组2是命令系统,包含3个选项,分别是标准命令集、电子商务命令集、供应商特定命令集。该功能组涉及的命令包括CMD34-37, CMD50以及CMD57。在标准命令集下,SD卡不支持这些命令,视为非法命令;在供应商特定命令集下,这些命令的作用由SD卡供应商自行定义;在电子商务命令集下,这些命令按照《SD Specifications Part A1: Mobile Commerce Extension Specification》的规定实现相应功能。标准命令集是默认有的,其它两个是可选项。
    功能分组表

CMD6命令既可查询当前功能,也可切换功能,具体使用哪种,会在CMD6的参数里面用1 bit标记出来,让SD卡识别判断。

mode0:查询功能
mode1:切换功能

CMD6的通信过程类似于读命令,SD卡除了会在CMD线上回Response,还会在DAT线上返回512 bits的数据,这些数据表明各功能情况。在收到命令后,SD卡需要在100ms内返回数据,如果是使用切换功能(Mode1),则卡需要在发送完数据后的8个时钟周期内做好切换,主机也至少需要等待8个时钟周期才能使用新功能。

CMD6 Mode0
CMD6 Mode1

命令参数含义

CMD6参数含义
参数可用功能分配
如上所示,CMD6的32位参数中,[31]用于指定模式,[23:0]用于指定每个功能组要查询或者切换的功能,因为不支持功能组6~功能组3,所以这里对应的值通常是0或者Fh。

状态数据结构及含义

表1 状态数据结构
位置 描述 宽度
511:496 最大功耗 16
495:480 第6功能组信息,位被置1则表示支持该位所对应的功能 16
479:464 第5功能组信息,位被置1则表示支持该位所对应的功能 16
463:448 第4功能组信息,位被置1则表示支持该位所对应的功能 16
447:432 第3功能组信息,位被置1则表示支持该位所对应的功能 16
431:416 第2功能组信息,位被置1则表示支持该位所对应的功能 16
415:400 第1功能组信息,位被置1则表示支持该位所对应的功能 16
399:396 对应第6功能组。mode0:表示组内可切换的功能。
mode1:表示切换后的功能, 0xF表示设置出错了
(参考后续状态码的解释,可以更好理解)
4
395:392 对应第5功能组。mode0:表示组内可切换的功能。
mode1:表示切换后的功能, 0xF表示设置出错了
4
391:388 对应第4功能组。mode0:表示组内可切换的功能。
mode1:表示切换后的功能, 0xF表示设置出错了
4
387:384对应第3功能组。mode0:表示组内可切换的功能。
mode1:表示切换后的功能, 0xF表示设置出错了
4
383:380 对应第2功能组。mode0:表示组内可切换的功能。
mode1:表示切换后的功能, 0xF表示设置出错了
4
379:376 对应第1功能组。mode0:表示组内可切换的功能。
mode1:表示切换后的功能, 0xF表示设置出错了
4
375:368 该数据结构的版本
00h-->bits 511:376 都有定义
01h-->bits 511:272 都有定义
02h-FFh-->保留
8
367:352标记第6功能组的busy状态 。位被置1则表示对应的功能正处于busy状态, mode0和mode1都能得到这个信息 16
351:336标记第5功能组的busy状态 。位被置1则表示对应的功能正处于busy状态, mode0和mode1都能得到这个信息 16
335:320标记第4功能组的busy状态 。位被置1则表示对应的功能正处于busy状态, mode0和mode1都能得到这个信息 16
319:304标记第3功能组的busy状态 。位被置1则表示对应的功能正处于busy状态, mode0和mode1都能得到这个信息 16
303:288标记第2功能组的busy状态 。位被置1则表示对应的功能正处于busy状态, mode0和mode1都能得到这个信息 16
287:272标记第1功能组的busy状态 。位被置1则表示对应的功能正处于busy状态, mode0和mode1都能得到这个信息 16
271:0保留(全是0) 272

位[367:272] 表示相应功能busy与否,如果功能A处于busy状态,则不能切换到功能A,只有处于ready状态的功能才能切换。
命令系统功能组的busy状态

位[399:376] 表示的是Status Code,在mode0和mode1下有差别,以下表格将逐一解释。

支持的功能组在Mode0模式下的状态码
参数 Busy Status Status Code 含义
0 忽略0 Status Code为默认功能的编码,也就是0
支持的功能 Ready 等于参数 支持参数里面指定的功能并且现在处于ready状态可以切换,所以返回该功能的编码
Busy 当前正在使用的功能编码 支持参数里面指定的功能,但现在处于busy状态,无法切换,所以返回的是现在正在使用的功能编码
不支持的功能 忽略 Fh 不支持参数里面指定的功能,返回Fh值
Fh型 忽略 当前正在使用的功能编码 参数指定为Fh,返回的是现在正在使用的功能编码

支持的功能组在Mode1模式下的状态码
参数 Busy Status Status Code 含义
0 忽略0 默认功能一定是可切换的,所以返回0
支持的功能 Ready 等于参数 支持参数里面指定的功能并且现在处于ready状态,可以切换且切换成功,所以返回切换后的功能编码,也就是参数值
Busy 当前正在使用的功能编码 支持参数里面指定的功能,但现在处于busy状态,取消切换,所以返回的是现在正在使用的功能编码
不支持的功能 忽略 Fh 不支持参数里面指定的功能,返回Fh值。一个功能组切换出错,其它功能组的切换都会取消
Fh型 忽略 当前正在使用的功能编码 参数指定为Fh,表示维持原功能,返回的是现在正在使用的功能编码
不支持的功能组在Mode0和Mode1模式下的状态码
参数 Busy Status Status Code 含义
0 忽略0 总是0
Eh-1h 忽略 Fh 总是Fh
Fh型 忽略 0 总是0

功能切换流程

切换流程
整个功能切换流程如上图所示,可以简单理解为以下3步

  1. 查询支持哪些功能。
  2. 检查要切换的功能是否ready以及功耗情况。
  3. 开始切换。

Mode0(查询功能)步骤

  1. 配置命令参数
 a、配置为mode0模式。
 b、每个功能组选择一个要查询的功能编码。 配置成Fh,返回的则是当前在使用的功能编码,
 其它效果可参考前面的状态码描述表内容
  1. 获取512 bits状态数据
数据里面包含可支持的功能、功能的busy状态等等。

Mode1(切换功能)步骤

  1. 配置命令参数
 a、配置为mode1模式。
 b、每个功能组选择一个要切换的功能编码。 配置成Fh,返回的则是当前在使用的功能编码,
 其它效果可参考前面的状态码描述表内容
  1. 获取512 bits状态数据
可从得到数据里面判断是否切换成功

示例

查询示例
切换示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值