【SDIO】SD2.0协议分析总结(三)-- SD卡相关命令介绍

相关文章

《【SDIO】SDIO、SD卡、FatFs文件系统相关文章索引》

1.命令类型

SD 命令有 4 种类型:

  • 无响应广播命令(bc),发送到所有卡,不返回任务响应;
  • 带响应广播命令(bcr),发送到所有卡,同时接收来自所有卡响应;
  • 寻址命令(ac),发送到选定卡,DAT 线无数据传输;
  • 寻址数据传输命令(adtc),发送到选定卡,DAT线有数据传输。

另外,SD卡主机模块系统旨在为各种应用程序类型提供一个标准接口。在此环境中,需要有特定的客户/应用程序功能。为实现这些功能,在标准中定义了种类型的通用命令特定应用命令(ACMD)常规命令(GEN_CMD)。要使用 SD卡制造商特定的 ACMD命令如ACMD6,需要在发送该命令之前无发送 CMD55 命令,告知 SD卡接下来的命令为特定应用命令。CMD55 命令只对紧接的第一个命令有效,SD卡如果检测到 CMD55 之后的第一条命令为 ACMD 则执行其特定应用功能,如果检测发现不是 ACMD 命令,则执行标准命令。

2.命令描述

SD 卡系统的命令被分为多个类,每个类支持一种“卡的功能设置”。下面表格列举了SD 卡部分命令信息,更多详细信息可以参考《 Physical Layer Specification Version 2.00》文件说明,表中填充位保留位都必须被设置为 0

命令
序号

参数
缩写描述
基本命令(Class 0)
CMD0bc[31:0]填充位-GO_IDLE_STATE复位所有的卡到 idle 状态。
CMD2bcr[31:0]填充位R2ALL_SEND_CID通知所有卡通过 CMD 线返回 CID值。
CMD3bcr[31:0]填充位R6SEND_RELATIVE_ADDR通知所有卡发布新 RCA。
CMD4bc[31:16]DSR[15:0]填充位-SET_DSR编程所有卡的 DSR。
CMD7ac[31:16]RCA[15:0]填充位R1bSELECT/DESELECT_CARD选择/取消选择 RCA 地址卡。
CMD8bcr[31:12] 保 留 位[11:8]VHS[7:0]检查模式R7SEND_IF_COND发送 SD 卡接口条件,包含主机支持的电压信息,并询问卡是否支持。
CMD9ac[31:16]RCA[15:0]填充位R2SEND_CSD选定卡通过 CMD 线发送 CSD 内容
CMD10ac[31:16]RCA[15:0]填充位R2SEND_CID选定卡通过 CMD 线发送 CID 内容。
CMD12ac[31:0]填充位R1bSTOP_TRANSMISSION强制卡停止传输
CMD13ac[31:16]RCA[15:0]填充位R1SEND_STATUS选定卡通过 CMD 线发送它状态寄存器
CMD15ac[31:16]RCA[15:0]填充位-GO_INACTIVE_STATE使选定卡进入“inactive”状态
面向块的读操作 (Class 2)
CMD16ac[31:0]块长度R1SET_BLOCK_LEN对于标准 SD 卡,设置块命令的长度,对于 SDHC 卡块命令长度固定为512 字节。
CMD17adtc[31:0]数据地址R1READ_SINGLE_BLOCK对于标准卡,读取 SEL_BLOCK_LEN长度字节的块;对于 SDHC 卡,读取512 字节的块。
CMD18adtc[31:0]数据地址R1READ_MULTIPLE_BLOCK连续从 SD 卡读取数据块,直到被CMD12 中断。块长度同 CMD17。
面向块的写操作 (Class 4)
CMD24adtc[31:0]数据地址R1WRITE_BLOCK对于标准卡,写入 SEL_BLOCK_LEN长度字节的块;对于 SDHC 卡,写入512 字节的块。
CMD25adtc[31:0]数据地址R1WRITE_MILTIPLE_BLOCK连续向 SD 卡写入数据块,直到被CMD12 中断。每块长度同 CMD17。
CMD27adtc[31:0]填充位R1PROGRAM_CSD对 CSD 的可编程位进行编程
擦除命令 (Class 5)
CMD32ac[31:0]数据地址R1ERASE_WR_BLK_START设置擦除的起始块地址
CMD33ac[31:0]数据地址 R1ERASE_WR_BLK_END设置擦除的结束块地址
CMD38ac[31:0]填充位R1bERASE擦除预先选定的块
加锁命令(Class 7)
CMD42adtc[31:0]保留R1LOCK_UNLOCK加锁/解锁 SD 卡
特定应用命令 (Class 8)
CMD55ac[31:16]RCA[15:0]填充位R1APP_CMD指定下个命令为特定应用命令,不是标准命令
CMD56adtc[31:1]填充位[0]读/写R1GEN_CMD通用命令,或者特定应用命令中,用于传输一个数据块,最低位为 1表示读数据,为 0 表示写数据
SD 卡特定应用命令
ACMD6ac[31:2] 填 充 位[1:0]总线宽度R1SET_BUS_WIDTH定 义 数 据 总 线 宽 度('00'=1bit,'10'=4bit)。
ACMD13adtc[31:0]填充位R1SD_STATUS发送 SD 状态
ACMD41Bcr[32] 保 留 位[30]HCS(OCR[30]) [29:24]保留位[23:0]VDD 电 压(OCR[23:0])R3SD_SEND_OP_COND主机要求卡发送它的支持信息(HCS)和 OCR 寄存器内容。
ACMD51adtc[31:0]填充位R1SEND_SCR读取配置寄存器 SCR

