STM32F4X SDIO(三) SD卡命令与响应

news2024/10/5 13:53:07

STM32F4X SDIO(三)SD卡命令与响应

  • SD卡命令
    • 命令类型
    • 通用命令与特殊命令
    • 命令的格式
    • SD卡命令列表
      • 通用命令
        • 基础命令
        • 读操作命令
        • 写操作命令
        • 写保护命令
        • 擦除命令
        • 加锁命令
        • 特定应用命令
      • 特殊命令
    • SD卡响应列表
      • 短响应
        • R1响应(正常响应命令)
        • R1b响应
        • R3响应(OCR 寄存器)
        • R6响应6(发布的 RCA 寄存器响应)
        • R7响应(卡接口条件)
      • 长响应
        • R2响应(CID,CSD 寄存器)

上一节说过SD卡的操作都是基于命令与响应,写操作有写操作的命令,读操作有读操作的命令,这节就来简单看一下SD卡都有哪些命令跟响应。

SD卡命令

命令类型

SD卡定义了4种命令类型,分别是以下几种

  • 广播命令,没有响应(bc)
  • 广播命令,有响应(bcr)
  • 寻址命令,点对点(ac)
  • 寻址数据传输命令(adtc)

通用命令与特殊命令

SD卡的命令可以分为两种使用模式,分别是通用命令特殊命令

  • 通用命令:通用是所有SD卡都可以使用的命令,没有什么特殊的使用要求,直接把命令发给SD卡即可
  • 特殊命令:SD卡制造商使用的的特定命令,在使用特殊命令前,需要先发送CMD55给SD卡,代表从CMD55开始的下一条命令为特殊命令。CMD55只对紧接着的第一条命令有效,如果CMD55的下一条命令为特殊命令,则执行其特殊功能,如果CMD55的下一条命令为通用命令,则执行通用命令。

命令的格式

在这里插入图片描述

  • 所有的命令长度都是48位
  • bit47为命令的起始位,低电平有效
  • bit46命令的传输位,高电平有效,代表从控制器到SD卡
  • bit45~bit40为命令号,代表是第几个命令
  • bit39~bit8为参数,有些命令需要参数,比如传输SD卡地址
  • bit7~bit1为命令的CRC7校验码,保证命令的准确性
  • bit0为结束位,高电平有效
  • 所有命令都是通过CMD信号线传输

SD卡命令列表

通用命令

