STM32之关于SD卡

这篇具有很好参考价值的文章主要介绍了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)

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

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

SD卡的速度等级

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

SD卡的操作方式

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

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

TF卡所定义的引脚

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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总线上的通信基于命令数据位流传输。

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

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

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

SD卡命令格式

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

在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卡常用命令:

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

SD卡响应

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

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

SD卡操作步骤介绍

SD卡初始化

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

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

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习
SDIO模式下的初始化

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

数据流操作

SD卡单块数据块读取流程

​​​​stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

 SD卡多块数据块读取流程

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

 SD卡单块数据块写入流程

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

SD卡多块数据块写入流程

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

SDIO接口介绍

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

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

SDIO适配器

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

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

SDIO寄存器

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

SDIO相关HAL库驱动

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

用于发送SDIO_SendCommand

用于接收响应SDIO_GetResponse

SDIO驱动SD卡步骤(HAL库)

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

SDMMC接口介绍

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

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

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

SDMMC相关HAL库驱动

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习

用于发送SDMMC_SendCommand函数

用于接收响应SDMMC_GetResponse

SDMMC驱动SD卡步骤

stm32 sd 容量,STM32专区,单片机,嵌入式硬件,学习文章来源地址https://www.toymoban.com/news/detail-834452.html

到了这里,关于STM32之关于SD卡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32读写SD卡(SPI模式)

    目录 一、SD卡简介 二、源码下载 三、移植条件 1、芯片参数 2、硬件连接 四、驱动代码 1、依赖宏如下 2、驱动代码实现 3、测试代码 4、运行截图 SD卡有SD驱动模式和SPI驱动模式,本例中使用SPI模式驱动SD卡。 https://download.csdn.net/download/qq_30095023/88014550 1、芯片参数 芯片类型:

    2024年02月07日
    浏览(42)
  • stm32读写SD卡(SDIO模式)

    目录 一、SD卡简介 二、源码下载 三、移植条件 1、芯片参数 2、硬件连接 四、驱动代码 1、依赖宏如下 2、驱动代码实现 3、测试代码 4、运行截图 五、总结 SD卡有SDIO驱动模式和SPI驱动模式,本例中使用SDIO模式驱动SD卡。 https://download.csdn.net/download/qq_30095023/88702705 https://downl

    2024年01月24日
    浏览(46)
  • STM32开发_利用SPI协议读写SD卡、介绍SD卡SPI时序

    目录 一、​  SD卡引脚接口功能介绍 1.1 SD卡引脚接口图 1.2 SPI方式驱动SD卡介绍 1.3 开发板接口定义 二、MMC卡、SD卡介绍 2.1 SD卡和MMC两者间区别 2.2 SD卡版本说明 2.3 SD卡常用的指令表 三、向SD卡发送命令的步骤介绍(SendSDCardCmd) 3.1 取消选中SD卡(SDCardCancelCS) 3.2 选中SD卡(SDCardSele

    2024年02月16日
    浏览(46)
  • 关于单片机的时钟浅谈及STM32F103/F030单片机的内外时钟切换问题

    本文主要讲解单片机的时钟系统的相关知识,并进行超频测试,同时介绍如何在STM32F0单片机上进行内外时钟的切换,在不使用外部晶振或者外部晶振不启动时自动切换内部时钟的方法。 问题来源于群里的一次问答: 诚然,当使用固件库时,把外部晶振摘掉,系统确实会自动

    2024年02月15日
    浏览(42)
  • STM32CubeMX系列09——SDIO(SD卡读写、SD卡移植FATFS文件系统)

    ==== 文章汇总(有代码汇总) ==== 准备看看这方面的知识,一时间还没不清有什么区别,先补补课,不需要的跳过。 参考文章(内容来源):http://www.360doc.com/content/21/1125/22/59057945_1005908465.shtml 主要写这两个:SD卡、TF卡 共同点:SD、TF、MMC都是在MMC基础上演化发展不同的规范,

    2024年02月09日
    浏览(46)
  • 实训关于stm32单片机的多个传感器应用(附C++源码和解析)

    目录 1.实验的目的和要求 2.设计的软件环境 3.思路流程图 4.关键代码解析 4.1温湿度传感器(要监测当前环境的温度、湿度,通过温湿度传感器来实现的) 4.2.光敏电阻传感器(要监测当前环境的光照(黑天和白天),通过光敏电阻传感器来实现的,如果是黑夜,LED灯就亮蓝色

    2023年04月25日
    浏览(35)
  • STM32CubeMX教程27 SDIO - 读写SD卡

    正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 逻辑分析仪nanoDLA 野火DAP仿真器 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板 SDIO读写4线SD卡,实现轮询方式读写SD卡、以中断方式读取SD卡和以DMA方式读取SD卡 安全数码

    2024年02月19日
    浏览(64)
  • STM32——SDIO的学习(驱动SD卡)(实战篇)

    目录 一、SDIO寄存器 1.1 SDIO电源控制寄存器(SDIO_POWER) 1.2 SDIO时钟控制寄存器(SDIO_CLKCR) 1.3 SDIO参数寄存器(SDIO_ARG) 1.4 SDIO命令寄存器(SDIO_CMD) 1.5 SDIO命令响应寄存器(SDIO_RESPCMD) 1.6 SDIO响应 1..4 寄存器(SDIO_RESPx) 1.7 SDIO数据定时器寄存器(SDIO_DTIMER) 1.8 SDIO数据长度寄存器(SDIO_DLEN) 1.9 SDI

    2024年02月16日
    浏览(65)
  • STM32——SDIO的学习(驱动SD卡)(理论篇)

    目录 一、SD卡简介 1.1历史 1.2 tf卡和SD卡的区别 1.3 mmc,emmc,nand,flash的关系 1.4 SD卡的规格等级 1.4.1按容量分 1.4.2 class等级 1.4.3 UHS总线模式 1.4.4 UHS速度等级 1.4.5 VSC视频速度等级 二、SD卡的内部结构 三、SDIO的学习 3.1 SDIO的主要功能 3.2 SDIO总线拓扑 ​3.3 SDIO功能描述  3.3.1 SD

    2024年02月16日
    浏览(47)
  • stm32在SDIO模式下SD写入错误的问题

    1、问题描述 使用FAT32 f_write 多次执行写操作时,会报FR_DISK_ERR错误,而且是刚开始写不报错,写几次后会一直报错。 设断点跟踪到HAL_SD_WriteBlocks中,在调用SDMMC_CmdWriteMultiBlock时,会报SDMMC_ERROR_TX_UNDERRUN,意思 是Transmit FIFO underrun 2、原因分析 如下图所示,SDMMC开始写操作时,首

    2023年04月24日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包