3. 命令响应

响应由 SD卡向主机发出,部分命令要求 SD卡作出响应,这些响应多用于反馈 SD卡的状态。SDIO 总共有 7 个响应类型(代号:R1~R7),其中 SD卡没有 R4、R5类型响应。特定的命令对应有特定的响应类型,比如当主机发送 CMD3命令时,可以得到响应 R6。与命令一样,SD卡的响应也是通过 CMD线连续传输的。根据响应内容大小可以分为短响应和长响应。短响应是 48bit 长度,只有 R2 类型是长响应,其长度为 136bit。各个类型响应具体情况如下表所示。

除了 R3类型之外,其他响应都使用 CRC7 校验来校验,对于 R2类型是使用 CID 和CSD寄存器内部 CRC7。

R1( 正常响应命令)
描述起始位传输位命令号卡状态CRC7终止位
Bit4746[45:40][39:8] [7:1] 0
位宽11632 7 1
"0""0"xxx “1”
备注如果有传输到卡的数据,那么在数据线可能有 busy 信号
R2(CID,CSD 寄存器)
描述起始位传输位保留[127:1] 终止位
Bit135134[133:128]1270
位宽116x1
"0""0""111111"CID 或者 CSD 寄存器[127:1]位的值“1”
备注CID 寄存器内容作为 CMD2 和 CMD10 响应,CSD 寄存器内容作为 CMD9 响应。
R3(OCR 寄存器)
描述起始位传输位保留OCR 寄存器保留终止位
Bit4746[45:40][39:8] [7:1] 0
位宽11632 7 1
"0""0""111111"x"1111111" “1”
备注OCR 寄存器的值作为 ACMD41 的响应
R6( 发布的 A RCA 寄存器响应)
描述起始位传输位CMD3RCA 寄存器卡状态位CRC7终止位
Bit4746[45:40][39:8] [7:1] 0
位宽11616167 1
"0""0""000011"xxx“1”
备注专用于命令 CMD3 的响应
R7( 发布的 A RCA 寄存器响应)
描述起始位传输位CMD8保留接收电压检测模式CRC7终止位
Bit4746[45:40][39:20] [19:16] [15:8] [7:1] 0
位宽11620487 1
"0""0""001000""00000h"xxx“1”
备注专用于命令 CMD8 的响应,返回卡支持电压范围和检测模式

4. 参考资料

SDIO参考的资料如下:
在这里插入图片描述
下载地址如下:
https://download.csdn.net/download/ZHONGCAI0901/14975835

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SDIO(Secure Digital Input/Output)是一种用于移动设备的接口标准,包括SDIO 2.0和SDIO 3.0两个版本。SDIO 2.0和SDIO 3.0是在接口速度和功能上有所不同。 首先,SDIO 2.0是较早的版本,于2006年发布。它支持最高50MHz的时钟频率,可以提供最大25MB/s的传输速度。SDIO 2.0接口可以与各种外设进行连接,如Wi-Fi适配器、蓝牙模块、GPS模块等。它通过在SD卡上实现高速串行IO的方式,将这些外设连接到移动设备上,提供了更多的功能和扩展性。 而SDIO 3.0是较新的版本,于2010年发布。它在接口速度和功能上有了一些重要的改进。首先,SDIO 3.0支持最高208MHz的时钟频率,可以提供最大104MB/s的传输速度,相比之下,速度大幅提升。此外,SDIO 3.0引入了DDR(double data rate)传输模式,允许在一个时钟周期内传输两位数据,从而进一步提高数据传输效率。对于需要高速传输的应用场景,如高清视频、高速存储等,SDIO 3.0是一个更好的选择。 总结来说,SDIO 2.0和SDIO 3.0都是用于移动设备的接口标准。SDIO 2.0是较早的版本,提供了一定的传输速度和功能,可以连接各种外设。而SDIO 3.0是较新的版本,速度更快,功能更强大,适合对高速数据传输有要求的应用场景。根据具体需求,选择适合的SDIO版本可以提供更好的性能和用户体验。 ### 回答2: SDIO是Secure Digital Input/Output的缩写,是一种用于连接外部设备的接口标准。SDIO 2.0和3.0都是指SDIO的不同版本。 SDIO 2.0是SD协会于2006年发布的标准,它在SD卡原有的存储功能基础上增加了输入输出功能。通过SDIO 2.0接口,用户可以将各种外部设备如WiFi模块、蓝牙模块、GPS模块等连接到SD卡插槽上,实现数据的输入输出,并与主设备(如智能手机、平板电脑等)进行通信。同时,SDIO 2.0还能够兼容之前的SD卡规范,可以在兼容的设备上使用。 SDIO 3.0是SD协会于2010年发布的标准,相比于2.0版本,它对数据传输速率进行了大幅提升。SDIO 3.0支持的传输速率可达到最高104MB/s,比2.0版本的25MB/s快了很多倍。这使得SDIO 3.0可以更快地处理数据的输入输出,提高设备的响应速度和性能。 总的来说,SDIO 2.0和3.0都是外部设备连接接口的标准,可以用于连接各种功能模块到智能设备上,并实现数据的输入输出。其中,SDIO 3.0相比于2.0版本在传输速率方面有了显著的提高,可以提升设备的性能和响应速度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值