SD2.0 Specification之功能切换

news2024/9/28 22:36:43

文章目录

  • 简述
  • 命令参数含义
  • 状态数据结构及含义
  • 功能切换流程
    • Mode0(查询功能)步骤
    • Mode1(切换功能)步骤
    • 示例

本文章主要讲解关于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状态数据
可从得到数据里面判断是否切换成功

示例

查询示例
切换示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫之requests(二)

Python爬虫之requests(二) 前面演示了requests模块的四种请求方式。接下来再来演示下综合的练习。 一、requests模块综合练习 需求:爬取搜狗知乎某一个词条对应的某个范围页码表示的页面数据。 点开搜狗首页,有一个知乎的版块…

基于小波变换与稀疏表示优化的RIE数据深度学习预测模型

加入深度实战社区:www.zzgcz.com,免费学习所有深度学习实战项目。 1. 项目简介 本项目旨在通过深度学习模型进行RSOP(Remote Sensing Observation Prediction)的数据预测。RSOP数据是基于远程传感技术采集的多维信息,广泛应用于…

volatile关键字最全原理剖析

介绍 volatile是轻量级的同步机制,volatile可以用来解决可见性和有序性问题,但不保证原子性。 volatile的作用: 保证了不同线程对共享变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是…

Android开发中的ViewModel

在Android应用开发中,ViewModel作为架构组件之一,扮演着管理UI数据和生命周期的关键角色。本文将深入探讨ViewModel如何感知View的生命周期,并分析其内核原理,帮助开发者更好地利用ViewModel优化应用架构。 一、ViewModel简介 在…

isilon存储node节点更换你必须知道的知识

最近一直想要写一篇文章是关于EMC Isilon 存储控制器方面的,是什么力量促使我要写这个文章呢?作为一个卖存储备件的资深搬运工,最近遇到了一些关于控制器方面的备件询价、备件更换方面的问题,每次都要花大量的时间给客户解释。解释…

分库分表常见算法,每个高级开发必知必会?

目录标题 分库分表常见算法哈希取模算法容量(时间)范围算法范围 取模算法 总结 分库分表是一种数据库设计技术,其目的是为了提高数据库的性能和扩展性。它通过将数据库的表拆分到多个数据库中来实现这一目的。 分库分表常见算法 分库分表分…

鸿蒙媒体开发系列12——音频输入设备管理(AudioRoutingManager)

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。 有时设备同时连接多个音频输入设备,需要指定音频输入设备进行音频录制&a…

HarmonyOs 学会查看官方文档实现菜单框

1. 学会查看官方文档 HarmonyOS跟上网上的视频学习一段时间后,基本也就入门了,但是有一些操作网上没有找到合适教学的视频,这时,大家就需要养成参考官方文档的习惯了,因为官方的开发文档是我们学习深度任何一门语言或…

OpenCV透视变换:原理、应用与实现

在图像处理与计算机视觉领域,透视变换(Perspective Transformation)是一种强大的工具,它模拟了人眼或相机镜头观看三维空间物体时的透视效果,从而改变图像的视角和形状。本文将详细介绍透视变换的原理、应用场景以及如…

Java_集合_单列集合Collection

第一章.Collection接口 Collection<E> 集合名 new 实现类对象<E>() 常用方法: boolean add(E e) : 将给定的元素添加到当前集合中(我们一般调add时,不用boolean接收,因为add一定会成功) boolean addAll(Collection<? extends E> c) :将另一个集合元素添…

SPI驱动学习七(SPI_Slave_Mode驱动程序框架)

目录 一、SPI_Slave_Mode驱动程序框架1. Master和Slave模式差别1.1 主设备 (Master)1.2 从设备 (Slave)1.3 示例 2. SPI传输概述2.1 数据组织方式2.2 SPI控制器数据结构 3. SPI Slave Mode数据传输过程4. 如何编写程序4.1 设备树4.2 内核相关4.3 简单的示例代码4.3.1 master和s…

测试用例的进阶二

1. 按开发阶段划分 1.1 测试金字塔 从上到下&#xff0c;对于测试人员代码就是要求越来越低&#xff1b; 从下到上&#xff0c;越来越靠近用户&#xff1b; 从下到上&#xff0c;定位问题的成本越来越高&#xff1b; 1.2 单元测试(Unit Testing) 单元测试是对软件组成单元进…

如何使用ssm实现北关村基本办公管理系统的设计与实现

TOC ssm721北关村基本办公管理系统的设计与实现jsp 第一章 绪论 1.1 选题背景 目前整个社会发展的速度&#xff0c;严重依赖于互联网&#xff0c;如果没有了互联网的存在&#xff0c;市场可能会一蹶不振&#xff0c;严重影响经济的发展水平&#xff0c;影响人们的生活质量。…

终端AI大变身:大模型普惠时代的“魔法钥匙”

当AI遇见你的手机&#xff0c;日常秒变科幻片&#xff01; 嘿&#xff0c;小伙伴们&#xff01;想象一下&#xff0c;你早晨醒来&#xff0c;不是先摸手机看时间&#xff0c;而是手机先跟你打招呼&#xff1a;“早安&#xff0c;主人&#xff0c;今天天气不错&#xff0c;适合晨…

支付宝远程收款跳转码接口api之工作证跳转收款码

1、在制作工作证跳转收款之前需要在支付宝上开通工作证 2、然后获取支付宝账户信息、收款码等信息 3、将所需信息填入如下代码之中 const axios require(axios); const authCode 从客户端接收到的授权码;axios({method: post,url: https://openapi.alipay.com/alipay.syst…

前缀和(包括一维和二维)

前缀和 什么是前缀和&#xff1f;用在哪里&#xff1f;有什么好处&#xff1f; 前缀和是在反复求一个序列中不同区间处的元素之和。 例如有以下一个数组&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5 我们要求a[2]~a[4]&#xff08;不包括a[2]&#xff0…

五、人物持有武器攻击

一、手部添加预制体&#xff08;武器&#xff09; 1、骨骼&#xff08;手&#xff09; 由于人物模型有骨骼和动画&#xff0c;在添加预制体后&#xff0c;会抓握武器 建一个预制体在手部位置 二、添加武器拖尾 下载拖尾特效 赋值特效中的代码&#xff0c;直接使用 清空里面…

计算机毕业设计 助农产品采购平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

代码随想录算法训练营第60天 | 1、城市间货物运输I,2、城市间货物运输II,3、城市间货物运输III

目录 1、城市间货物运输I 2、城市间货物运输II 3、城市间货物运输III 1、城市间货物运输I 题目描述 某国为促进城市间经济交流&#xff0c;决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市&#xff0c;通过道路网络连接&#xff0c;网络中的道路仅允许从某个城市单…

opencv:实现图像的自动裁剪与优化

随着计算机视觉技术的发展&#xff0c;图像处理已成为一项重要的技能。今天&#xff0c;我们将探讨如何使用Python中的OpenCV库来实现对图像的自动裁剪以及一些基本的图像优化技巧。我们的目标是对一张发票图片进行处理&#xff0c;使其更加清晰且便于阅读。 准备工作 首先&a…