SDIO 协议分析

article/2025/10/23 22:32:03

http://blog.csdn.net/g_salamander/article/details/14167055

一、SD 存储卡特性介绍

1、存储容量

    a、标准容量SD存储卡(SDSC): 不大于2GB

    b、大容量SD存储卡(SDHC): 大于2GB、不大于32GB

    c、超大容量SD存储卡(SDXC):大于32GB、不大于2TB

2、电压范围

    高电压SD存储卡,电压范围为:2.7 ~ 3.6 V

3、SD 存储卡可以用密码保护(CMD42 - LOCK_UNLOCK)

4、标准 SD 存储卡的厚度是 2.1mm 或者 1.4 mm

5、SD 存储卡传输速度分类

    a、class-0: 这类卡片不指定性能

    b、class-2: 不低于 2MB / s

    c、class-4: 不低于 4MB / s

    d、class-6: 不低于 6MB / s

    e、class-10: 不低于 10MB / s

    * 大容量和超大容量 SD 存储卡至少应该为 class-2

6、SD 存储卡结构图

    

引脚说明如下图所示:

    


二、SD Bus

    1、Command: 命令是一次操作开始的令牌,从主机发送到一个卡片(编址命令)或者连接到主机的所有卡片(广播命令)。命令的编码格式如下图所示:每个令牌都有一个起始位结束位,总长度为48 bits,并且每个令牌都有 7 bits 的CRC 校验码。命令只能通过CMD 线传输,并且MSB 为先。

    

    下面是 CMD8 的示意图:

    

    * bit[40:45] - Command index 的内容就是 CMD 的编号

    * bit[8:39] - Command Argument 为每个命令自带的参数

    * Command 共分为12类(class0 - class11),在寄存器 CSD 中有 12 bits CCCCard Command Class)对本卡支持的分类进行描述,基本命令(class-0)如下图所示:

    

   

    2、Response:应答是卡片发回数据的令牌,响应主机之前发送的命令。应答的编码格式如下图所示:每个令牌都有一个起始位和结束位,总长度为48 bits 或者136 bits,有相应的 CRC 校验码。应答信号也只在 CMD 线上传输,并且 MSB 为先。

    

    * SD 存储卡有 5 种类型的应答:R1、R1b、R2、R3、R6,SDIO 卡还支持另外两种应答类型:R4、R5,除了 R3 其他类型的应答都有 CRC 校验码

    * R1 为通常命令的应答格式,如下图所示

    

    * R6 为 CMD3 的专用应答格式,其中 Argument 字段的高 16 bits 为卡片新的相对地址,如下图所示

    

    3、Data:数据通过 DATA 线双向传输。数据传输有两种模式:

        a、Usual data 模式:通常的数据以最低有效字节为先发送,在单个字节里面以最高有效位为先,示意图如下:

        

        b、Wide width data 模式:最高有效位先传输,示意图如下:

        


三、SD 存储卡寄存器

每个 SD 存储卡都有一组信息寄存器,如下图所示:


其中 CID、OCR、CSD、SCR 存储了卡片的具体信息,RCA、DSR 寄存器存储了实际的配置参数。

1、OCR 寄存器

OCR (操作条件)寄存器中存储了卡片的电压信息以及部分状态信息:其中一个状态位(bit 31)指示卡片的上电操作是否完成,另外一个状态位(bit 30)指示卡片的容量状态(0代表SDSC、1代表SDHC或者SDXC)。寄存器的说明如下图所示:

    

2、CID 寄存器

CID (识别信息)寄存器总共 128 bits,包含了卡片的识别信息,每个独立的卡片都应该有一组独一无二的识别信息。寄存器说明如下图所示:

    

3、CSD 寄存器

CSD(具体信息)寄存器也是 128 bits,提供了访问卡片内容的一些信息如:传输速率、数据格式、错误类型、最大是数据访问时间、DSR 寄存器是否启用的。其中 bit[126:127] 记录了 CSD 的版本号,CSD version 1.0 为标准容量卡所用,CSD version 2.0 为大容量或超大容量卡所用。CSD version 1.0 寄存器说明如下图所示:

    

4、SCR 寄存器

SCR(SD 配置)寄存器总共 64 bits,定义了卡片的一些特殊功能,寄存器说明如下图所示:

    

5、CSR 寄存器

CSR(卡片状态)寄存器总共 32bits,代表了执行一个命令的错误和状态信息,其信息包含在 R1 格式的应答中返回给主机,寄存器说明如下图所示:

    

    

6、SD Status 寄存器

