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

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

1.SD卡寄存器

SDIO接口中定义了8个寄存器:OCRCIDCSDRCADSRSCRSSR(仅sdio卡支持),CSR(仅sdio卡支持)。
这些寄存器只能通过对应的命令访问
其中OCR,CID,CSD,SCR寄存器保存了卡/内容的特定信息,RCA和DSR寄存器是配置寄存器,存储当前的配置参数。
为了使能扩展功能,寄存器的保留位卡应该返回 0
在这里插入图片描述
注意:RCA在SPI模式下不可用。

1.1操作条件寄存器——OCR

32位的操作条件寄存器(OCR)存储了卡的VDD电压描述和2个状态信息位。
包含了Vdd支持电压,并且包含了card的状态信息,用以表示该card是否power up,以及表示card是否为大容量和标准容量。
在这里插入图片描述
bit 7是新定义的,用于双电压卡默认设置为0。如果双电压卡没有收到CMD 8,则该位为0,如果收到CMD 8,则该位为1。
bit 31-卡上电状态位,这个状态位在卡的上电流程完成后设置。
bit 30-卡容量状态位,如果是SDHC或SDXC,设置为1,如果是SDSC,设置为0。卡容量状态位只有在上电流程完成,且bit 31设置为1之后才有效。主机应该读取这个状态位来判断卡的种类

1.2卡识别寄存器——CID

在这里插入图片描述
·MID
一个用于识别卡厂商的8-bit二进制数。MID号由SD-3C,LLC.(松下,闪迪和东芝成立的公司)控制、定义和分配给SD卡厂商。此过程用以保证CID 寄存器的唯一性。

·OID
一个用以识别卡的OEM和/或卡内容(当ROM或FLASH卡被用作发布媒介时)的2字符的ASCII字符串。OID 号由SD-3C,LLC控制、定义和分配给SD 卡厂家。此过程用以保证CID 寄存器的唯一性。

注意:SD-3C,LLC给想要生产和/或者销售SD卡的公司授权,包括但不限于Flash记忆卡,ROM,OTP,RAM和SDIO Combo卡。

·PNM
产品名,5字符的ASCII字符串。

·PRV
产品版本由两个二进制编码的十进制(BCD)数字,每个占4 bit,代表一个"n.m"版本号。"n"在高半字节,"m"是在低半字节。
例如,产品版本"6.2"的PRV二进制值域为:0110 0010b

·PSN
序列号,32位二进制数。

·MDT
出厂日期由两个16进制数组成,一个8bit 代表年份(y),另外4bit 代表月份(m)。
"m"域是月份码。1为一月份。
"y"域是年份码。0为2000。
例如,出厂日期"April 2001"对应的日期域的二进制值为:00000001 0100。

·CRC
CRC7校验和(7bit),这是对CID 内容计算的校验和。

1.3特定数据寄存器——CSD

特定数据寄存器——CSD(card specific data register)
通过发送CMD9命令来读取CSD

CSD分为V1.0和V2.0两个版本,其中V2.0只适用于高容量SD卡,本文也是以V2.0为参考。
插入的区域名字是固定值,并且主机不一定要求涉及这些区域。这些区域的固定值使主机保持对CSD V1.0的兼容。
单元类型区域中,R=可读,W(1) =写一次,W=反复写。
在这里插入图片描述
·CSD_STRUCTURE
记录了 CSD 的版本号,CSD version 1.0 为标准容量卡所用,CSD version 2.0 为大容量或超大容量卡所用。·
在这里插入图片描述

最大数据传速速率(TRAN_SPEED)
对于标准SD卡,这个区域值应该总是00110010b(32h),这个等于25Mhz, 是强制的SD卡最大操作频率。
对于高速卡来说,这个值应该是01011010b(5Ah),这个值代表50Mhz,当时序通过CMD 6和CMD 0命令回到默认的时候,这个值会重新设置为032h。

·卡命令类(CCC)
表示卡支持的命令类,class0~11。
一个CCC 中的一位值为1表明支持对应的命令分类。
在这里插入图片描述

·读数据块最大长度(READ_BL_LEN)
其值固定为9h,代表READ_BL_LEN=512byte。

