LZY825597017 发表于 2023-12-25 15:25:10

SDcard驱动

SD卡扩展库使用说明
1-硬件概述
   一张 SD 卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器 5 个部分。存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;电源检测单元保证 SD 卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;卡及接口控制单元控制 SD 卡的运行状态,它包括有 8 个寄存器;接口驱动器控制 SD 卡引脚的输入输出。


CLK:同步时钟线,使用 SPI 模式时,该引脚与 SPI 总线的 SCK 时钟信号相连;
CMD:命令控制线,SDIO模式下的命令发送/响应线,SPI模式下,与 SPI 总线的 MOSI 信号相连。
D0-3:SDIO模式均为数据线,SPI模式下,D0 与 SPI 总线的 MISO 信号相连,D3 与总线的 CS 信号相连。
VDD、VSS1、VSS2:电源和地信号,其中 Micro SD 卡不包含 VSS2 信号,即 Micro SD卡仅有 8 根线。
SD卡寄存器:



SD卡命令格式:

注意:
用 SPI 驱动时,命令中的 CRC7 校验默认是关闭的,即这 CRC7 校验位中可以写入任意值而不影响通讯,仅在发送 CMD0 /CMD8 命令时需要强制带标准的 CRC7 校验。
部分命令描述:



SPI模式下,需要使用一种名为 Token 的单字节标志对数据传输流程进行控制。
主机向 SD 卡写入数据时,每发送完一个数据块后,SD 卡会返回一个数据响应 Token,格式如下:
该 Token 格式中的 Status 长度为 3 个数据位,分别有如下几种含义:
 010:数据被接受;
 101:因为 CRC 校验失败,数据被拒绝;
 110:因为写入错误,数据被拒绝。
   SD 卡接收到数据时要作出的数据响应 Token,实际上在数据块之前还带有Token 标志,在前面的图 36-6 也有体现,在单块读写以及多块读取的命令中,数据块前面的 Token 标志均使用一个字节的“0xFE”表示数据块的开始,而在多块数据写入命令中,Token 标志使用“0xFC”表示数据块的开始,并且以“0xFD”表示数据块的结束。


SD卡识别流程:


2-图形块
(1)SD卡初始化(使用硬件SPI)


(2)SD卡获取总扇区(获取字节数需要乘以512,默认扇区大小为512字节)


(3)SD卡读指定数量扇区的数据(扇区从0开始,数量不要超过SD卡总扇区数)


(4)SD卡写指定数量扇区的数据(扇区从0开始,数量不要超过SD卡总扇区数)

注意:写入时需要注意,直接写入数据后电脑就不能直接读取SD卡,需要格式化后才能在电脑上使用,一般写入数据都需要在文件系统下写入数据。

(5)SD卡取消片选(片选引脚拉高)


3-范例-CH32V103









页: [1]
查看完整版本: SDcard驱动