×
单片机 > 单片机程序设计 > 详情

基于STM32F407平台实现FATFS读写大容量(128G)SD卡的心得

发布时间:2020-05-26 发布时间:
|

本人是沈阳大学的一名小白,之前,无论是STM32,还是FATFS,都是小白一个,甚至不理解那是什么东西,但是据说这种技术目前为止好像是读写大容量卡挺费劲,只能64G,就到头了,但是最近接到一个任务就是做一个数据记录仪而且要把这个东西做成128G的。废话不多说,直接来把。


首先你要知道FATFS是一个文件管理系统,看他的手册,分为应用层,底层驱动等等,但是对于我们嵌入式开发者来说,移植他,我们需要的是修改底层驱动!应用他给出的API实现自己的任务。修改底层驱动!应用他给出的API实现自己的任务。修改底层驱动!应用他给出的API实现自己的任务。

      1、修改底层驱动

  官网下载,需注意他的版本,如果你做32G ,64G,   OK那你下载哪个版本都可以,建议下载低版本,如0.10版本左右的都可以。如果你想做大容量卡,那一定要移植0.12之后的版本,现在我写这篇文章的时候,最新版是0.13a,所以我就简单说一下0.13a。0.13a的底层驱动,也就是你下载下来的有一个diskio.c的文件,你打开。正常的移植,是在这里写或者修改底层驱动,底层驱动是什么呢,例如我这次用的是SDIO操作读写SD卡的,大家都知道,SDIO操作SD卡有两种方式,一个是SPI,一个是SDIO。那我要写的就是这两种中的一个了。我用的是SDIO,因为这种速度块。继续说,当你打开0.13a的diskio.c 的时候,你会发现这帮人TMD写的很随意,这里如果你是个大手你可以自己写好你的底层驱动(就是刚才我说的那个如何通过SDIO操作SD卡),如果嫌费劲,直接拿你开发板给出的例程里的diskio.c(每个嵌入式开发者手里都会有开发板吧?!)因为它给出这个一定是调好的!

然后你的DISKIO.C里,会有很多swicth case 这种情况,把没用的都注释掉。

  2、应用它给出的API实现自己的任务

这里就是调用函数,没啥可说的,但要注意几点:

1、你的f_open的打开方式,一定要注意,如果你的while循环里一直都是create always,你想创建下一个文件是不可能的

每次循环到f_open 的时候,他都会新建一个,你之前写过的文件,无论写了什么,写了多少,统统被冲掉,重新新建一个文件

2、断电前一定要f_close你的文件

他确实给出了一个f_syn的文件,刷新数据,但是真正调试时候你会发现他没什么用,如果你的文件一直写写写,最后没有f_close那么恭喜你,当你拔下sd卡放到电脑上时,你的sd卡是没有文件的。这个觉得是FATFS的一个BUG,切记一定要close文件


来人了,先写到这,有机会补完


关键字:STM32F407  FATFS  读写大容量 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多