MEMORY系列之“SDIO”

本文主要介绍SDIO接口及SDIO存储卡的相关特性。

1、SDIO接口

SDIO接口不只用于存储数据的SD存储卡,还有SD I/O卡,MMC卡。
其中SD I/O卡与SD存储卡是有区别的,SD I/O卡实际上就是利用SDIO接口的一些模块,插入SD的插槽中,扩展设备的功能,如:SDI/O Wi-Fi,SDI/O CMOS相机等。

在这里插入图片描述
SD规范包括如下几部分:

  • 物理层规范

  • 文件系统规范

  • SD卡安全规范

  • SD卡音频应用规范+其他相关应用规范

  • SD MC扩展规范、移动设备

  • SDIO卡规范

由于SDIO可支持各种设备,所以对SDIO接口进行初始化后,上电后就要对它接入的卡进行识别、分类,这个过程是主机向卡发送一系列不同的命令,根据卡不同的响应来进行分类。

SDIO接口包含CLK、CMD及4条DAT[3:0]信号线。这6条信号线都是共用的总线,即新加入的设备可以并联接入到SDIO接口。SDIO主机是通过命令和SD从设备的响应来寻址的,所以不需要片选信号线。

  • CLK是卡的时钟信号线,由主机产生时钟信号,SD卡和SDIO卡的时钟频率可为0~25MHz。在命令和数据线上,每个时钟周期传输1位命令或数据。

  • CMD为命令信号线,SDIO的所有由主机发出的命令及从机对命令的响应,都是在这个信号线上传输的。

  • DAT[3:0]表示4条数据线,主机和从机的数据信号在这4条线上传输。

SD卡可以通过单数据线(DATA0)或四根数据线(DATA[3:0])进行数据传输。
单根数据线传输的最大速率为25Mbit/s,四根数据线传输的最大速率为100Mbit/s。

2、SD Memory Card

SD存储卡有如下一些版本和类别:
在这里插入图片描述

2.1、SD卡分类(速度等级)

四线速度模式分为以下几种:

  • Default Speed Mode:
    3.3V signaling, Frequency up to 25MHz, up to12.5MB/sec;

  • High Speed Mode:
    3.3V signaling, Frequency up to 50MHz, up to25MB/sec;

  • SDR12:
    1.8V signaling, Frequency up to 25MHz, up to 12.5MB/sec;

  • SDR25:
    1.8V signaling, Frequency up to 50MHz, up to 25MB/sec;

  • SDR50:
    1.8V signaling, Frequency up to 100MHz, up to 50MB/sec;

  • SDR104:
    1.8V signaling, Frequency up to 208MHz, up to 104MB/sec;

  • DDR50:
    1.8V signaling, Frequency up to 50MHz, sampled on both clock edges, upto 50MB/sec;

SD存储卡传输速度分类如下:

  • class-0:这类卡片不指定性能

  • class-2:不低于2MB/s

  • class-4:不低于4MB/s

  • class-6:不低于6MB/s

  • class-10:不低于10MB/s

2.1.1、UHS-I

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
★注:DDR50 is mandatory for microSDform factor and optional for Standard size SD form factor.

在这里插入图片描述
在这里插入图片描述

2.1.2、UHS-II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2、引脚定义

2.2.1、SD卡引脚定义

在这里插入图片描述

2.2.2、MicroSD(TF)/MiniSD卡引脚定义

TF卡(TransFlash)是Motorola与SanDisk共同推出的记忆卡规格,它采用最新的封装技术,并配合SanDisk最新的NAND MLC技术和控制器技术。大小为11x15x1mm,TransFlash Card附有SD转接器,可兼容任何SD读卡器。TF卡是市面上最小的闪存卡,TF卡产品采用SD架构设计而成,SD协会于2004年底正式将其更名为Micro SD卡。
在这里插入图片描述

2.2.3、MiniSD卡引脚定义

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
★注:SD1-bit模式和SPI模式的区别:

  • SPI总线是一个通用总线,大部份芯片都用硬件模块;

  • SPI模式支持不带CRC校验的传输方式,可以降低硬件要求;

  • SD的CMD线与DATA线之间有可能同时产生数据,对没有SD硬件模块的主机支持起来难度较高。

2.2.4、UHS-II引脚定义

