没有口袋的哆啦 发表于 2024-8-26 15:26

【匠芯创D133CBS】挂载SD卡文件系统读写测试

<div class='showpostmsg'><p>大家好,今天我们来玩一点不一样,我看论坛里面其他的小伙伴都在评测一些基础外设,那么我就不出基础外设的教程了,我们来玩一些高级外设,今天我们就来玩一下sd卡。</p>

<p>电脑上的有磁盘的概念,这样会使得我们存储文件非常方便快捷,而我们嵌入式单片机上一般要存储时会使用到eeprom或spi flash,这样相比于电脑上那样存文件来说非常的不便,那么有没有办法让他和电脑上一样方便呢?当然是有的,这里就要接触到一个新的概念了,它就是文件系统</p>

<p>简介:<br />
负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织文件的方法。<br />
<strong>常用的文件系统有以下:</strong></p>

<p>FAT / FATFS<br />
NTFS: 基于安全性的文件系统,是Windows NT所采用的独特的文件系统结构<br />
CDFS:CDFS是大部分的光盘的文件系统<br />
exFAT</p>

<p>那么看到这里的小伙伴会不会觉得头大呢,这个文件系统我该怎么用代码去实现呢?起始啊我们写代码就像我们人走路一样,你走过的大多数路别人已经走过了,那么代码也是一样的,文件系统的代码已经有大佬写过了,并且开源了出来,这里我们只选一个常用的来介绍一下:</p>

<p><strong>FATFS文件系统:</strong><br />
FATFS是一个完全免费开源的FAT 文件系统模块,专门为小型的嵌入式系统而设计。完全用标准C 语言编写,所以具有良好的硬件平台独立性。可以移植到8051、PIC、AVR、SH、Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持FATl2、FATl6 和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对8 位单片机和16 位单片机做了优化。<br />
<strong>FATFS文件系统特点:</strong></p>

<p>Windows兼容的FAT文件系统(支持FAT12/FAT16/FAT32)<br />
与平台无关,移植简单。全C语言编写。<br />
代码量少、效率高。<br />
多种配置选项<br />
支持多卷(物理驱动器或分区,最多10个卷)<br />
多个ANSI/OEM代码页包括DBCS<br />
支持长文件名、ANSI/OEM或Unicode<br />
支持RTOS<br />
支持多种扇区大小<br />
只读、最小化的API和I/O缓冲区等</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>那么看到这里相信大家已经了解一些概念了,通俗的来说文件系统就是文件在硬盘或sd中的排列结构,我们需要遵循这个结构去读、写。</p>

<p>值得一提的是我们今天不需要自己去移植fatfs代码到D133CBS上了,匠芯创和RT Thread官方已经做好了适配,我们只需要直接使用即可(这一点必须好评,因为这在项目开发中会大大节省时间),下面我将手把手教大家使用。</p>

<p>先看我的代码:</p>

<p>首先创建一个叫D133.txt的文件,并打开它,待打开成功后写入一些内容测试下</p>

<div style="text-align: center;"></div>

<div style="text-align: center;">我们编译并烧录测试看看,接上串口看一下日志,可以看到已经显示成功了。</div>

<div style="text-align: center;"></div>

<div style="text-align: center;">把sd卡拔下来并通过读卡器连接到电脑可以看到已经写入成功了</div>

<div style="text-align: center;">
<div style="text-align: center;"></div>

<div style="text-align: center;">接下来我们测试一下读文件,我们把sd卡中创建一个read_test.txt文件,然后在里面写上一些内容</div>

<div style="text-align: center;">
<div style="text-align: center;"></div>

<div style="text-align: center;">然后在代码里面打开这个文件,并读取里面的内容然后在日志中打印出来:</div>

<div style="text-align: center;"></div>

<div style="text-align: center;">然后编译并烧录,接上串口看日志,可以看到日志中已经打印出了我们的文件内容了:</div>

<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div>
</div>

<p><strong>总结:&nbsp;</strong>我们在使用了文件系统后可以实现很多之前单片机做不了的事情,比如保存log到sd卡,从sd卡中读取配置文件等,这也为我们后面的音频录制和音频播放实验打下了基础。</p>

<p><strong>大家不懂的欢迎留言评论</strong><img height="63" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/victory.gif" width="61" /></p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页: [1]
查看完整版本: 【匠芯创D133CBS】挂载SD卡文件系统读写测试