大家好,今天我们来玩一点不一样,我看论坛里面其他的小伙伴都在评测一些基础外设,那么我就不出基础外设的教程了,我们来玩一些高级外设,今天我们就来玩一下sd卡。
电脑上的有磁盘的概念,这样会使得我们存储文件非常方便快捷,而我们嵌入式单片机上一般要存储时会使用到eeprom或spi flash,这样相比于电脑上那样存文件来说非常的不便,那么有没有办法让他和电脑上一样方便呢?当然是有的,这里就要接触到一个新的概念了,它就是文件系统
简介:
负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。
常用的文件系统有以下:
FAT / FATFS
NTFS: 基于安全性的文件系统,是Windows NT所采用的独特的文件系统结构
CDFS:CDFS是大部分的光盘的文件系统
exFAT
那么看到这里的小伙伴会不会觉得头大呢,这个文件系统我该怎么用代码去实现呢?起始啊我们写代码就像我们人走路一样,你走过的大多数路别人已经走过了,那么代码也是一样的,文件系统的代码已经有大佬写过了,并且开源了出来,这里我们只选一个常用的来介绍一下:
FATFS文件系统:
FATFS是一个完全免费开源的FAT 文件系统模块,专门为小型的嵌入式系统而设计。完全用标准C 语言编写,所以具有良好的硬件平台独立性。可以移植到8051、PIC、AVR、SH、Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持FATl2、FATl6 和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对8 位单片机和16 位单片机做了优化。
FATFS文件系统特点:
Windows兼容的FAT文件系统(支持FAT12/FAT16/FAT32)
与平台无关,移植简单。全C语言编写。
代码量少、效率高。
多种配置选项
支持多卷(物理驱动器或分区,最多10个卷)
多个ANSI/OEM代码页包括DBCS
支持长文件名、ANSI/OEM或Unicode
支持RTOS
支持多种扇区大小
只读、最小化的API和I/O缓冲区等
那么看到这里相信大家已经了解一些概念了,通俗的来说文件系统就是文件在硬盘或sd中的排列结构,我们需要遵循这个结构去读、写。
值得一提的是我们今天不需要自己去移植fatfs代码到D133CBS上了,匠芯创和RT Thread官方已经做好了适配,我们只需要直接使用即可(这一点必须好评,因为这在项目开发中会大大节省时间),下面我将手把手教大家使用。
先看我的代码:
首先创建一个叫D133.txt的文件,并打开它,待打开成功后写入一些内容测试下
我们编译并烧录测试看看,接上串口看一下日志,可以看到已经显示成功了。
把sd卡拔下来并通过读卡器连接到电脑可以看到已经写入成功了
接下来我们测试一下读文件,我们把sd卡中创建一个read_test.txt文件,然后在里面写上一些内容
然后在代码里面打开这个文件,并读取里面的内容然后在日志中打印出来:
然后编译并烧录,接上串口看日志,可以看到日志中已经打印出了我们的文件内容了:
总结: 我们在使用了文件系统后可以实现很多之前单片机做不了的事情,比如保存log到sd卡,从sd卡中读取配置文件等,这也为我们后面的音频录制和音频播放实验打下了基础。
大家不懂的欢迎留言评论