在这里插入图片描述
SD bus contacts 7 and 8 Pins are used for RCLK. Thefirst row contacts in non UHS-II mode are equivalent to SD Memory Card PadAssignment.
图片
UHS-II Card shall not drive unused lines of SD I/Fin UHS-II mode. (CLK, CMD and DAT[3:2]. DAT[2] may be used as interrupt line in case ofUHS-II SDIO Card. In this case, card controls DAT[2] level.) Host shall notleave these unused lines floating, but keep them at a defined high or lowlevel. How to keep line level is dependent on host implementation. For example,use pull-up resistor or host drives the lines to low level without providingpull-up voltage. As DAT[1:0] are used for providing RCLK, individual linecontrol is required to use pull-up method for CMD and DAT[3:2]. CLK (withoutpull-up resistor) should be driven to low.

In case ofentering hibernate mode, unused lines shall be set to low before turning offVDD1.

2.3、SD卡总线协议

SD卡总线协议包括如下三种:

  • SD Bus Protocol

  • SPI Bus Protocol

  • UHS-II Bus Protocol

2.4、SD卡操作模式

在这里插入图片描述
SD模式状态图如下图所示:

在这里插入图片描述
SPI模式状态图如下图所示:
在这里插入图片描述

2.5、SD卡的命令格式

SDIO的所有命令及命令响应,都是通过SDIO-CMD引脚来传输的。且命令只能由HOST发出。

SDIO协议规定了非常多的命令,把这些命令分类别来整理,都有11种之多,包括基本命令、块读取命令、块写入命令、写保护命令、擦除命令、卡上锁命令、应用指定命令、I/O模式命令、功能选择命令及特殊的应用命令ACMD。其中,在使用ACMD命令前,要先向卡发送编号为CMD55的应用指定命令。

所有的命令长度都固定为48bits,传输速率为1.92us@25MHz或者0.96us@25MHz。一个命令包含了6个段,分别为start bit,transmission bit,command index段、argument段、crc7段和end bit,其中除了command index段和argument段是需要在软件配置的时候设置的,其它段都由硬件完成。command index就是命令索引(SD协议规定的命令编码),如命令CMD0,CMD1…的编码为0,1…。有的命令会包含参数,如读命令的参数为要读取数据的地址,这些命令参数被存放在argument段。

SD存储卡的指令和响应格式如下表所示:
在这里插入图片描述
SD卡对主机的各种命令回复称为响应,除了CMD0命令外,SD卡在接收到命令都会返回一个响应。对于不同的命令,会有不同的响应格式,一共有7种,简称R1~R7(SD存储卡不支持R4、R5,SDIO卡支持7种)。按响应的字节长度又分为长响应型(136bit)和短响应型(48bit)。

当需要知道RCA和卡状态时,可以向卡发送CMD3命令,然后等待SD卡对命令的响应。SDIO接口通过CMD信号线接收到响应后,由硬件去除响应的头尾信息,把command index保存到SDIO_RESPCMD寄存器,把Argument field内容保存存储到SDIO_RESPx寄存器中。然后软件读取这两个寄存器即可获得所需的信息。

2.6、SD卡数据传输格式

SD卡的数据写入、读取的最小单位是块,每块的大小为512字节。首先软件通过SDIO接口的CMD信号线发送多块写入的命令,接收到正常的响应后,要写入的数据线从4根DAT信号线传输出去,每块结束后是CRC校验码。接着要检测忙状态,数据传输到SD卡后,SD卡启动内部时序保存数据,这时SD卡会把DAT0信号线拉低,表示处于“忙”状态,忙状态结束后,主机才能发送下一个数据块的数据。

SD卡有两种数据包格式:

Usualdata (8-bit width): Theusual data (8-bit width) are sent in LSB (Least Significant Byte) first,MSB (Most Significant Byte) last sequence. But in the individual byte, it is MSB (Most Significant Bit)first, LSB (Least Significant Bit) last.

★注:在字节之间,先传输低字节后传输高字节;在字节内部,先传输高位后传输低位。

Widewidth data (SD Memory Register): The wide width data is shifted from the MSBbit.

★注:以块(512bit)为单位发送,先传输最高位后传输低位。

在这里插入图片描述
在这里插入图片描述

2.7、SD Memory Card寄存器

在这里插入图片描述

2.7.1、OCR寄存器

OCR(操作条件寄存器)中存储了卡片的电压信息以及部分状态信息:其中一个状态位(bit 31)指示卡片的上电操作是否完成,另外一个状态位(bit 30)指示卡片的容量状态(0代表SDSC、1代表SDHC或者SDXC)。寄存器的说明如下图所示:
在这里插入图片描述