SD Status 寄存器包含了 SD 存储卡的的专有属性并为以后的功能扩展保留了足够的空间,其大小为 512bits 即一个块大小,这个寄存器作为ACMD13命令的执行结果,通过DATA线发送到主机,寄存器说明如下图所示:

    


四、SD 存储卡功能描述

SD 卡有两种操作模式:1、卡片识别模式,2、数据传输模式。所有的通信都是由主机控制的,即通过编址命令或者广播命令。卡片在两种模式之间的状态转换如下图所示:

    

1、卡片识别模式

当主机复位所有卡片后将进入卡片识别模式,在识别模式下将会确认卡片的操作电压并要求卡片发布自己的相对地址(默认地址为0x0000),在此操作模式下只会用到 CMD 线并且工作在专门的时钟频率 F-od(400 KHz)。识别模式的流程图如下:

    

主机首先会发送 CMD8 去确定卡片的工作电压:如果卡片不支持当前电压(包含在 CMD8 参数里面),则不会返回并保持在空闲状态;如果卡片能够在当前电压工作,则会返回卡片支持的电压以及检测图案,还有相应的CRC 校验码。卡片的初始化将在主机发送ACMD41命令后开始,主机每间隔1秒就发送一次 ACMD41 命令,直到初始化完成(OCR 寄存器的 bit31 置位)。在主机发送的第一个 ACMD41 中应该包含主机支持的容量信息(HCS)工作条件。如果主机请求 1.8V 的工作电压(S18R = 1),并且卡片也支持(S18A = 1),则可以通过CMD11切换到 1.8V 的工作电压。当初始化完成后,主机发送 CMD2命令获取CID 寄存器信息,当卡片返回后主机接着发送CMD3命令要求卡片发布自己的相对地址,一旦主机接收到相对地址,卡片就进入等待状态(这时候主机可以通过 CMD3 命令重复要求卡片发布相对地址)。ACMD41的示意图如下所示:

    

它的应答格式如下(R3)图所示:

    

2、数据传输模式

CMD7 用于选择一个卡片进入传输模式,在同一时间只能有一个卡片处于传输模式。如果当前卡片与主机处于数据传输模式的连接状态,新的 CMD7 命令中的RCA [bit16 - bit31] 不是当前卡片的,则会释放连接并且当前卡片进入等待状态,然后连接新 RCA 的卡片。如果主机发送 CMD7 时,RCA = 0x0000,则所有的卡片都进入等待状态。数据传输模式下的状态转换如下图所示:

    

a、所有读取数据的命令在任何时间都能被 CMD12 终止。读取数据的命令包括:CMD17(读取单块数据)、CMD18(读取多块数据)、CMD30(读取写保护状态位)、ACMD51(读取 CSR 寄存器)、ACMD56

b、所有写入数据的命令在任何时间都能被 CMD12 终止。写入数据的命令包括:CMD24(写入单块数据)、CMD25(写入多块数据)、CMD27(设置 CSD 寄存器)、CMD42(加锁解锁)、ACMD56。、

c、一旦数据传输完成,卡片将会马上退出数据写状态并且切换到编程状态(数据传输成功就写入存储介质)或者传输状态(数据传输失败)。

d、如果写操作停止,块长度和最后一块的 CRC 校验码是有效的,数据将会被写入存储介质。

e、卡片支持写缓存,这就意味着当前块在进行编程操作时下一块也可以进行传输。如果写缓存满了,卡片还是处在编程状态,则卡片会将DATA0一直拉低(忙状态)。

f、设置 CSD 寄存器时不提供缓存,也就是如果正在进行 CSD 设置,任何的数据传输命令都将被拒绝执行,DATA0 也会被一直拉低。

g、当卡片处于编程状态时,读命令参数设置命令将不被执行。参数设置命令包括:CMD16(设置块长度)、CMD32(设置擦除的起始块数)、CMD33(设置擦除的结束块数)。

h、CMD7 命令不会终止擦除和编程操作。

i、通过 CMD0 或者 CMD15 重置卡片时将会结束所有挂起或者正在进行的操作,这有可能会破坏卡片的数据,所以需要主机来保证安全。

j、CMD class10 的命令之间的状态转换由厂家自己定义。


3、数据读写流程

在卡片上电以及执行 CMD0 后为 1bit bus,宽总线(4bit bus)模式可以通过 ACMD6 命令设置,在设置时卡片必须处理传输模式而且没有加锁。容量大于 2GB 的卡片最大块长度可能为 1024 字节,但是 CMD16 命令最大只支持 512 字节。

a、读取数据

