2.SD 卡一般支持 2 种操作模式:
- SD 卡:安全数码卡, 它是在 MMC 的基础上发展而来, 是一种基于半导体快闪记忆器的新一代记忆设备。按容量分类,可以将SD 卡分为 3 类: SD 卡、 SDHC 卡、 SDXC 卡。SD卡(SDSC):0~2G SDHC卡:2~32G SDXC卡:32G~2T。
SD卡引脚功能表:
- SD 卡模式(通过 SDIO 通信):允许 4 线的高速数据传输,只能使用 3.3V 的 IO 电平,所以, MCU 一定要能够支持 3.3V 的 IO 端口输出。
- SPI 模式:同 SD 卡模式相比就是丧失了速度,在 SPI 模式下, CS/MOSI/MISO/CLK 都需要加 10~100K 左右的上拉电阻。
针脚 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
SD卡模式 | CD/DAT3 | CMD | VSS | VCC | CLK | VSS | DAT0 | DAT1 | DAT2 |
SPI模式 | CS | MOSI | VSS | VCC | CLK | VSS | MISO | NC | NC |
名称 | 宽度 | 描述 |
CID | 128 | 卡标识寄存器 |
RCA | 16 | 相对卡地址寄存器:本地系统中卡的地址,动态变化,在卡的初始化时确定。(SPI模式中没有) |
CSD | 128 | 卡描述数据寄存器:卡操作条件相关的信息数据。 |
SCR | 64 | SD配置寄存器:SD卡特定信息数据 |
OCR | 32 | 操作条件寄存器 |
5、SD卡读取数据(CMD17):
- 初始化与 SD 卡连接的硬件条件(MCU 的 SPI 配置, IO 口配置);
- 上电延时(>74 个 CLK)(因为 SD 卡内部有个供电电压上升时间,大概为 64 个 CLK,剩下的 10 个 CLK 用于 SD 卡同步,之后才能开始 CMD0 的操作);
- 复位卡(CMD0),进入 IDLE 状态;
- 发送 CMD8,检查是否支持 2.0 协议;
- 根据不同协议检查 SD 卡(命令包括: CMD55、 CMD41、 CMD58 和 CMD1 等);
- 取消片选,发多 8 个 CLK(提供 SD 卡额外的时钟,完成某些操作),结束初始化;
6、SD卡写数据(CMD24):
- 发送 CMD17;
- 接收卡响应 R1;
- 接收数据起始令牌 0XFE;
- 接收数据;
- 接收 2 个字节的 CRC,如果不使用 CRC,这两个字节在读取后可以丢掉。
- 禁止片选之后,发多 8 个 CLK;
7、硬件设计:(mini板)
- 发送 CMD24;
- 接收卡响应 R1;
- 发送写数据起始令牌 0XFE;
- 发送数据;
- 发送 2 字节的伪 CRC;
- 禁止片选之后,发多 8 个 CLK;
二、FATFS文件系统
- SD卡通过4根信号线与STM32连接, SD卡的片选(SD_CS)连接PA3,SD卡的SPI接口,连接在STM32的SPI1上面。
- 要注意的是SPI1被3个外设共用了: SD卡、 W25Q64和NRF24L01,在使用SD卡的时候,必须禁止其他外设的片选,以防干扰。
3.与平台无关的是:
支持多卷(物理驱动器或分区,最多 10 个卷)
- Windows 兼容的 FAT 文件系统(支持 FAT12/FAT16/FAT32)
- 与平台无关,移植简单
- 代码量少、效率高
- 多种配置选项
多个 ANSI/OEM 代码页包括 DBCS
支持长文件名、 ANSI/OEM 或 Unicode
支持 RTOS
支持多种扇区大小
只读、最小化的 API 和 I/O 缓冲区等
ffconf.h | FATFS 模块配置文件 | |
ff.h | FATFS 和应用模块公用的包含文件 | |
ff.c | FATFS 模块 | |
diskio.h | FATFS 和 disk I/O 模块公用的包含文件 | |
interger.h | 数据类型定义 | |
option | 可选的外部功能(比如支持中文等) | |
diskio.c | FATFS 和 disk I/O 模块接口层文件 |
(1)、数据类型:在integer.h 里面去定义好数据的类型。这里需要了解你用的编译器的数据类型,并根据编译器定 义好数据类型。6.FATFS给用户提供了大量的API函数,可以满足我们对文件的各种操作。
(2)、配置:通过ffconf.h配置FATFS的相关功能,以满足你的需要。
(3)、函数编写:打开diskio.c,进行底层驱动编写,一般需要编写6 个接口函数
7.几个重要结构体:https://blog.csdn.net/nulidehahafr/article/details/84146148?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
文件对象结构体(FIL类型):存放文件的相关信息,打开关闭读写文件等操作时需要使用其指针
目录对象结构体(DIR类型):存放目录的相关信息,对目录操作时需要其指针
文件状态结构体(FILINFO类型):存放文件的大小属性文件名等信息
文件系统对象结构体(FATFS类型)
更多回帖