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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

控制系统稳定性常见策略

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

填报高考志愿时,学校、专业和城市怎么选择呢?

我的观点是: 专业>城市>学校 专业是兴趣导向,符合自己的价值观,失去了这种驱动力的专业学习,会变得非常艰难的,而且没有竞争力,所以我的排序第一位是专业。 其次是城市,最好是一线城市&…

划重点!炒伦敦金看k线图的要点

对于刚刚开始参与伦敦金交易,还在学习如何看K线的投资者来说,掌握一些看k线图的要点,对于更好地分析市场的行情走势,找到有利的入场机很有帮助,以下是一些关键的建议,希望能够供大家参考。 K线有阳线和阴线…

Coze搭建《测测你的本命宠物》

前言 本文讲解如何从零开始,使用扣子平台去搭建《测测你的本命宠物》 《测测你的本命宠物》:测测你的本命宠物 - 扣子 AI Bot (coze.cn) 欢迎大家去体验一下!!! 正文 接下来我们开始讲解制作这个bot的流程吧&#…

rclone 上传资料到 onedrive 遇到限速问题解决

原因分析 可能和脚本参数设置有关系,我的参数是: rclone copy "F:\阿里云盘\6666\局域网" "od:影视" --ignore-existing -u -v -P --transfers20 --ignore-errors --buffer-size128M --check-first --checkers10 --drive-acknowledge-abuse差不多8G大小的…

如何使得Macos的剪切板感知fileURL并当fileURL被执行paste 动作时 回调到某个监听的函数 从而来填充file content

问题及尝试: 我在做一个跨平台文件拷贝的功能,文件可能是从其他操作系统比如Linux 或者Windows 拷贝到Macos上, 但是我试过所有可以hook NSPasteboard的方法,确实没有找到可以监听macos 剪切板的方法,因为fileURL 确实…

邮件接口代码案例中的SMTP服务器配置详解!

邮件接口代码案例的编写技巧?如何集成邮件服务API? 对于开发者来说,邮件接口代码案例提供了丰富的参考和实践机会,其中SMTP服务器配置是不可或缺的一环。AoKSend将详细讲解如何配置SMTP服务器,并解析其中的重要参数和…

【自动化测试】Selenium自动化测试框架 | 相关介绍 | Selenium + Java环境搭建 | 常用API的使用

文章目录 自动化测试一、selenium1.相关介绍1.Selenium IDE2.Webdriverwebdriver的工作原理: 3.selenium Grid 2.Selenium Java环境搭建3.常用API的使用1.定位元素2.操作测试对象3.添加等待4.打印信息5.浏览器的操作6.键盘事件7.鼠标事件8.定位一组元素9.多层框架定…

2024年6月京东睡眠呼吸暂停和低通气事件检测赛题-baseline

赛题地址:DC竞赛-大数据竞赛平台 (datacastle.cn) 一、数据集介绍 train_x训练数据集特征描述,其样本分布不均匀,0样本29808,1样本3221,2样本4520,共计37549条样本 第一维度:60 位受试样本数总…

一个多智能体AI搜索工具

brainstorm.cool 是最近刚留意到的一个小工具,因为好奇去体验了一把,简单写一下使用体验。 初体验 界面比较清爽,检索结果包括Status、多Agent回答、Relates和右侧的Sources。从Status可以大致了解检索过程:Web Search - Decisio…

pythons工具——裁剪labelme的json不规则多边形标签保存成矩形图像

原图labelme标注 使用以下程序,裁剪labelme的json不规则多边形标签保存成矩形图像 import os import cv2 import math import json import numpy as np from PIL import Image, ImageDrawdef calculate_bounding_box(points):"""计算多边形的最小外…

二次封装 el-dialog 实现 全屏和最小化 功能

效果 封装后的组件 <template><el-dialog v-model"dialogVisible" :show-close"false" :fullscreen"fullscreen" draggable overflow><template #header"{ close }"><div><span style"font-weight: b…