基础命令
命令序号类型参数响应缩写描述
CMD0 bc[31:0]填充位XGO_IDLE_STATE复位所有的卡到 idle 状态
CMD1 保留
CMD2 bcr[31:0]填充位R2ALL_SEND_CID通知所有卡通过CMD线返回CID值
CMD3 bcr[31:0]填充位R6SEND_RELATIVE_ADDR通知所有卡发布新 RCA
CMD4 bc[31:16]DSR [15:0]填充位XSET_DSR编程所有卡的 DSR
CMD5 保留
CMD7 ac[31:16]RCA [15:0]填充位R1bSELECT/DESELECT_CARD选择或取消RCA卡
CMD8 bcr[31:12]保留位 [11:8]VHS [7:0]检查模式R7SEND_IF_COND发送 SD 卡接口条件,包含了主机支持 的电压信息,并询问卡是否支持。保 留位应该设置为 0
CMD9 ac[31:16]RCA [15:0]填充位R2SEND_CSD选定的卡发通过命令线送卡的CSD
CMD10 ac[31:16]RCA [15:0]填充位R2SEND_CID选定的卡发通过命令线送卡的CID
CMD11 保留
CMD12 ac[31:16]RCA [15:0]填充位R1bSTOP_TRANSMISSION强制卡停止传输
CMD13 ac[31:16]RCA [15:0]填充位R1SEND_STATUS选定的卡发送状态寄存器
CMD14 保留
CMD15 ac[31:16]RCA [15:0]填充位XGO_INACTIVE_STATE使选定的卡进入“inactive”状态
读操作命令
命令序号类型参数响应缩写描述
CMD16 ac[31:0]块长度R1SET_BLOCKLEN对于标准SD卡,设置块长度,对于高容量SD卡,块长度固定为512字节
CMD17 adtc[31:0]数据地址R1READ_SINGLE_BLOCK对于标准SD卡,这个命令读取SET_BLOCK_LEN 命令①所规定的长度的一个块。对于高容量卡来说,直接读取 512字节的块
CMD18adtc[31:0]数据地址R1READ_MULTIPLE_BLOCK连续数据块传输(从卡到主机),直到被STOP_TRANSMISSION 命令停止。块长度和 CMD17 一样
CMD19 保留
CMD20保留
CMD21 保留
CMD22 保留
CMD23 保留
写操作命令
命令序号类型参数响应缩写描述
CMD16 ac[31:0]块长度R1SET_BLOCKLEN对于标准SD卡,设置块长度,对于高容量SD卡,块长度固定为512字节
CMD24 adtc[31:0]数据地址R1WRITE_BLOCK标准卡来说,写 SET_BLOCKLEN命令定义的长度的块。高容量卡,写 512 字节长度的块,不管 SET_BLOCKEN
CMD25adtc[31:0]数据地址R1WRITE_MILTIPLE_BLOCK连 续 写 数 据 块 直 到STOP_TRANSMISSION 命令被发送。块长度和 WRITE_BLOCK 一致
CMD26 保留
CMD27adtc[31:0]填充位R1PROGRAM_CSD对 CSD 的可编程位进行编程
写保护命令
命令序号类型参数响应缩写描述
CMD28ac[31:0]数据地址R1bSET_WRITE_PROT如果卡支持写保护功能,这个命 令设置地址组中的写保护位,高容量卡不支持这个功能
CMD29 adtc[31:0]数据地址R1bCLEAR_WRITE_PROT如果卡支持写保护,这个命令清除寻址组的写保护位。高容量卡不支持这个功能
CMD30adtc[31:0]写保护数据地址R1SED_WRITE_PROT如果卡支持写保护,这个命令要求卡返回写保护位的状态。高容量卡不支持这个功能
CMD31 保留
擦除命令
命令序号类型参数响应缩写描述
CMD32ac[31:0]数据地址R1ERASE_WR_BLK_START设置要擦除的第一个块的地址
CMD33 ac[31:0]数据地址R1ERASE_WR_BLK_END设置要擦除的最后一个块的地址
CMD38ac[31:0]填充位R1bERASE擦除所有预先选定的写块
CMD39保留
CMD40保留
CMD41保留
加锁命令
命令序号类型参数响应缩写描述
CMD16 ac[31:0]块长度R1SET_BLOCKLEN对于标准SD卡,设置块长度,对于高容量SD卡,块长度固定为512字节
CMD42adct[31:0]保留全 0R1LOCK_UNLOCK用来设置/复位密码,或者加锁/解锁卡。数据块的长度是通过 SET_BLOCK_LEN 命令设置的。
CMD43~CMD49保留
CMD51保留
特定应用命令
命令序号类型参数响应缩写描述
CMD55 ac[31:16]RCA [15:0]填充位R1APP_CMD告诉卡,下个命令是特定应用命令,而不是标准 命令
CMD56adct[31:1]填充位 [0]读/写R1GEN_CMD通用命令,或者特定应用命令中,用于传输一个数据块到卡,或者卡获取一个数据块。通用卡数据块长度由SET_BLOCK_LEN命令设置。高容量卡为固定512Byte。[Bit0]1为读数据,0表示写数据到卡。
CMD58~CMD63保留

特殊命令

