SDIO学习(2)--SD卡 2.0协议

本文参考文档:

《SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00》 
 

1 SD卡简介

1.1 SD卡概念

1.2 SD卡外形和接口

Clk:时钟线,由SDIO主机产生

CMD:命令控制线,SDIO主机通过改线发送命令控制SD卡,如果命令要求SD卡提供应答,SD卡也是通过该线传输应答信息。

DAT0-3:数据线,SD卡可将DAT0拉低表示忙状态,上电后,SD 卡默认只使用 DAT0 来传输数据。初始化之后,主机可以改变总线宽度(使用的数据线数目)。

SD卡和MMC卡接口引脚对比:

1.3 SD卡特点

2 SD 2.0特点

下面基于SD 2.0协议,对SD 2.0主要特点进行概述:

● 存储容量:
标准容量 SD 卡(SDSC):最高达到 2GB
高容量 SD 卡(SDHC):大于 2GB(SD2.0版本规格最高 32GB)

● 电压范围:
高电压 SD 卡-工作电压范围:2.7 -3.6V
双电压 SD 卡-工作电压范围:低电范围(待定) 和 2.7-3.6V

● 工作模式:
默认模式:可变时钟频率 0-25MHz,最高12.5MB/s 的接口速度(使用 4 条并行数据线)
高速模式:可变时钟频率 0-50MHz,最高25MB/s 的接口速度(使用 4 条并行数据线)

● 支持机械开关的写保护功能和卡检测功能(插入/拔出)

● 速度等级分类:定义了 4 个速度等级,来表示卡的最小速率:(实际上目前最高 Class10)
Class 0 – 这种卡不定义具体性能,代表了这个规范出来之前的所有卡
Class 2 – 最小 2MB/s 的性能
Class 4 – 最小 4MB/s 的性能
Class 6 – 最小 6MB/s 的性能

3 SD 2.0总线拓扑结构

SD 卡系统定义了两种通信协议:SD 和 SPI。主机系统可以选择任意一种。当收到 reset 命令的时候,SD 卡通过主机的信息来决定使用何种模式,并且之后的通讯都会使用相同的模式。

3.1 SD模式 

SD 卡总线支持一主多从(卡),拓扑结构如下图 3-2所示,其中时钟,电源和地信号是所有卡都有的,命令(CMD)和数据(DAT0-3)信号是点对点连接到所有卡。

在初始化时,处理命令会单独发送到每个卡,允许应用程序检测卡以及分配逻辑地址。数据总是单独发送(接收)到(从)每张卡。但是,为了简化卡的堆栈操作,在初始化过程结束后,所有的命令都是同时发送到所有卡。地址信息包含在命令包中。

SD 总线允许数据线的动态配置。上电后,SD 卡默认只使用 DAT0 来传输数据。初始化之后,主机可以改变总线宽度(使用的数据线数目)。

SD 总线包含下面的信号:
CLK: 时钟信号
CMD: 双向命令/响应信号
DAT0-DAT3: 双向数据信号
Vdd,Vss1,Vss2: 电源和地信号

3.2 SPI模式

SD 卡的 SPI 通信模式是用来同 SPI 信道通信,主要是应用在市场上的各种微处理器。模式选择是在上电后的第一次 reset 命令期间决定,并且只要不断电就不能改变。

SPI 标准只是定义了物理连接,没有完成数据传输协议。SD 卡的 SPI 实现使用了 SD 模式相同的命令。从应用的角度来说,SPI 模式的优点是使用现成主机的能力,从而减小设计压力,缺点是性能的损失。

SD 卡 SPI 接口同市场上现有的 SPI 主机兼容。同其他 SPI 设备一样,SD 卡的 SPI 信道有以下 4 个信号,其拓扑结构如下图3-3所示:
CS: 主机到卡的片选(chip select)信号
CLK: 主机到卡的时钟信号
DataIn: 主机到卡的数据信号
DataOut: 卡到主机的数据信号

SPI 的另一个 特点是字节传输,这也是卡的实现。所有的数据都是字节(8 bit)的整数倍,并且直接总是对齐 CS 信号。

4 SD 2.0总线协议

SD总线的通信基于命令和数据流的,包含三个要素:命令(Command),响应(Response)和数据(Data)。

命令:命令是启动操作的令牌。命令从主机发送到卡(寻址命令)或所有连接的卡(广播命令),命令在CMD行上串行传输。

响应:响应是卡发送到主机,作为对先前接收到的命令的响应,响应在CMD线上串行传输。

数据:数据可以从卡传输到主机,反之亦然。

SD主机与SD存储卡之间的数据传输按块进行。数据块的后面总是CRC位。SD协议定义了单个和多个块操作,多块操作模式更适合大量数据的写入操作。当CMD线上出现停止命令时,多块传输终止。主机可以将数据传输配置为使用单个或多个数据线。

无论数据线的数量如何,块写入操作都使用DAT0数据线返回busy信号(见图3-4)。

1线和4线模式的数据结构如下图所示。

 

5 SD卡寄存器

