SD卡协议简介

news/2024/10/18 12:23:19/

本文章内容来自 野火STM32F103教学视频 的 SD卡 篇。

SDIO协议简介

        SD卡(Secure Digital Memory Card)在我们的生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是 SPI接口,另外一种就是 SDIO接口。SDIO 全称是 安全数字输入/输出接口,多媒体卡(MMC)、SD卡、SD I/O卡 都有 SDIO接口。STM32F103系列控制器有一个 SDIO主机接口,它可以与 MMC卡、SD卡、SD I/O卡 以及 CE-ATA 设备进行数据传输。

参考资料:

  • 多媒体卡协会网站 www.mmca.org 中提供了有MMCA技术委员会发布的多媒体卡系统规范。
  • SD卡协会网站 www.sdcard.org 中提供了SD存储卡和SDIO卡系统规范。
  • CE-ATA工作组网站 www.ce-ata.org 中提供了CE_ATA系统规范。

SDIO设备分类

        MMC卡可以说是SD卡的前身,现阶段已经用得很少。SD I/O卡本身不是用于存储的卡,它是指利用SDIO传输协议的一种外设。比如Wi-Fi Card,它主要是提供Wi-Fi功能,有些Wi-Fi模块是使用串口或者SPI接口进行通信的,但Wi-Fi SDIO Card是使用SDIO接口进行通信的。并且一般设计SD I/O卡是可以插入到SD的插槽。CE-ATA是专为轻薄笔记本硬盘设计的硬盘高速通讯接口。

        目前SDIO协议提供的SD卡规范版本最新是4.01版本,但STM32F42x系列(F1系列也一样)控制器只支持SD卡规范版本2.0,即只支持标准容量SD和高容量SDHC标准卡,不支持超大容量SDXC标准卡,所以可以支持的最高卡容量是32GB。

SD卡物理结构

        一般SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器 5个部分。

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

SD卡总共有8个寄存器,用于设定或表示SD卡信息。

这些寄存器只能通过对应的命令访问,SDIO定义64个命令,每个命令都有特殊意义,可以实现某一特定功能,SD卡接收到命令后,根据命令要求对SD卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现SD卡的控制以及读写操作。

SD卡寄存器列表:

名称bit宽度描述
CID128卡识别号(Card identification number):用来识别的卡的个体号码(唯一的)
RCA16相对地址(Relative card address):卡的本地系统地址,初始化时,动态地由卡建议,主机核准。
DSR16驱动级寄存器(Driver Stage Register):配置卡的输出驱动
CSD128卡的特定数据(Card Specific Data):卡的操作条件信息
SCR64SD配置寄存器(CD Configuration Register):SD卡特殊特性信息
OCR32操作条件寄存器(Operation conditiongs register)
SSR512SD状态(SD Status):SD卡专有特征的信息
CSR32卡状态(Card Status):卡状态信息

                  每个寄存器位的含义可以参考SD简易规格文件《Physical Layer Simplified Specification V2.0》第5章内容。

SDIO总线拓扑

        SD卡一般都支持 SDIO 和 SPI 这两种接口,本章内容只介绍 SDIO 接口方式,SD 卡与 SDIO 接口示意图如下:

         虽然可以共用总线,但不推荐多卡槽共用总线信号,要求一个单独 SD 总线应该连接一个单独的 SD 卡。

        SD 卡使用 9-pin 接口通信,其中3根电源线、1根时钟线、1根命令线和4根数据线,具体如下:​​​​​​​

  • CLK:时钟线,由 SDIO 主机产生,即由 STM32 控制器输出;
  • CMD:命令控制线,SDIO 主机通过该线发送命令控制SD卡,如果命令要求 SD 卡提供应答,SD 卡也是通过该线传输应答信息;
  • D0-3:数据线,传输读写数据;SD 卡可将 D0 拉低表示忙状态;
  • VDD、Vss1、Vss2:电源和地信号。

