【SDIO】SD2.0协议分析总结(一)-- SD卡基本概率介绍

2023-11-05

相关文章

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

1.前言

由于目前使用的硬件平台STM32只支持SD2.0,所以后面的介绍主要是参考《Part1_Physical_Layer_Simplified_Specification_Ver2.00.pdf》的学习总结。

2.SD卡简介

SD 卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对 SD卡进行读写通信操作一般有两种通信接口可选,一种是 SPI接口,另外一种就是 SDIO 接口。SDIO 全称是安全数字输入/输出接口,多媒体卡(MMC)、SD 卡、SD I/O 卡都有 SDIO 接口。SD I/O 卡本身不是用于存储的卡,它是指利用 SDIO 传输协议的一种外设。比如 Wi-Fi Card,它主要是提供 Wi-Fi功能,有些 Wi-Fi模块是使用串口或者 SPI接口进行通信的,但 Wi-Fi SDIO Card是使用 SDIO 接口进行通信的。
在这里插入图片描述
SD卡按内存容量分类如下:

简称 全称 容量大小 SD版本
SDSC Standard Capacity SD Memory Card <=2GB 2.0版本以上
SDHC High Capacity SD Memory Card 2GB~32GB 2.0版本以上
SDXC Extended Capacity SD Memory Card 32GB~2TB 3.0版本以上
SDUC Ultra Capacity SD Memory Card 2TB~128TB 8.0版本以上

总线速度模式分类如下:

SD版本 总线速度 总线接口
2.0 最高速度 < 25 MB/sec 1. 支持4条3.3V数据线High Speed模式
3.0 最高速度 < 104 MB/sec 1. 支持4条3.3V数据线High Speed模式
2. 支持4条1.8V数据线 UHS-I模式
6.0 最高速度 < 6.24Gbps per lane 1. 支持4条3.3V数据线High Speed模式
2. 支持4条1.8V数据线 UHS-I模式
3. 支持UHS-II、UHS-III不同的接口总线模式
8.0 最高速度 < 3938MB/s 1. 支持4条3.3V数据线High Speed模式
2. 支持4条1.8V数据线 UHS-I模式
3. 支持UHS-II、UHS-III不同的接口总线模式
4. 支持PCIe Gen 4 2 lanes不同的接口总线模式

3. SD总线Pin和Register分布

一张 SD卡包括有存储单元存储单元接口电源检测卡及接口控制器接口驱动器 5个部分。存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;电源检测单元 保证 SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;卡及接口控制单元 5个部分控制 SD卡的运行状态,它包括有 8个寄存器;接口驱动器控制 SD卡引脚的输入输出。

  • SD卡功能框图如下:

SD卡的pin定义如下:

  • microSD卡功能框图如下:

microSD卡的pin定义如下:

  • SD 卡寄存器总共有 8个寄存器,用于设定或表示 SD 卡信息,如下:
名称 bit 宽度 描述
CID 128 卡识别号(Card identification number):用来识别的卡的个体号码(唯一的)
RCA 16 相对地址(Relative card address):卡的本地系统地址,初始化时,动态地由卡建议,主机核准
DSR 16 驱动级寄存器(Driver Stage Register):配置卡的输出驱动
CSD 128 卡的特定数据(Card Specific Data):卡的操作条件信息
SCR 64 SD 配置寄存器(SD Configuration Register):SD 卡特殊特性信息
OCR 32 操作条件寄存器(Operation conditions register)
SSR 512 SD 状态(SD Status):SD 卡专有特征的信息
CSR 32 卡状态(Card Status):卡状态信息

4. SD总线协议

SD总线上的通信是基于Command和Data传输的,由一个开始位(“0”)发起,由一个停止位(“1”)终止。SD通信一般是主机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如有需要会有数据(Data)传输参与。

  • Command:Command是启动操作的令牌。Command从主机发送到单个卡(寻址命令)或所有连接的卡(广播命令)。Command在CMD数据线上串行传输。
  • Response:Response是一个令牌,它从一个有地址的卡或从所有连接的卡发送到主机,作为对先前接收到的命令的回答。Response在CMD数据线上串行传输。
  • Data:Data可以从卡转移到主机或反之亦然。Data通过DAT数据线传输。

4.1 SD总线CMD和DATA交互介绍

SD 总线的基本交互是命令与响应交互,如下图:

SD 数据是以块(Black)形式传输的,SDHC卡数据块长度一般为 512 字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要 CRC位来保证数据传输成功。CRC 位由 SD卡系统硬件生成。下图为主机向 SD卡写入数据块操作示意:

SD 数据传输支持单块多块读写,它们分别对应不同的操作命令,多块写入还需要使用命令来停止整个写入操作。数据写入前需要检测 SD 卡忙状态,因为 SD 卡在接收到数据后编程到存储区过程需要一定操作时间。SD卡忙状态通过把 D0 线拉低表示。

数据块读操作与之类似,只是无需忙状态检测。