SD卡接口中定义了六个寄存器:OCR、CID、CSD、RCA、DSR和SCR。这些只能通过相应的命令访问。OCR、CID、CSD和SCR寄存器携带卡/内容特定信息,而RCA和DSR寄存器是存储实际配置参数的配置寄存器。

5.1 OCR寄存器

OCR寄存器是一个32bit的操作条件寄存器,存储了卡支持的VDD电压描述,支持的电压如下表5-1所示,当对应的bit为0时表示SD卡不支持该电压。

Bit 31表示卡的上电状态信息位,如果卡上电完成,该位会置1,如果卡是busy状态,该位会置0。

Bit 30表示卡容量状态位(CCS),在上电完成后,读取该位可以获取卡的容量状态,若果CCS=1,则表示是高容量卡(2~32G),如果CCS=0,则表示是标准容量卡(0~2G)。

Bit 7是为双电压卡新定义的,默认设置为0。如果双电压卡没有接收到CMD8,则响应中的OCR位7指示0,并且接收到CMD 8的双电压卡将该位设置为1。

下表是中文版本: 

5.2 CID 寄存器

卡识别(CID)寄存器是一个 128 位的寄存器。包含了卡的识别信息,用于卡识别解析。每个读/写卡都有一个特殊的识别号。CID 寄存器的结构如下:

下表是中文版本: 

5.3 CSD 寄存器 

卡特定数据寄存器提供关于访问卡内容的信息。CSD 定义了卡的数据格式,错误修改类型,最大数据访问时间等参数。

5.3.1 CSD_STRUCTURE

CSD 寄存器的结构体因SD协议版本和卡容量的不同而不同。CSD 寄存器中的CSD_STRUCTURE 表明了结构体版本。表5-3显示了相关CSD结构的版本号

5.3.2 CSD Register (CSD Version 2.0)

表5-16显示了大容量SD存储卡的CSD定义(CSD 2.0版)。以下部分介绍了大容量SD存储卡的CSD字段和相关数据类型。CSD 2.0版仅适用于大容量SD存储卡。括号中的字段名称设置为固定值,表示主机不必引用这些字段。固定值使引用这些字段的主机能够保持与CSD 1.0版的兼容性。Cell Type字段编码如下:R=可读,W(1)=一次可写,W=多次可写。

下表是中文版: 

 5.4 RCA寄存器 

可写的 16 位卡相对地址寄存器,在卡的初始化期间,由卡向外发布的卡地址。这个地址用于卡初始化进程之后,主机同卡之间的交互寻址。默认的 RCA 寄存器值是 0x0000,这个值保留着,用来通过 CMD7 设置所有卡到 stand-by 状态。

5.5 DSR 寄存器(可选择)

这是一个16位驱动器级寄存器。它可以选择性地用于提高总线性能(取决于总线长度、传输速率或卡的数量等参数)。CSD寄存器携带有关DSR寄存器使用情况的信息。DSR寄存器的默认值为0x404

5.6 SCR 寄存器

除了CSD寄存器外,SD卡的另一个配置寄存器称为SD卡配置寄存器(SCR)。SCR 提供了 SD 卡的特殊功能的信息。SCR寄存器的大小为64位,此寄存器由SD存储卡制造商将设置。下表介绍了SCR寄存器内容。

下面是中文版: 

下面是每个域段的介绍: 

 


 

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

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

相关文章

AI技术在现代社会中的广泛应用及其影响

目录 前言: 一、AI技术在医疗领域的应用 二、AI技术在教育领域的应用 三、AI技术在工业领域的应用 四、AI技术在金融领域的应用 五、AI技术在生活领域的应用 前言: 随着科技的不断发展,人工智能(AI)技术逐渐成为人…

基于C++标准库实现定时器类

基于C标准库实现定时器类 定时器类是多线程编程中经常设计到的工具类 简单的定时器原理其实很简单(是不是有点GNU is not unix的味道;): 创建一个新线程在那个线程里等待等待指定时长后做任务 python标准库中就有这么一个定时器类&#xf…

iOS Swift5 视频播放 能播放各种编码格式的视频的第三方库

1.VLC for ios: MobileVLCKit VLC for ios - github 2.IJKPlayer: IJKMediaFramework 基于 FFmpeg IJKPlayer - github

升级!升级!升级!MobPush基础标签推送全新升级,助力开发者精细化运营

“广播推送点击率不高,会员转化差” “新用户拉新后留存不高,次留、3日留存不达标” “用户的复购较低,黏性不高,导致GMV未达预期” 我们总是会听到运营人员关于目标达成过程中遇到这样或者那样的问题。这些问题汇总起来就回到…

vue3 el-table手动选中某一行、设置默认选中某一行

选中某一行用的是el-table的toggleRowSelection方法&#xff0c;用来切换某一行的选中状态 <template><el-table :data"tableData" ref"myTable" selection-change"handleSelectionChange"><el-table-column type"selectio…

STM32 HAL库 外部中断 实现按键控制LED亮灭

目录 1、为什么使用GPIO外部中断控制LED亮灭&#xff1f; 2、NVIC嵌套向量中断控制器 3、EXTI外部中断 4、项目的硬件排线 5、STM32CUBE_MX配置 6、HAL库代码 7、实际效果 1、为什么使用GPIO外部中断控制LED亮灭&#xff1f; 实现LED亮灭控制有很多方式&#xff0c;其中…