当总线上没有数据传输时总线保持高电平,传输以低电平开始并以高电平结束,数据流包括有效数据ECC值,一个 CRC 校验码将会被加入到每块数据的末尾以确保传输的完整性。CMD17命令将会读取一个块的数据,块的地址在命令的参数中列出(SDSC的地址以字节为单位,SDHCSDXC 的地址以块 - 512bytes 为单位)。CMD18命令将会连续的读取块数据直到主机发送 CMD12 命令,CMD23 命令可以指定读取的块数。

b、写入数据

写数据流程和读取数据流程类似。单块写入命令为 CMD24,多块写入命令为 CMD25

c、擦除数据

擦除数据的流程和读取多块数据的流程类似。CMD32 命令指定擦除的开始块,CMD33 命令指定擦除的结束块,CMD38命令启动擦除。如果将要擦除的块是写保护的则跳过。在擦除过程中DATA0保持低电平。在写或者擦除的过程中可以通过CMD7命令去操作别的卡片。

d、加锁解锁

SD 存储卡支持加锁功能,密码以及长度保存在 128bits PWD 8bits PWD_LEN 寄存器。被加锁的卡片可以响应 class0 CMD16ACMD41、LOCK CARD(class7)命令,但是不能访问数据。如果卡片被加锁,则 PWD_LEN不为 0,卡片在上电后就会进入锁定状态。加锁解锁的命令为CMD42,该命令的数据块格式如下图所示:

    

* ERASE:强制擦除操作,第 0 byte 的 bit3 需要置 1,并且其他位置 0。

* LOCK_UNLOCK:1 = Lock the card,0 = Unlock the card。这个 bit 的操作需要和 SET_PWD 相同。

* CLR_PWD:1 = 清除密码。

* SET_PWD:1 = 设置新密码。

* PWDS_LEN:定义了密码的长度(bytes),如果改变密码,则是新密码和旧密码的长度。

* PWD:如果是新密码,则保存的是新密码。如果改变密码,则保存的是新密码和旧密码。

应当在发送 CMD42 之前通过 CMD16 设置数据块长度,而且数据块长度应该不小于 CMD42 数据块的长度。



http://chatgpt.dhexx.cn/article/AIWWoHbI.shtml

相关文章

SDIO接口及驱动

1. 简介 1.1 SDIO接口应用场景 SDIO 通过 SD 的 I/O 管脚来连接外部的外围 device 并传输数据。这些外围设备,我们称为 SDIO 设备,常见的有: Wi-Fi card(无线网络卡)CMOS sensor card(照相模块)GPS cardGSM/GPRS modem cardBluetooth cardR…

SDIO——读写SD卡

SDIO的设备分类&#xff1a; SD / IO卡&#xff1a;这不是一种卡&#xff0c;现在已经不常用了&#xff0c;用到时再查。SD存储卡&#xff1a;分局容量不同有三种名字① < 2GB 的叫SDSC&#xff1b;② >2GB < 32GB的叫SDHC卡&#xff1b;>32GB < 2TB 的叫SDXC卡…

SDIO接口介绍

SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 1.全速的SDIO卡&#xff0c;传输率可以超过100Mbps&#xff1b; 2.低速的SDIO卡&#xf…

SDIO读写SD卡速度有多快?

前两天测试了SPI方式读写SD卡的速度《SPI方式读写SD卡速度测试》&#xff0c;今天来测试一下SDIO方式的读写速度。 测试条件&#xff1a; 单片机&#xff1a;STM32F407VET6 编译环境&#xff1a;MDK 5.30HAL库 SD卡&#xff1a;闪迪32GB/64GB TF卡 文件系统&#xff1a;FatFS R…

SDIO接口(2)——SD卡寄存器

1.SD卡寄存器 SDIO接口中定义了8个寄存器&#xff1a;OCR&#xff0c;CID&#xff0c;CSD&#xff0c;RCA&#xff0c;DSR&#xff0c;SCR&#xff0c;SSR&#xff08;仅sdio卡支持&#xff09;&#xff0c;CSR&#xff08;仅sdio卡支持&#xff09;。 这些寄存器只能通过对应…

SDIO总线(一)

SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡: 1.全速的SDIO卡,传输率可以超过100Mbps; 2.低速的SDIO卡,支援的时脉速率在0至400KHz之间。 SDIO协议是由SD卡的协议…

[SDIO].SDIO总线详解

转自&#xff1a;https://blog.csdn.net/liuhan33025/article/details/51131848 SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 全速的SDIO…

SD 和 SDIO

SD 和 SDIO SD 和 SDIO SD&#xff08;Secure Digital&#xff09;是一种关于 Flash 存储卡的标准&#xff0c;也就是一般常见的 SD 记忆卡&#xff0c;在设计上与 MMC&#xff08;Multi-Media Card&#xff09;保持了兼容。SDHC&#xff08;SD High Capacity&#xff09;是大…