SDIO总线:

        SDIO的通信时序的物理逻辑非常简单,SDIO不管是从主机控制器向SD卡传输,还是SD卡向主机控制器传输都只以CLK时钟线的上升沿为有效。SD卡操作过程会使用两种不同频率的时钟同步数据,一个是识别卡阶段时钟频率FOD,最高为400kHz;另外一个是数据传输模式下时钟频率FPP,默认最高为25MHz,如果通过相关寄存器配置使SDIO工作在高速模式,此时数据传输模式最高频率为50MHz。

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

命令与响应交互:

        SD 数据是以块 (Black) 形式传输的,SDHC 卡数据块长度一般为 512 字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要 CRC 位来保证数据传输成功。CRC 位由SD卡系统硬件生成。STM32控制器可以控制使用单线或4线传输,本开发板使用4线传输。

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

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

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

        SD卡数据包有两种格式,一种是常规数据 (8bit宽),它先发低字节再发高字节,而每个字节则是先发高位再发低位,4线传输示意如下图:

 

        另外一种数据包发送格式是宽位数据包格式,对 SD卡 而言宽位数据包发送方式是针对 SD卡SSR(SD状态) 寄存器内容发送的,SSR寄存器总共有 512bit,在主机发出 ACMD13 命令后 SD卡 将 SSR 寄存器内容通过 DAT线 发送给主机。宽位数据包格式示意图如下:

 


http://www.ppmy.cn/news/465019.html

相关文章

贴片SD卡移植FATFS文件系统

一、前言 手头有一块深圳雷龙提供的贴片 CS 创世 SD NAND Flash,挂载个文件系统把玩一下。首先介绍一下使用的贴片 SD 卡,以前使用的都是拔插式的 SD 卡,下面这个样子: 深圳雷龙提供的CS创世 SD NAND Flash 如下图: 二…

SD和SDHC和SDXC卡的区别, class与u1/u3关系

origin: https://product.pconline.com.cn/itbk/digital/ydcc/1107/2483449.html u1/u3与class2/class4/class10等指的是速度 SD和SDHC和SDXC卡的区别是什么 SD和SDHC和SDXC卡的区别是什么?SD卡,SDHC卡,SDXC卡区别在于规格不一样&#xff0c…

芯片的SD/MMC控制器以及SD卡介绍

1、MMC、SD卡、eMMC介绍 1.1、三者关联 (1)最早出现的是MMC卡,卡片式结构,按照MMC协议设计。(相较于NandFlash芯片来说,MMC卡有2个优势:第一是卡片化,便于拆装;第二是统一了协议接口&#xff0…

SD卡小结

目录 卡类型不同卡之间的对比MMCmicro vs. MicroSD参数一览接口类型写入速度视频写入速度Application 写入速度选购参考 UHSSD、SDHC和SDXC卡的区别是什么参考文献 卡类型 外置存储卡历史上出现过各种外形、标准的卡,(MMC,索尼记忆棒等等&am…

LiangGaRy-学习笔记-Day23

1、准备说明 1.1、环境准备 服务器:3台 克隆虚拟机–>起码克隆三台192.168.75.131~133关闭防火墙、关闭selinux配置/etc/hosts文件的对应关系修改IP–>/etc/sysconfig/network-scripts 克隆虚拟机 点击虚拟机–>设置–>克隆–>克隆–>然后默…

(2023最新版)互联网大厂1120道Java面试真题附答案详解

很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。 问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。 应届生:你该如何准备简历&#…

numpy 笔记:histogram

1 方法介绍 计算数据的直方图 numpy.histogram(a, bins10, rangeNone, densityNone, weightsNone) 2 参数介绍 a输入数据,直方图是在展平(flatten)的数据上计算的bins bins 是int ——>定义给定范围内等宽 bin 的数量bins是序列 ——&…

仿真软件计算机配置,电脑配置关于ANSYS等仿真软件,AMDcpu可选择吗?

不建议采用AMD处理器。 Ansys等仿真软件涉及大量科学运算,其底层通常采用MKL进行加速,众所周知MKL对AMD处理器基本上是负优化。当然网上也有通过修改环境变量的方式强制开启MKL支持,但这种做法没有得到官方测试和支持,稳定性无法保…