公文出错事非小,这些公文写作的常见错误,你中过招吗?

公文是企事业单位、相关部门内外沟通交流的重要工具&#xff0c;不少“笔杆子”经常需要与公文打交道&#xff0c;每天会接触大量的公文。然而在公文撰写的细微之处&#xff0c;稍有不慎&#xff0c;便可能犯下一些常见的错误。这些错误如同蚁穴&#xff0c;虽小却足以破坏公文…

YAML文件格式详解及应用

YAML文件格式详解及应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是YAML&#xff1f; YAML&#xff08;YAML Ain’t Markup Language&#xff09;…

stm32cubemx,adc采样的几种方总结,触发获取adc值的方法dma timer trigger中断

stm32cubemx adc采样的几种方总结&#xff0c;触发获取adc值的方法 timer trigger中断 方法1&#xff0c;软件触发方法2&#xff1a;,Timer触发ADC采集通过DMA搬运 触发获取adc值的方法 Regular Conversion launched by software 软件触发 调用函数即可触发ADC转换 Timer X Cap…

悲观锁、乐观锁与分布式锁详解及Redisson应用

目录 1. 悲观锁&#xff08;Pessimistic Lock&#xff09;2. 乐观锁&#xff08;Optimistic Lock&#xff09;3. Redis分布式锁4. Redisson锁 在多线程或多进程环境下&#xff0c;为了保证数据的一致性&#xff0c;锁机制扮演着至关重要的角色。本文将深入探讨悲观锁、乐观锁的…

使用Python进行数据分析

哈喽,大家好,我是木头左! 14.1 Python在数据分析中的优势 Python作为一种简单易学、功能强大的编程语言,已经成为了数据分析领域的首选工具。它的优势主要体现在以下几个方面: 简洁高效:Python语法简洁明了,易于阅读和编写,能够快速实现复杂的数据分析任务。丰富的库支…

Python基于逻辑回归分类模型、决策树分类模型、LightGBM分类模型和XGBoost分类模型实现车辆贷款违约预测项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着经济的发展和人民生活水平的提高&#xff0c;汽车消费在居民消费中所占比例逐渐增加&#xff0c;汽…

克服指标管理痛点,实现数据价值最大化

在当下的企业管理中&#xff0c;由于数据量的激增&#xff0c;管理方式逐渐从基于经验转向基于数据。在此过程中&#xff0c;我们能够通过数据探查业务情况、分析数据&#xff0c;从而获取更优的决策支持数据。这通常通过数据报表或分析平台来实现&#xff0c;对于临时性场景&a…

vue2组件内部获取路由前后变化

问题&#xff1a; 在账户列表页面&#xff0c;需要检测路由变化进行拉取用户数据&#xff0c;不在mounted里面写&#xff0c;就是要检测路由变化并且要获取前后路由的路径&#xff0c;进行一些逻辑的判断 解决&#xff1a; export default {data() {return {user: "&qu…

Feign调用异常

TimeLimiter SuperCareAPI#originalWave(String,String) recorded a timeout exception. 解决方案&#xff1a; 针对超时的接口设置响应时间 feign:client:config:default:connect-timeout: 500000000read-timeout: 500000000 resilience4j:timelimiter:instances:SuperCare…

护眼大路灯哪个牌子好用?五款好用的护眼灯分享

护眼大路灯哪个牌子好用&#xff1f;现在的孩子从幼儿园开始就开始学习&#xff0c;面临的用眼压力就很大&#xff0c;但想要孩子视力不受影响&#xff0c;大路灯是得好好安排起来&#xff0c;但动辄大几千的护眼灯真是让我们这些普通家庭的家长望而却步&#xff0c;有没有好用…

ruoyi-cloud部署过程遇到的问题总结

nacos启动失败 1.集群cluster模式改为单机standalone 修改bin/startup.cmd文件 set MODE"cluster" 改为 set MODE"standalone" 2.密钥长度不够“the length of secret key must great than or equal 32 bytes; ” 转到官网查看一些配置&#xff0c;发现…

控制系统稳定性常见策略

提升控制系统稳定性是确保系统可靠运行的关键&#xff0c;以下是一些常见策略&#xff1a; 1. 控制算法优化 优化控制算法是提升系统稳定性的核心方法之一。常见的控制算法包括PID控制、模糊控制、自适应控制等。通过调整和优化这些算法的参数&#xff0c;可以显著提高系统的…

FITC-链霉亲和素在生物成像技术中的应用

生物成像技术是现代生物学和医学研究中的工具之一&#xff0c;它使得研究者能够直观地观察和了解生物体内部的结构和功能。其中&#xff0c;荧光成像技术因其高灵敏度和高分辨率而受应用。FITC-链霉亲和素作为一种荧光标记试剂&#xff0c;在生物成像技术中发挥着作用。 FITC-…

Java List操作详解及常用方法

Java List操作详解及常用方法 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是Java List&#xff1f; Java中的List是一种动态数组&#xff0c;它允许存…