【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(三)-SD卡的操作流程

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(四)-介绍库函数,获取一些SD卡的信息

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(五)-文件管理初步介绍

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(六)-FatFs使用的思路介绍

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(七)-准备移植FatFs

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(八)-认识内存管理

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(终)-配合内存管理来遍历SD卡

FatFs官网:http://elm-chan.org/fsw/ff/00index_e.html

终于要结束了,由于我的项目只要实现SD卡的读取,所以我并不会执行SD卡写入的相关CMD

至于FatFs,SD卡也只有做到读取的功能

但未来我想写个存储器W25Qxx+FatFs,研究下FatFs格式化和FatFs如何写入,就不局限于FatFs只做读取的功能了

以下是我这几篇博客的回顾,和一些牢骚....不想看的可以略过

  1. 【第一篇】介绍SD卡有两种通讯模式,SPISDIO,以及介绍寄存器
  2. 【第二篇】介绍发送CMD所需的格式(SD卡听从CMD命令来执行相关的操作),以及不同CMD的作用是什么
  3. 【第三篇】SD卡操作流程,经过一系列的操作,得知用户的SD卡是哪个版本,以及相关信息
  4. 【第四篇】我使用的是STM32,所以来看它的库函数,使用代码实现第三篇的流程
  5. 【第五篇】文件管理如何运作,但对于我们使用第三方库的来说,不一定要了解
  6. 【第六篇】FatFs思路介绍,有了思路,我们才知道要添加哪个文件,要修改哪个代码
  7. 【第七篇】准备移植FatFs,但目前我只需要读的功能,写和初始化的接口,并没有去实现
  8. 【第八篇】内存管理研究,因为想遍历SD卡的内容
  9. 【终篇】尝试遍历SD
  10.  
  11. 我在写这几篇博客,我参考和查阅了大量资料
  12. 其中帮助最大的,就是正点原子和野火
  13. 我这里实话实说,我只买了原子的开发板(探索者板子)
  14. 以道德上来讲,我欠野火一个板子
  15. 我为什么会买正点原子的板子呢?因为我需要的一个功能,他有录视频,而野火没有
  16. 在买开发板前,我也看过了两家的视频教程
  17. 其实,在前面几章的视频(讲时钟、讲如何点亮LED之类的),相差不会很大
  18. 但是!后面几章就不一样了,我觉得正点原子录到进阶篇、高级篇这种的,越录越懒。。。
  19. 野火讲SDIO-SD卡,用了9个视频,正点原子只用了1个....
  20. 当然不止SDIOFatFs也只用了1个....
  21. 更令人不能接受的,我感觉他好像一直照着PPT念,那我直接看PPT就好了?
  22. 正点原子也不全都是缺点,在他的论坛里,活跃人数是比野火论坛还多的,有问题的话也可以在上面提问,得到答案的几率会高那么一点点吧?
  23. 作为同样是苦逼的程序员,以上这些只能算是个人建议(观点仅仅代表个人)
  24. 希望大家能找到适合自己的学习方式吧
  25. 这里顺便放上正点原子和野火的论坛
  26. 【正点原子】http://www.openedv.com/forum.php
  27. 【野火】https://www.firebbs.cn/forum.php
  28. 有问题的话,可以在评论区留言,我能帮的我尽量帮
  29. 这里也谢谢大家的阅读

由于遍历SD卡,我担心用户SD卡内,有长文件名的档案,所以研究了这个东西

是否使用长文件名的设定,在《ffconf.h》里面,宏定义《_USE_LFN》就是了

它总共有4个数字可以设置,0、1、2、3

【0】下载开源库FatFs时,默认的值,只有0是不使用长文件名的,因为可以节省资源

【1】使用长文件名,用全局变量(BSS)的方式

【2】使用长文件名,用栈(STACK)的方式

【3】使用长文件名,用堆(HEAP)的方式,这需要内存管理,也就是malloc(内存申请)和free(内存释放)

至于长度(_MAX_LFN),按默认的值(255)吧

关于2、3点的地址,可以在这里修改(但我没尝试修改过,只是提供修改的地方在哪)

一旦我们决定使用长文件名的功能,还必须注意几点

首先,我使用的是《10b》版本,我原先用的是11a的,但是读取长文件名时(f_readdir),一直发生《FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */》错误

后来改回10b版本才正常,当初我脑子真是进水了,我是真的参照正点原子和野火的版本,但不知道为什么,就是看走眼,看到11a版本。。。

不说了,回到正题,我每篇有涉及到FatFs的博客,在开头都有给出FatFs官网

但请记住,官网会更新的,你所看到的图片,也都是最新版本的

如果你用的是旧版本的FatFs,那么你应该去看下载的开源库里,doc这个文件夹,如下图

对比你会发现,有些出入的,我这里只说右半边的,因为我使用的是《10b》这个版本