命令序号类型参数响应缩写描述
ACMD6ac[31:2]填充位 [1:0]总线宽度R1SET_BUS_WIDTH 定义数据总线的宽度(‘00’=1bit,‘10’=4bit)。接受的数据总线定义在 SCR 寄存器中
ACMD13adct[31:0]填充位R1SD_STATUS发送 SD 状态
ACMD17保留
ACMD18保留
ACMD19保留
ACMD21保留
ACMD22adct[31:0]填充位R1SEND_NUM_WR_BLOCK发送已经写入的块(没有错误的)的数 目。响应 32bit + CRC 数据块。如果 WRITE_BL_PARTIAL=0,ACMD22 的单位总是 512Byte。如果=1,ACMD22 的单位就是写命令使用的单块的长度
ACMD23ac[32:23]填充位 [22:0]块数R1SET_WR_BLK_ERASE_COUNT设置需要擦除的块的数目(提高速度)。 默认值=1
ACMD24保留
ACMD25保留
ACMD26保留
ACMD38保留
ACMD39保留
ACMD40保留
ACMD41bcr[31]保留位 [30]HCS(OCR30) [29:24]保留位 [23:0]Vdd 电 压 (OCR[23:0])R3SD_SEND_OP_COND发送卡的支持信息(HCS),并要求卡通 过命令线返回 OCR 寄存器内容。当卡收到 SEND_IF_COND 时,HCS 是有效的。保留位设为 0。CCS位对应OCR[30]
ACMD42ac[31:1]填充位 [0]设置卡检测R1SET_CLR_CARD_DETECT1-connect,0-discon,50k 欧姆上拉电阻,DAT3/CD
ACMD43保留
ACMD49保留
ACMD51adct[31:0]填充位R1SEND_SCR读取配置寄存器 SCR

注意:数据地址在标准卡中是以字节为单位的,而高容量卡(SDHC)中,是以块(512byte)为单位的

SD卡响应列表

SD卡的响应分为两种,分别是短响应和长响应,其中短响应长度为48bit,长响应长度为136bit,所有响应都是通过CMD信号线发送。

短响应

R1响应(正常响应命令)

在这里插入图片描述
R1响应会返回32位的卡状态。

R1b响应

在这里插入图片描述
R1b响应跟R1响应差不多,但是R1b响应在数据线上会有busy信号,主机在发送完数据后,应该检查 busy 信号。

R3响应(OCR 寄存器)

在这里插入图片描述
R3响应会返回32位的OCR寄存器

R6响应6(发布的 RCA 寄存器响应)

在这里插入图片描述
[45:40]是响应的命令号,这里就是‘000011’,即 CMD3。参数中的16 位MSB 用于产生 RCA 号。

R7响应(卡接口条件)

在这里插入图片描述
卡支持的电压信息通过 CMD8 的响应发送。Bit[19:16]表明卡支持的电压范围。卡接受提供的电压范围就返回 R7 响应。卡会在响应的参数中返回电压范围和检查模式。

长响应

R2响应(CID,CSD 寄存器)

在这里插入图片描述
R2响应会返回SD卡饿CID或者CSD寄存器的值

以上就是SD卡常用的命令和响应,当然这些命令和响应不用全部记住,只需要在使用的时候再查找就行。

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

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

相关文章

15 结构型模式-外观模式

