1. SD简介

SD卡,Secure Digital Card,称为安全数字卡(安全数码卡)。

SD卡系列主要有三种:SD卡(full size)、MiniSD卡和MicroSD卡(原名 TF卡)。

特点:容量大、高安全性、体积小、传输速度快、接口简单

2. SD分类

  • 存储等级
  • 速度等级
  • SD卡速度等级分为:Speed Class、UHS Speed Class和Video Speed Class 

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

    ​​​​​​3. SD卡的驱动方式

     微处理器对SD卡进行操作,可通过SPI接口、SDIO接口。不同接口,SD卡引脚功能不一样。

  •  SDIO接口通信线:CLK/CMD/DAT0~3
  • CLK:时钟线,由SDIO主机产生,由STM32微控制器SDIO外设输出 

    CMD:命令线,SDIO主机通过该线发送命令控制SD卡,若命令要求SD卡响应,SD卡也是通过该线传输响应信息。

    DAT0~3:数据线,用于接收或发送数据;SD卡可将DAT0拉低表示处于忙状态

    TF卡只比SD卡少了一个电源引脚VSS2,其他引脚功能类似。

    SD卡和TF卡只有引脚和形状大小不同,内部结构类似,操作时序完全相同,可用完全相同的代码驱动 

    4. SD卡寄存器

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

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

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

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

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

    5. SDIO模式

    5.1SD卡命令格式 

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

  • Byte1:命令字的第一个字节为命令号(如CMD0、CMD1等),格式为“0 1 x x x x x x” 
  • Byte2~Byte5:命令参数,有些命令参数是保留位,没有定义参数的内容,保留位应设置为0

  • Byte6:用于校验命令传输内容正确性,前7位为CRC(循环冗余校验)校验位,最后一位为停止位0

  • 注意:使用SDIO接口驱动,CRC7校验值必须正确;而SPI接口驱动,CRC7校验默认关闭,即伪CRC

  • SD卡常用命令 
  • SD卡响应
  •  SD卡和单片机的通信采用发送应答机制。

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

    SD卡响应因使用接口不同,格式也不同。响应具体有R1、R1b、R2、R3、R7。

    响应内容大小可以分为短响应48bit和长响应136bit。

    5.2 SD卡操作步骤

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

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

     

    5.2.1SD卡初始化

    需要区分4类卡(SDHC卡、SDSC卡、SD1.x卡、MMC卡)

     5.2.2 SD卡数据块读取流程

  • 单块
  • 多块
  • 5.2.3 SD卡写入流程

  •  单块
  • 多块
  • 作者:keep–learning

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32 SD卡实验指南

    发表回复