STM32之关于SD卡

        SD卡,Secure Digital Card,称为安全数字卡(安全数码卡)。 SD卡系列主要有三种:SD卡(full size)、MiniSD卡和MicroSD卡

特点:

1、容量大         2、高安全性        3、 体积小         4、传输速度快         5、接口简单

SD卡实际容量计算公式:      32GB SD卡实际容量:32 * 10003  / (1024) 3 ≈ 29GB

SD卡存储容量分为四种:

1、SDSC(Secure Digital Standard Capacity)

2、SDHC(Secure Digital High Capacity )

3、SDXC(Secure Digital eXtended Capacity )

4、SDUC(Secure Digital Ultra Capacity)

SD规范: https://www.bilibili.com/read/cv18024118/

官网 https://www.sdcard.org/downloads/pls/archives/

SD卡的速度等级

        SD卡速度等级分为:Speed ClassUHS Speed ClassVideo Speed Class

Video Speed Class 分为V6、V10、V30、V60、V90对应不同视频格式

SD卡的操作方式

        SD卡的操作方式分为两种:SDIO接口以及SPI接口

SD卡所定义的引脚也不一样的,如下图所示:

上面使用的是SD卡,SD卡的引脚是9脚的,除此之外还有8脚的TF卡,TF卡只比SD卡少了一个电源引脚VSS2,SD卡和TF卡只有引脚和形状大小不同,内部结构类似,操作时序完全相同,可用完全相同的代码驱动。

TF卡所定义的引脚

SD卡寄存器

        SD卡有8个寄存器,但不能直接进行读写操作,需要通过命令来控制。SD卡协议定义了一些命令用于实现某一特定功能,SD卡根据收到的命令要求对内部寄存器进行修改。

名称

宽度(bit)

描述

CID

128

卡标识寄存器,提供制造商IDOEM/应用ID、产品名称、版本、序列号、制造日期等信息(每个卡都是唯一的)

RCA

16

相对卡地址(Relative card address)寄存器,提供本地系统中卡的地址,动态由卡建议,在主机初始化的时候确定

注意:仅SDIO模式下有,SPI模式下无RCA

CSD

128

卡特定数据寄存器,提供SD卡操作条件相关信息和数据

SCR

64

SD配置寄存器,提供SD卡一些特定的数据  

OCR

32

操作条件寄存器,主要是SD卡的操作电压等信息

SD卡常用命令介绍

        SD总线上的通信基于命令数据位流传输。

命令:应用相关命令(ACMD)和通用命令(CMD),通过命令线CMD传输,固定长度48位

响应:SD卡接收到命令,会有一个响应,用来反应SD卡状态。有2种响应类型:短响应(48位,格式与命令一样)和长响应(136位)。

数据:主机发送的数据 / SD发送的数据。SD数据是以块(Block)形式传输,SDHC卡数据块长度一般为512字节。数据块需要CRC保证数据传输成功。

SD卡命令格式

        SD卡的命令格式由6个字节组成,发送数据时高位在前,SD卡的写入命令格式如下:

在SDIO模式和SPI模式下,可使用的命令和特定类支持的命令有所不同。

SD卡指令

1、基本命令 Class 0(CMD0/CMD8/CMD9/CMD10/CMD12/CMD2/CMD3)

2、面向块读取命令 Class 2(CMD16/CMD17/CMD18)

3、面向块写入命令 Class 4(CMD16/CMD24/CMD25)

4、擦除命令 Class 5

5、加锁命令 Class 7

6、特定于应用命令 Class 8(CMD55)

7、面向块写保护命令 Class 6

8、I/O模式命令 Class 9

9、SD卡特定应用命令( ACMD41 / ACMD6 / ACMD51)

10、Switch功能命令

SD卡常用命令:

SD卡响应

        SD卡和单片机的通信采用发送应答机制,每发送一个命令,SD卡都会给出一个应答,以告知主机该命令的执行情况,或者返回主机需要获取的数据。使用SDIO接口时,响应通过CMD线传输。

        SD卡响应因使用接口不同,格式也不同。响应具体有R1、R1b、R2、R3、R7,响应内容大小可以分为短响应48bit长响应136bit

SD卡操作步骤介绍

SD卡初始化

        在SD卡系统(主机和SD卡)定义了两种操作模式:卡识别模式数据传输模式

        系统复位后,主机和SD卡都处于卡识别模式,主机在总线上找设备;当SD卡被主机识别后,SD卡进入到数据传输模式,而主机在总线上所有卡都被识别后也进入数据传输模式

1、卡识别模式:识别总线上的SD卡类型                2、数据传输模式:读写操作

SDIO模式进行SD卡初始化,则需要区分4类卡(SDHC卡、SDSC卡、SD1.x卡、MMC卡)

SDIO模式下的初始化

数据流操作

SD卡单块数据块读取流程

​​​​

注意:对于标准容量卡,数据块大小由CMD16命令设置;而对于高容量卡,数据块大小为512字节。

 SD卡多块数据块读取流程

 SD卡单块数据块写入流程

注意:SD卡收完一个数据块以后,会拉低MISO,直到数据块编程结束。 

SD卡多块数据块写入流程

注意:ACMD指令仅对SD卡有效,另外需要先发送CMD55指令

SDIO接口介绍

        SDIO,全称 Secure Digital Input and Output,即安全数字输入输出接口

STM32系列控制器只支持SD卡规范版本2.0,即只支持标准容量SD卡和高容量SDHC卡,不支持超大容量SDXC标准卡,所以可以支持最高卡容量是32G。

SDIO适配器

        提供SD卡特有的功能:产生时钟、发送命令、接收应答、双向传输数据

SDIO和SD卡通信一般以数据块的形式进行传输

SDIO寄存器

SDIO相关HAL库驱动

用于发送SDIO_SendCommand

用于接收响应SDIO_GetResponse

SDIO驱动SD卡步骤(HAL库)

SDMMC接口介绍

        SDMMC,全称 Secure Digital Input/Output MultiMediaCard interface, 安全数字输入输出多媒体卡接口。

SDMMC在SD/SDIO操作模式下有多种速度模式

SDMMC相关HAL库驱动

用于发送SDMMC_SendCommand函数

用于接收响应SDMMC_GetResponse

SDMMC驱动SD卡步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啵啵520520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值