SD卡
总结 SD 卡的使用
前言
SD卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选:
- 一种是SPI接口
- 另外一种就是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中可以使用片上外设SPI
和SDIO
来对这些卡进行控制:
即使目前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卡/