SD卡

总结 SD 卡的使用

前言

SD卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选:

  1. 一种是SPI接口
  2. 另外一种就是SDIO接口。SDIO全称是安全数字输入/输出接口,多媒体卡(MMC)、SD卡、SD I/O卡都有SDIO接口。 stm32f4xx系列控制器有一个SDIO主机接口,它可以与MMC卡、SD卡、SD I/O卡以及CE-ATA设备进行数据传输。
  • MMC卡可以说是SD卡的前身, 现阶段已经用得很少。
  • SD I/O卡本身不是用于存储的卡,它是指利用SDIO传输协议的一种外设。
    • 比如Wi-Fi Card, 它主要是提供Wi-Fi功能,有些Wi-Fi模块是使用串口或者SPI接口进行通信的,但Wi-Fi SDIO Card是使用SDIO接口进行通信的。 并且一般设计SD I/O卡是可以插入到SD的插槽。
  • CE-ATA是专为轻薄笔记本硬盘设计的硬盘高速通讯接口。

在stm32中可以使用片上外设SPISDIO来对这些卡进行控制

即使目前SD协议提供的SD卡规范版本最新是4.01版本,但stm32f4xx系列控制器只支持SD卡规范版本2.0, 即只支持标准容量SD和高容量SDHC标准卡,不支持超大容量SDXC标准卡,所以可以支持的最高卡容量是32GB。

SD卡的物理结构

从上图来看,SD卡主要由五个部分组成,并且其有8个寄存器,这些寄存器是用来设置SD卡的信息的。这些寄存器只能通过对应的命令访问, 对SD卡进行控制操作并不是像操作控制器GPIO相关寄存器那样一次读写一个寄存器的,它是通过命令来控制, SDIO定义了64个命令,每个命令都有特殊意义,可以实现某一特定功能,SD卡接收到命令后, 根据命令要求对SD卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现SD卡的控制以及读写操作。

各个寄存器的作用:

SD的引脚是9根:

  • CLK:时钟线,由SDIO主机产生,即由STM32控制器输出;

  • CMD:命令控制线,SDIO主机通过该线发送命令控制SD卡,如果命令要求SD卡提供应答(响应),SD卡也是通过该线传输应答信息;

  • D0-3:数据线,传输读写数据;SD卡可将D0拉低表示忙状态;

  • VDD、VSS1、VSS2:电源和地信号。

注:

  • S:电源供给
  • I:输入
  • O:采用推拉驱动的输出
  • PP:采用推拉驱动的输入输出

参考资料


SD卡
https://ysc2.github.io/ysc2.github.io/2024/03/14/SD卡/
作者
Ysc
发布于
2024年3月14日
许可协议