4.2 SD总线Command和Response的命令格式

  • Command令牌格式如下:

逻辑分析仪抓取CMD8的实际波形图如下:
在这里插入图片描述
每个Command前面都有一个开始位(0),后面有一个结束位(1),总长度为48 bit。每个Command都被CRC位保护,这样就可以检测到传输错误并重复操作。

  • Response的长度有48 或136 bit,这个取决于R1R2R3…的Content的大小,后面会详细介绍Command和Response的定义。Response令牌格式如下:

CMD数据线中,首先传输最高有效位(MSB),最后传输最低有效位(LSB)。

4.3 SD总线Data包格式

使用4条数据线传输时,每次传输 4bit数据,每根数据线都必须有起始位终止位以及CRC位CRC 位每根数据线都要分别检查,并把检查结果汇总然后在数据传输完后通过D0 线反馈给主机。

SD 卡数据包种格式,一种是常规数据(8bit 宽),它先发低字节再发高字节,而每个字节则是先发高位再发低位,1 or 4线传输示意图如下:
在这里插入图片描述
4 线同步发送,每根线发送一个字节的其中两个位,数据位在四线顺序排列发送,DAT3 数据线发较高位,DAT0数据线发较低位。

另外一种数据包发送格式是宽位数据包格式,对 SD卡而言宽位数据包发送方式是针对 SD卡 SSR(SD 状态)寄存器内容发送的,SSR 寄存器总共有 512bit,在主机发出ACMD13命令后 SD卡将 SSR 寄存器内容通过 DAT线发送给主机。宽位数据包格式示意见图如下:
在这里插入图片描述
逻辑分析仪抓取SD卡传输Data的实际波形图如下:
在这里插入图片描述

5. 参考资料

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SDIO】SD2.0协议分析总结(一)-- SD卡基本概率介绍 的相关文章

  • Mybatis动态sql深度剖析

    转自 Mybatis动态sql深度剖析 下文笔者将带领您一步一步的进入Mybatis动态sql的世界 如下所示 mybatis动态sql 动态sql 就是可以变化的sql Mybatis可根据OGNL表达式 一步一步的生成sql语句 myb
  • 【华为OD机试真题 C++】硬件产品销售方案

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • '' is not defined js传递的参数未定义

    jsp页面代码 td style font weight blod text align center width 150px a span style color blue 删除 span a td js代码 function delet
  • ubuntu 安装 cuda10.2 8.0 及 cuBLAS

    Ubuntu 18 04安装 cuda10 2 安装显卡驱动 Install NVIDIA driver sudo apt get install no install recommends nvidia driver 430 Reboot
  • ChatGPT开源吗

    作为一个由OpenAI开发的AI模型 ChatGPT的源代码并没有完全开源 OpenAI提供了API 以让开发者在他们的应用程序中使用ChatGPT的能力 但是源代码并没有公开发布 然而 OpenAI开源了一个与GPT 2相似的模型 称为G
  • 使用Python究竟可以做什么?下面是Python的3个主要应用

    前言 如果您正在考虑学习Python 或者您最近才开始学习 您可能会问自己 我用Python到底能做什么 这个问题很难回答 因为Python有很多应用程序 但随着时间的推移 我发现Python有3种主要的流行应用 Web开发 数据科学 包括
  • 原生js——实现ios辅助触控的悬浮球案例

    用过iphone的都知道 ios系统有一个重要的功能 辅助触控 可以让我们在触摸屏幕有困难或需要自适应配件的情况下使用iphone 辅助触控中 悬浮球充当着重要角色 它置顶悬浮在屏幕边缘 可任意移动 既不影响用户正常操作系统 又能提供许多功
  • 以太坊生产网络/测试网络/私有网络

    要理解以太坊 PrivateNetwork 先要理解以太坊的两种官方网络 目前以太坊官方提供了两种网络 生产环境网络 测试网络 TestNet 下面将分别简单讲解下这两种网络 以太坊生产网络 以太坊的生产网络顾名思义 也就是产生真正有价值的
  • SpringBoot 封装Windows 性能监控

    整体项目结构 BlueSky 的pom xml 文件
  • 华为OD机试 - 观看文艺汇演问题(JS)

    题目描述 为了庆祝中国共产党成立100周年 某公园将举行多场文艺表演 很多演出都是同时进行 一个人只能同时观看一场演出 且不能迟到早退 由于演出分布在不同的演出场地 所以连续观看的演出最少有15分钟的时间间隔 小明是一个狂热的文艺迷 想观看
  • 【数据结构常见七大排序(二)】—选择排序篇【直接选择排序】And【堆排序】

    目录 前言 1 直接选择排序 1 1基本思想 1 2直接选择排序实现过程 1 3动图助解 1 4直接选择排序源码 2 堆排序 2 1堆排序的概念 2 2堆排序源码 前言 选择排序有两种常见的 直接选择排序 堆排序 1 直接选择排序 1 1基

随机推荐