·READ_BL_PARTIAL
这个值固定为0,表明不允许部分块读操作,只能按块进行访问。

·WRITE_BLK_MISALIGN
这个值固定为0,表明高容量卡中,写操作不允许越过物理块边界

·READ_BLK_MISALIGN
这个值固定为0,表明高容量卡中,读操作不允许越过物理块边界

·DSR _IMP
定义是否可配置驱动阶段在卡上整合了。如果设置了,驱动阶段寄存器(DSR) 就应该使用,0一不实现DSR,1一实现DSR。

·C_SIZE
这个值有22bit,可以支持最大到2Tbyte(和通过32Bit块地址指定的最大存储空间一致) 这个参数是用来计算sd卡的用户数据区域容量的(不包括保护区域)。公式如下:
memory capacity = (C_SIZE+1) * 512K byte。
鉴于V 2.0支持的最大容量是32GB,超过6bit的部分都设置为0.

·ERASE_BLK_EN
这个值固定为1,代表着主机可以擦除1个或者多个512字节单位。

·SECTOR_SIZE
这个值固定是7Fh,这个代表64字节。这个值同擦除操作没关系。V2.0的卡通过AU尺寸来表明存储边界,不用这个值。

·WP_GRP_SIZE
这个值固定是0,高容量SD卡不支持写保护组。

·WP_GRP_ENABLE
这个值固定为0,高容量卡不支持写保护组。

·R2W_FACTOR
这个值固定是2h, 代表4倍。写超时可以通过读访问时间和R2W_FACTOR的乘积计算。但是,对于写超时,主机不应该用这个参数,而是应该用固定的250ms。

·WRITE_BL_LEN
这个值固定是9h,代表WRITE_BL_LEN=512Byte。

·WRITE_BL_PARTIAL
这个值固定是0,表明部分块写不支持,值支持块整数倍的写操作。

·FILE_FORMAT_GRP
这个值固定是0,主机不应该使用这个值。

·COPY
定义是否内容是原始的(0) ,或者是拷贝的(1)。拷贝位对于销售到终端用户的OTP和MTP设备来说是设置为1的,这表明卡的内容是拷贝的。拷贝位是一次性编程位。

·PERM_WRITE_PROTECT
永久保护整个卡内容,不允许写和擦除(所有相关命令都无效)。默认值是0,非永久写保护。

·TMP_WRITE_PROTECT
临时保护卡的内容,不允许写和擦除(所有相关命令都临时无效)。这个值可以设置和复位,默认值是0,非写保护。

·FILE_FORMAT
这个值固定为0,主机不应该使用这个值

1.4相对地址寄存器——RCA

相对地址寄存器——RCA(relative card address register)
可写的16位卡相对地址寄存器,在卡的初始化期间,由卡向外发布的卡地址。这个地址用于卡初始化进程之后,主机同卡之间的交互寻址。
默认的RCA寄存器值是0x0000,这个值保留着,用来通过CMD 7设置所有卡到standby状态。
卡的RCA地址如何确定???根据是什么???
RCA地址默认值为0x0000,在卡识别过程中,接收到CMD 3命令后,由SD卡给自己动态分配的暂时的16bit非零值。每次接收CMD 3后,重新分配地址。

1.5驱动阶段寄存器——DSR

驱动阶段寄存器——DSR(driver stage register)
16位驱动阶段寄存器,是可选的,可以用来在扩展操作条件中,提高总线性能(受总线长度,传输速率和卡数目的影响)。CSD寄存器中有DSR寄存器是否使用的标志。DSR默认值是0x404。

1.6SD配置寄存器——SCR

64bit的SD配置寄存器作为CSD寄存器的补充,提供了SD卡的特殊功能的信息。
在这里插入图片描述
·DATA_STAT_AFTER_ERASE
定义了擦除之后的数据状态,可能是0或者1,由厂家定义。

·SD BUS WIDTHS
描述了卡支持的所有DAT总线宽度,如表所示。SD卡最少应该支持1bit和4bit的宽度,所以SD卡的bit 0和bit 2必须有一个为1。
在这里插入图片描述

1.7SD状态寄存器——SSR