2.7.2、CID寄存器

CID(卡标识寄存器)总共128 bits,包含了卡片的识别信息,每个独立的卡片都应该有一组独一无二的识别信息。寄存器说明如下图所示:
在这里插入图片描述

2.7.3、CSD寄存器

CSD(卡特性寄存器)也是128 bits,提供了访问卡片内容的一些信息如:传输速率、数据格式、错误类型、最大是数据访问时间、DSR寄存器是否启用的。其中bit[126:127]记录了CSD的版本号,CSD Version1.0为标准容量卡所用,CSD Version 2.0为大容量或超大容量卡所用。CSD Version 1.0寄存器说明如下图所示:
在这里插入图片描述

2.7.4、SCR寄存器

SCR(卡配置寄存器)总共64 bits,定义了卡片的一些特殊功能,寄存器说明如下图所示:

在这里插入图片描述

2.7.5、CSR寄存器

CSR(卡片状态寄存器)总共32 bits,代表了执行一个命令的错误和状态信息,其信息包含在R1格式的应答中返回给主机,寄存器说明如下图所示:
在这里插入图片描述
在这里插入图片描述

2.7.6、SSR寄存器

SD Status 寄存器包含了SD存储卡的的专有属性并为以后的功能扩展保留了足够的空间,其大小为512 bits即一个块大小,这个寄存器作为ACMD13命令的执行结果,通过DATA线发送到主机,寄存器说明如下图所示:

图片

3、SDIO Card

SDIO卡在SD内存卡基础上发展起来,SDIO接口兼容之前的SD内存卡,可连接SDIO设备,根据SDIO协议,支持设备包括蓝牙,GPS卡,网卡,电视卡等。

SDIO协议是SD协议的一个子协议,很多地方保留SD卡协议,在这基础上增加了CMD52和CMD53命令。SDIO与SD的一个重要区别是,增加了低速标准。

3.1、SDIO设备分类

SDIO设备分类如下:

低速卡(Low-Speed SDIO cards):调制解调器、条形码扫描仪,GPS接收器等,时钟频率为0~400KHz,4bits SD模式为optional;
高速卡(Full-Speed SDIO cards):网卡等,时钟频率为0~25MHz,传输速率为10MB/s;
组合卡(Combo cards):组合卡指SDIO+存储器,组合卡中SDIO最高CLOCK为25MHZ,SD最高高于25M时强制4bitsSD模式。

3.2、SDIO卡引脚定义

在这里插入图片描述


本文转自-------硬件助手 https://mp.weixin.qq.com/s/JIUnmtXVT4RW052G_PFIKA

STM32H7系列微控制器支持DMA(Direct Memory Access)传输,同时也支持SDIO(Secure Digital Input/Output)接口。DMA可以在外设和存储器之间直接进行数据传输,从而减轻CPU的负担,提高系统性能。SDIO接口则用于连接外部SD卡或MMC卡,实现数据的读写操作。 在STM32H7系列微控制器中,可以通过配置DMA来实现SDIO的数据传输。首先需要初始化SDIO接口,并配置相关的时钟、引脚和工作模式。然后,配置DMA通道以及相关的传输参数,如数据长度、传输方向和缓冲区地址等。最后,启动DMA传输即可。 以下是一个简单的示例代码,用于在STM32H7系列微控制器上使用DMA进行SDIO数据传输: ```c #include "stm32h7xx.h" // 初始化SDIO接口 void SDIO_Init(void) { // 配置SDIO接口的时钟和引脚 // 配置SDIO工作模式及其他参数 } // 配置DMA通道 void DMA_Config(void) { // 配置DMA通道的相关参数,如传输方向、数据长度、缓冲区地址等 } // 启动DMA传输 void DMA_StartTransfer(void) { // 启动DMA传输 } int main(void) { // 初始化系统时钟和其他模块 // 初始化SDIO接口 SDIO_Init(); // 配置DMA通道 DMA_Config(); // 启动DMA传输 DMA_StartTransfer(); while (1) { // 等待传输完成或处理其他任务 } } ``` 请注意,以上代码仅为示例,实际应用中还需要根据具体的需求进行适当的修改和完善。此外,还需要参考STM32H7系列微控制器的技术参考手册和相关的库文件文档进行详细的配置和开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值