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 Class、UHS Speed Class和Video 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 |
卡标识寄存器,提供制造商ID、OEM/应用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卡)
数据流操作
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文章来源:https://www.toymoban.com/news/detail-834452.html
SDMMC驱动SD卡步骤
文章来源地址https://www.toymoban.com/news/detail-834452.html
到了这里,关于STM32之关于SD卡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!