STM32——SDIO简介

一、什么是SDIO接口&#xff1f; SDIO&#xff0c;全称&#xff1a;Secure Digital Input and Output&#xff0c;即安全数字输入输出接口。它是在SD卡接口的基础上发展而来&#xff0c;它可以兼容之前的SD卡&#xff0c;并且可以连接SDIO接口设备&#xff0c;比如&#xff1a…

一,sdio总线简介

sdio总线简介 一&#xff0c;简要二&#xff0c;SDIO总线物理电气特性 1&#xff0c;card电压的供电范围 2&#xff0c;信号pin脚定义 3&#xff0c;Bus Speed模式 三&#xff0c;SDIO Card类型分类四&#xff0c;SDIO Card 传输模式 一&#xff0c;简要 SDIO协议是由SD协议…

SDIO接口(3)——SDIO总线接口

SDIO总线接口 SDIO是在SD标准上定义了一种外设接口&#xff0c;故名思义&#xff0c;就是SD的I/O接口的意思。SD本来是记忆卡的标准&#xff0c;但是现在把SD连接一些外围I/O使用&#xff0c;这样边形成了SDIO接口。SDIO本身只是一种接口技术&#xff0c;类似于SPI接口&#x…

STM32——SD卡实验(SDIO方式)

一、SD卡简介 1、什么是SD卡&#xff1f; SD卡&#xff08;Secure Digital Memory Card&#xff09;即&#xff1a;安全数码卡。它是在MMC的基础上发展而来&#xff0c;是一种基于半导体快闪记忆器的新一代记忆设备&#xff0c;它被广泛的用于便携装置上使用&#xff0c;例如…

SDIO接口(4)——SDIO通信

SDIO通信 SD总线上的通信基于命令和数据位流&#xff0c;这些命令和数据位流由起始位启动&#xff0c;并由停止位终止。 SDIO总线上的设置和控制都是通过命令来实现&#xff0c;SDIO总线上都是HOST端发起请求&#xff0c;然后DEVICE端回应请求&#xff0c;其中请求和应答中会包…

STM32 SDIO详解

目录 01、SDIO简介 02、SDIO特点 03、SDIO时钟 04、SDIO的命令与响应 05、SDIO块数据传输 06、代码 1、SDIO简介 SDIO&#xff0c;全称&#xff1a;Secure Digital Input and Output&#xff0c;即安全数字输入输出接口。它是在SD卡接口的基础上发展而来&#xff0c;它可…

SDIO简介

SDIO&#xff0c;全称&#xff1a; Secure Digital Input and Output &#xff0c;即安全数字输入输出接口。它是在SD卡接口的基础上发展而来&#xff0c;它可以兼容之前的SD卡&#xff0c;并可以连接SDIO接口设备&#xff0c;比如&#xff1a;蓝牙、WIFI、照相机等。 S…

SDIO接口

一、SDIO简介 SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 1.全速的SDIO卡&#xff0c;传输率可以超过100Mbps&#xff1b; 2.低速的…

SDIO接口(1)——SDIO简介

博客系列 SDIO接口&#xff08;1&#xff09;——SDIO简介 SDIO接口&#xff08;2&#xff09;——SD卡寄存器 SDIO接口&#xff08;3&#xff09;——SDIO总线接口 SDIO接口&#xff08;4&#xff09;——SDIO通信 1.SDIO简介 SDIO(Secure Digital Input and Output)&#…

STM32——SDIO的学习(驱动SD卡)(理论篇)

目录 一、SD卡简介 1.1历史 1.2 tf卡和SD卡的区别 1.3 mmc&#xff0c;emmc&#xff0c;nand&#xff0c;flash的关系 1.4 SD卡的规格等级 1.4.1按容量分 1.4.2 class等级 1.4.3 UHS总线模式 1.4.4 UHS速度等级 1.4.5 VSC视频速度等级 二、SD卡的内部结构 三、SDIO…

SDIO(安全数字输入输出)/协议

目录 一、SDIO&#xff1a;安全数字输入输出 目录 定义 功能 二、SDIO协议 介绍 信号 协议 一般协议 写协议 读协议 命令 命令格式 命令应答 数据 三、一文搞懂SDIO 四、SDIO简介 五、SD卡引脚定义和图连接 六、SDIO协议简介 七、MMC、SD、TF、SDIO、SDMMC简…

SDIO协议

SDIO协议 1 概述 SDIO&#xff0c;全称&#xff1a;Secure Digital Input and Output &#xff0c;即安全数字输入输出接口。2 特点 ①与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式&#xff1a;1位(默认)、4位和8位。②与较早的多媒体卡系统规格版本全兼容…