SD状态寄存器——SSR(SD status register)
SD卡专有特征的信息。
包含了sd存储卡的专有属性并为以后的功能扩展保留了足够空间。SD 状态大小是一个512 Bit的数据块。寄存器通过DAT线发送给host的内容有16bit CRC。SD 状态作为ACMD13(CMD55 跟随CMD13)的响应通过Dat 总线发送给Host。ACMD13 只能在‘Trans_State’状态发送给卡(卡被选中)。SD 状态结构描述如下。没有使用的保留Bit 应该设成0。

1.8卡状态寄存器——CSR

卡状态寄存器——CSR(card status register)
卡状态信息。
CSR(卡状态)寄存器总共 32bits,代表了执行一个命令的错误和状态信息,其信息包含在 R1 格式的应答中返回给主机。

2.SD卡存储器

SD卡属于连续存储介质(NAND型Flash),它是由许多小的区块组成,每个区块都可以存储一定数量的数据,因此SD卡的读写是以“数据块”为单位进行传输的。
n块(Block):是文件系统上的概念,指最小读写单位,块的长度是字节的整数倍,一般为512字节,有的SD卡的数据块为1024或2048等等,要修改SD卡中一个字节,必须重写整个数据块。
n扇区:扇区是擦除单位,表示擦除操作要擦除的块的数目,通常:1扇区=128块=64KByte。注意:文件系统中,V 2.0的卡通过AU尺寸来表明存储边界,不使用扇区。
nAU(分配单元),也称为簇,是文件系统为每一个单元地址划分的空间大小,类似于一栋大楼将它换分为若干房间,并分配相应的门牌号,其中房间的大小就是所说的分配单元大小。
存储文件时,系统将文件按照分配单元的大小分为若干部分,比如分配单元为4096Byte,一个4096Byte的文件刚好放进一个分配单元中,如果是4097Byte的文件则需占用两个分配单元。擦除时也是同样道理,一次最小擦除一个分配单元。因此分配单元越小,越节约空间,但是浪费读取时间;分配单元越大,越节约读取时间,但是浪费空间。
卡的容量决定最大的AU大小,默认分为:2048Byte、4096Byte,8192Byte, 16KB,32KB和64KB,最大为一个扇区即64KB,一般默认设置为4096Byte,格式化时分配单元设置。
在这里插入图片描述


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

相关文章

SDIO总线(一)

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

[SDIO].SDIO总线详解

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

SD 和 SDIO

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

STM32——SDIO简介

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

一,sdio总线简介

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

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

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

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

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

SDIO接口(4)——SDIO通信

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

STM32 SDIO详解

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

SDIO简介

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

SDIO接口

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

SDIO接口(1)——SDIO简介

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

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

目录 一、SD卡简介 1.1历史 1.2 tf卡和SD卡的区别 1.3 mmc,emmc,nand,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:安全数字输入输出 目录 定义 功能 二、SDIO协议 介绍 信号 协议 一般协议 写协议 读协议 命令 命令格式 命令应答 数据 三、一文搞懂SDIO 四、SDIO简介 五、SD卡引脚定义和图连接 六、SDIO协议简介 七、MMC、SD、TF、SDIO、SDMMC简…

SDIO协议

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

硬件接口之SDIO

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

一文搞懂SDIO

SDIO总线简介 SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。 什么是SDIO卡 SDIO卡&…

visual svn for visual studio 2019

https://marketplace.visualstudio.com/items?itemNameVisualSVNLimited.VisualSVN-VS2019 参考 https://www.cnblogs.com/Music/p/visualsvn-for-visual-studio-2019.html

visualSVN server的安装和使用

一、安装visualSVN server 服务器端 下载地址:https://www.visualsvn.com/server/download/ 1.在官网中下载visualSVN server服务器端 2.安装下载的visualSVN server,选择默认选项即可 二、安装号visualSVN server后,创建一个代码创库&am…

《SVN系列教程-第三章-VisualSVN的使用》

教程说明 本系列教程目录大纲:《SVN系列教程-目录大纲》 《SVN系列教程-第三章-VisualSVN的使用》 1.1 VisualSVN简介 VisualSVN是Subversion的一款图形化界面工具,提供了图形化方式来辅助我们管理仓库、用户、组信息,另外VisualSVN还帮我…