1 外观模式介绍 2 外观模式原理 public class SubSystemA {public void methodA(){//业务代码} }public class SubSystemB {public void methodB(){} }public class SubSystemC {public void methodC(){} }public class Facade {private SubSystemA obj1 new SubSystemA();pri…

2023年中国无人机环保监测产业链及市场规模分析[图]

无人机环保监测是无人机应用场景的重要组成部分,无人机环保监测为通过无人机飞行平台,搭载环保监测仪器进行大气环境、水环境、生态环境监测的一种环境监测模式。 无人机环保监测分类 资料来源:共研产业咨询(共研网) …

高中数学之向量

1.向量基本概念 1.既有大小又有方向的量叫做向量 2.只有大小没有方向的量叫做数量(比如年龄15) 3.具有方向的线段叫做有向线段,假设A为起点,B为终点,我们就说线段AB具有方向。向量可以用有向线段 A B → \overrightarr…

哈工大发布大模型思维链推理综述:200+文献全面解析大语言模型思维链推理最新进展...

©PaperWeekly 原创 作者 | 初征,陈靖昌,刘铭,秦兵,刘挺 单位 | 哈尔滨工业大学 研究方向 | 自然语言处理 论文标题: A Survey of Chain of Thought Reasoning: Advances, Frontiers and Future 论文链接&#xff…

【PC】2023年10月商店更新-闲游盒

亲爱的玩家朋友们,大家好! 欢迎大家来到2023年第十次商店更新! 万圣节即将到来,为了让大家可以在万圣节盛装出席,我们在10月商店更新中准备了邪恶诅咒,PGC 2023的专属宝物,以及RASH悲喜强势回归…

CentOS7安装配置MobaXterm使用换源处理虚拟机拍照备份与还原Linux常用命令

目录 一、centos7安装与配置 1.1 参考安装步骤 1.2 安装配置CentOS 7实操 1.2.1 配置虚拟机 1.2.2 登录CenOS 1.2.3 检测是否可联网 1.2.4 查看、设置IP地址 1.2.5 使用vi编辑ifcfg-ens33 1.2.6 重启网络服务 1.3 MobaXterm使用 1.3.1 官方下载地址 1.3.2 MobaXte…

数据结构——双向链表的实现

一、双向链表的结构 注意:双向链表又称带头双向循环链表 这⾥的“带头”跟前⾯我们说的“头节点”是两个概念,实际前⾯的在单链表阶段称呼不严 谨,但是为了同学们更好的理解就直接称为单链表的头节点。 带头链表⾥的头节点,实际…

计算机毕业设计选题推荐-美术馆微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

260亿!每部手机赚数千元,手机行业太赚钱了,难怪都想做手机

日前H公司公布了前三季度的业绩,净利润大幅增长两倍多,而营收仅增长2.4%,这显示出三季度仅是多卖了数百万部高端手机,利润就飙升了数百亿元,平均每部手机赚数千元。 该公司公布的业绩显示,前三季度营收增长…

【波形图】将波形图或波形图表的数据导出至文件

LabVIEW 提供了几种方法使用户能够轻松地以不同格式类型保存波形图、波形图形或二维图片。 在本文中,您将了解如何将波形图、波形图表或二维图片另存为图像的三种不同方法。 您可以使用以下三种方法将波形图、波形图表或二维图片保存为图像文件:​​​​…

1.3 安全攻击

思维导图: 1.3 安全攻击 定义: 安全攻击可以分为被动攻击和主动攻击。被动攻击:尝试获取或利用系统信息但不影响系统资源。主动攻击:尝试修改系统资源或影响系统的正常运行。 1.3.1 被动攻击 特点: 主要对传输数据…

【软件安装环境配置】VsCode安装和配置各种环境(保姆级)

一、VsCode 下载 1.官网下载 网站:Visual Studio Code - Code Editing. Redefined 打开网站 点击Download 根据操作系统(macOS、Windows、Linux)和版本下载 下载到本地 注意: 若下载很慢,或者下着下着就暂停了 可…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远程桌面屏幕监控

红队专题 招募六边形战士队员[24]屏幕监控-(1)屏幕查看与控制技术的讲解图像压缩算法图像数据转换其他 [25]---屏幕监控(2)查看屏幕的实现7.1 屏幕抓图显示7.7 完善主控端 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 [24]屏幕监控-(1…

2023/10/29总结

总结 踩坑记录 写代码的时候遇到了一个错误大概是这样的 io.jsonwebtoken.security.WeakKeyException: The signing keys size is 48 bits which is not secure enough for the HS256 algorithm. The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used…

【设计模式】第14节:结构型模式之“代理模式”

一、简介 代理模式(Proxy Design Pattern)在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。 二、优点 关注点分离访问控制延迟实例化远程访问缓存增加附加功能 三、应用场景 访问控…

metaRTC集成flutter ui demo编译指南

概要 Flutter是由Google开发的开源UI工具包,用于构建跨平台应用程序,支持linux/windows/mac/android/ios等操作系统。 metaRTC新增flutter demo,支持linux/windows/mac/android/ios操作系统,此demo在ubuntu桌面环境下测试成功。…

Linux常用命令——chmod命令

在线Linux命令查询工具 chmod 用来变更文件或目录的权限 补充说明 chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件…

http协议/https协议

http协议(HyperText Transfer Protocol - 超文本传输协议): 在网络层中被广为人知的协议,想必没有学过计算机的人都知道http是有关网站,网络的,那么究竟其中有哪些东西是需要计算机相关人员掌握的&#xff…

2023年CCF中国开源大会“大模型时代的智能化软件工程新范式”分论坛成功举行...

2023年CCF中国开源大会“大模型时代的智能化软件工程新范式”分论坛于10月21日在湖南长沙成功举行。本次论坛聚焦大模型时代的智能化软件新生态以及相应的软件工程新范式,邀请了多位来自学术界和工业界的专家进行分享和交流,共设置了5个主题报告和1个Pan…