回到长文件的设定,官方说了,如果你要使用长文件(_USE_LFN >= 1),那么你要注意两个函数

《ff_convert》编码转换

《ff_wtoupper》字符转换

这两个函数,在下图可以找到,把某一个编码添加到项目即可

至于你是要添加哪一个呢?看你的应用

《cc932》日文

《cc936》简体中文

《cc949》韩文

《cc950》繁体中文

《ccsbcs》英文

正点原子用的是《_USE_LFN == 3》,用内存的方式来实现

你要使用《_USE_LFN == 3》的方式来实现,上图doc内也说了,要额外实现两个函数(对比《_USE_LFN == 1 或 2》的情况)

《ff_mem_alloc》内存申请

《ff_mem_free》内存释放

这两个函数,需要添加到《diskio.c》里面,代码如下

  1. 1 //动态分配内存
  2. 2 void *ff_memalloc (UINT size)
  3. 3 {
  4. 4 return (void*)mymalloc(SRAMIN,size);
  5. 5 }
  6. 6 //释放内存
  7. 7 void ff_memfree (void* mf)
  8. 8 {
  9. 9 myfree(SRAMIN,mf);
  10. 10 }

当然,你这么写的话,会牵扯到正点原子的另一个源文件《malloc.c》,上一篇博客有

然后就内存申请吧,下图截至正点原子源码《源码 实验45 视频播放器实验》

红框处是内存申请

第181行:f_readdir,就是遍历了,并且有使用长文件名的功能

至于《_USE_LFN == 1》《_USE_LFN == 2》

我在看野火的视频教程,里面有提到

是429挑战者的视频《25-SPI-FatFs文件系统(第3节-FATFS文件系统移植—包含超级详细的移植过程)》

野火资料:http://doc.embedfire.com/products/link/zh/latest/index.html

正点原子资料:http://www.openedv.com/docs/index.html

其实我脑子再次进水了,我发现,根本不需要长文件名,因为我设备没地方让我显示。。。

暂时先这样吧

未来去研究W25Qxx + FatFs

【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(终)-配合内存管理来遍历SD卡的更多相关文章

  1. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(八)-认识内存管理

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  2. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(七)-准备移植FatFs

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  3. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(六)-FatFs使用的思路介绍

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  4. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(五)-文件管理初步介绍

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  5. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡

    由于一张SD卡要能读写,涉及到的技术有些多,我打算分以下几篇博客 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含 ...

  6. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  7. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(三)-SD卡的操作流程

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  8. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(四)-介绍库函数,获取一些SD卡的信息

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  9. STM32 内存管理实验

    参考原文<STM32F1开发指南> 内存管理简介 内存管理,是指软件运行时对计算机内存资源的分配和使用的技术.最主要的目的是如何高效.快速的分配,并且在适当的时候释放和回收内存资源.内存管 ...

随机推荐

  1. 攻防环境配置大全(iss/apache/nginx/tomcat/jboss/weblogic)

    一.IIS/apache/nginx/tomcat 介绍 1.asp aspx 只能在微软系统的iis中间件运行 [asp+IIS+access(扩展名为mdb)].aspx+mssql+iis结合, ...

  2. 力扣 - 剑指 Offer 66. 构建乘积数组

    题目 剑指 Offer 66. 构建乘积数组 思路1 按照一般的思路就是将所有的相乘,然后除以每一位数字就是答案,但是题目要求我们不能使用除法,因此我们会想到每次遍历到每个数字的时候,在遍历一遍数组, ...

  3. OOP作业总结一

    PS:建议用 Edge 查看此博客,Chrome 的话文章界面会有点窄,看起来可能会比较难受,我想改宽点但是不会改. 我会改了!改宽了一些,现在看起来舒服了很多,芜湖. 问题数据已修复,我们胜利辣! ...

  4. Java不同时区(timezone)之间时间转换

    最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间. 一.关于时区的一些概 ...

  5. Idea tomcat debug按钮灰色无法运行

    打开Project Structure 2.选中src,点击按钮关闭界面,重启idea即可

  6. 问题 O: 寻找最大数(三)

    [提交][状态][讨论版] 题目描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的最大值是多少. 输入 多组测试数据. 每组测试数据占一行,每行 ...

  7. Highcharts › 自由绘图

    ... <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...

  8. 下一代的 3D Tiles 前瞻

    下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月 ...

  9. java配置方法

    1.新建一个Config文件夹 2.代码 package com.shao.config; import com.shao.pojo.User; import org.springframework. ...

  10. Redis 很屌,不懂使用规范就糟蹋了

    这可能是最中肯的 Redis 使用规范了 码哥,昨天我被公司 Leader 批评了. 我在单身红娘婚恋类型互联网公司工作,在双十一推出下单就送女朋友的活动. 谁曾想,凌晨 12 点之后,用户量暴增,出 ...