SD卡简介

SD卡,Secure Digital Memory Card,一种基于半导体Flash存储器的存储设备。SD协会对其进行了规范。

1.外形尺寸 标准的SD卡、microSD卡(TF卡,Trans-flash) 2.存储容量

SD卡存储容量
SD容量上限为2GB,使用FAT12和FAT16 文件系统
SDHC容量为2GB至32GB,使用FAT32文件系统
SDXC容量为32GB至2TB,使用exFAT文件系统
SDUC容量为2TB至128TB,使用exFAT文件系

无论容量,SD卡最小读写单位都是块block, 1 block=512 byte

  1. 总线速度

在 SD 1.0规范中,SD 总线速度的默认模式为12.5MB/S。在 SD 1.1规范中,SD 总线速度的高速模式为 25MB/。为了设计更高读写速度的SD卡,SD 协会在 SD 3.01 规范中定义了 UHS-I模式,在后续版本中又推出了 UHS-II、UHS-III 模式。

要用这么快的速度,需要读写SD卡的主机支持这种模式。STM32F4的SDIO只支持到SD2.0

常规SD卡接口

常规SD卡有9个引脚,其外壳上还有一个写保护开关,属于SD卡适配器功能,不在接口范围内。microSD卡有8个引脚,比常规的少一个VSS

imageimage

两种卡接口功能相同,只是引脚分布顺序不同。电源、地、时钟线、命令线、4个数据线,其中DATA3可作为SD卡检测线

F4和H7的SDIO/SDMMC对比

F4的SDIO
Secure digital input/output interface
H7的SDMMC
Secure digital input/output MultiMediaCard interface
SDIO接口主要用于连接需要高速数据传输的外设,如Wi-Fi模块、蓝牙模块、GPS模块、SD卡等SDMMC接口主要用于连接存储卡,如SD卡、MMC卡和eMMC,用于数据存储,不支持复杂的I/O操作
image
完全符合SD存储卡规范版本2.0
image
完全符合SD存储卡规范版本4.1。
(SDR104 SDMMC_CK速度限制为最大允许I/O速度,SPI模式和
不支持UHS-II模式)
image
完全符合SD I/O卡规范2.0版本
卡支持两种不同的数据总线模式:1位(默认)和4位
SDIO 不具备兼容 SPI 的通信模式
image
完全符合SDIO卡规范4.0版本。
卡支持两种不同的数据总线模式:1位(默认)和4位。
2.0包含两种容量规范:SDSC和SDHC,容量范围2-32G4.0容量规范:SDSC、SDHC、SDXC,容量范围2G-2TB

SDIO总线

SD 卡一般都支持 SDIO 和 SPI 这两种接口,STM32F10x和F4一些 系列控制器的 SDIO 是不支持 SPI 通信模式的,如果需要用到 SPI 通信只能使用 SPI 外设。

当前版本的 SDIO 每次只支持一个 SD/SDIO/MMC4.2 卡,但支持多个 MMC4.1 或之前版本的卡。

SDIO 不管是从主机控制器向 SD 卡传输,还是 SD 卡向主机控制器传输都只以 CLK 时钟线的上升沿为有效。

SD 卡操作过程会使用两种不同频率的时钟同步数据,一个是识别卡阶段时钟频率 FOD,最高为 400kHz,另外一个是数据传输模式下时钟频率 FPP,默认最高为 25MHz,如果通过相关寄存器配置使 SDIO 工作在高速模式,此时数据传输模式最高频率为 50MHz。

一些数据包格式之类的都没看

STM32的SDIO功能框图

image

SDIO 适配器提供 SDIO 主机功能,可以提供 SD 时钟、发送命令和进行数据传输。AHB 接口用于控制器访问 SDIO 适配器寄存器并且可以产生中断和 DMA 请求信号

SDIO有两个时钟信号:SDIOCLK=HCLK给SDIO适配器,HCLK/2给AHB总线接口

SDIO_CK 是 SDIO 接口与 SD 卡用于同步的时钟信号。它使用 SDIOCLK 作为 SDIO_CK 的时钟来源,可以通过设置 BYPASS 模式直接得到,这时 SDIO_CK = SDIOCLK=HCLK。若禁止 BYPASS 模式,可以通过配置时钟寄存器的 CLKDIV 位控制分频因子,即 SDIO_CK=SDIOCLK/(2+CLKDIV)
= HCLK/(2+CLKDIV)。配置时钟时要注意,SD 卡普遍要求 SDIO_CK 时钟频率不能超过 25MHz。

F4和H7的SDIO/SDMMC对比

F4的SDIOH7的SDMMC
Secure digital input/output interfaceSecure digital input/output MultiMediaCard interface
SDIO接口主要用于连接需要高速数据传输的外设,如Wi-Fi模块、蓝牙模块、GPS模块、SD卡等。SDMMC接口主要用于连接存储卡,如SD卡、MMC卡和eMMC,用于数据存储,不支持复杂的I/O操作。
image
完全符合SD存储卡规范版本2.0
image
完全符合SD存储卡规范版本4.1。
(SDR104 SDMMC_CK速度限制为最大允许I/O速度,SPI模式和
不支持UHS-II模式)
2.0包含两种容量规范:SDSC和SDHC,容量范围2-32G4.0容量规范:SDSC、SDHC、SDXC,容量范围2G-2TB
image
完全符合SD I/O卡规范2.0版本
卡支持两种不同的数据总线模式:1位(默认)和4位
SDIO 不具备兼容 SPI 的通信模式
image
完全符合SDIO卡规范4.0版本。
卡支持两种不同的数据总线模式:1位(默认)和4位。
(SDR104 SDMMC_CK速度限制为最大允许I/O速度,SPI模式和
不支持UHS-II模式)。

SDIO总线

SD 卡一般都支持 SDIO 和 SPI 这两种接口,STM32F10x和F4一些 系列控制器的 SDIO 是不支持 SPI 通信模式的,如果需要用到 SPI 通信只能使用 SPI 外设。

当前版本的 SDIO 每次只支持一个 SD/SDIO/MMC4.2 卡,但支持多个 MMC4.1 或之前版本的卡。

SDIO 不管是从主机控制器向 SD 卡传输,还是 SD 卡向主机控制器传输都只以 CLK 时钟线的上升沿为有效。

SD 卡操作过程会使用两种不同频率的时钟同步数据,一个是识别卡阶段时钟频率 FOD,最高为 400kHz,另外一个是数据传输模式下时钟频率 FPP,默认最高为 25MHz,如果通过相关寄存器配置使 SDIO 工作在高速模式,此时数据传输模式最高频率为 50MHz。

一些数据包格式之类的都没看

STM32的SDIO功能框图

SDIO 适配器提供 SDIO 主机功能,可以提供 SD 时钟、发送命令和进行数据传输。AHB 接口用于控制器访问 SDIO 适配器寄存器并且可以产生中断和 DMA 请求信号

image

SDIO有两个时钟信号:SDIOCLK=HCLK给SDIO适配器,HCLK/2给AHB总线接口

SDIO_CK 是 SDIO 接口与 SD 卡用于同步的时钟信号。它使用 SDIOCLK 作为 SDIO_CK 的时钟来源,可以通过设置 BYPASS 模式直接得到,这时 SDIO_CK = SDIOCLK=HCLK。若禁止 BYPASS 模式,可以通过配置时钟寄存器的 CLKDIV 位控制分频因子,即 SDIO_CK=SDIOCLK/(2+CLKDIV)
= HCLK/(2+CLKDIV)。配置时钟时要注意,SD 卡普遍要求 SDIO_CK 时钟频率不能超过 25MHz。