ESP-IDF 框架下的 FATFS,默认使用的文件名格式是8.3短文件名
8.3格式,即文件名为8个字节,.后的后缀为3个字节。
所以一旦文件名称超出长度限制,就会造成如下显示。


配置IDF工程,以使FATFS支持长文件名


8个字节长度的文件名,用起来实在不够,起码命名起来不大方便。

IDF框架的文件系统,内嵌了开源的FATFSFatFs 是面向小型嵌入式系统的一种通用的 FAT 文件系统。其程序和工作区的资源占用都非常小,可以轻松被整合到资源有限的小型微控制器中。

我们知道,FATFS长文件名的支持,需要更改 _USE_LFN为 2/3。其被定义在 ffconf.h 文件内。

而万能的IDF框架早已考虑到了这些,其对 FATFS 的代码进行部分修改,以能够使用ESP32堆/栈,来支持长文件名。

想要FF_USE_LFN 的值为2,只需要在工程中定义CONFIG_FATFS_LFN_STACK即可。


IDF工程中,CONFIG_开头的宏定义,通常存在于sdkconfig配置文件中,其可通过SDK Configuration Editor (menuconfig)来进行图形化配置,而用不着拿手敲。

现在搜索整个工程,因为 CONFIG_FATFS_LFN_STACK是未定义的,所以编译的时候会按照FF_USE_LFN 为0来处理,自然不支持长文件名。

下面配置IDF工程,使CONFIG_FATFS_LFN_STACKsdkconfig中被定义。

  • 点击Vscode左下角的图标,SDK Configuration Editor (menuconfig)
  • 搜索 CONFIG_FATFS_LFN_STACK,将匹配到的设置项勾选,最后点击保存。
  • 进行编译。等待编译完成。
  • 编译完成后搜索 CONFIG_FATFS_LFN_STACK,可以看到其已经存在。长文件名已被支持。
  • 下载、运行。现在看到的就是完整的长文件名

测试代码


完整工程*:Easyio 开源库工程的 Demo - 37_JPG_LCD_DMA_SD_PHOTO_ALBUM

Demo 功能为:制作一个用SD卡存储照片的电子相册,它会读取SD卡/pic目录下的所有jpg图片,依次进行解码并显示在320x240分辨率的液晶屏上。

因为使用了IDF虚拟文件系统 (VFS),所以其接口格式与标准c文件IO几乎一样,使用起来更为方便。

第三方IDF工程如何使用 Easyio:ESP32开源驱动库Easyio的使用

主要功能片段:

    #include "easyio.h"// SD卡初始化、FATFS文件系统挂载。总线使用SPI模式,20MHz。sdmmc_card_t* card = sd_card_fatfs_spi_init();while (!card) { // 验证错误,如果返回值为0,则SD卡初始化及FATFS挂载失败,重试ESP_LOGE(TAG, "Failed !! %d Retry!!", false);vTaskDelay(200 / portTICK_PERIOD_MS);card = sd_card_fatfs_spi_init();}DIR *dir;struct dirent *ptr;// 列表显示 /pic目录下所有文件的文件名// 如需>8.3的长文件名,需要设置SDK Configuration中的CONFIG_FATFS_LFN_STACKdir = opendir(MOUNT_POINT"/pic");printf("file list:\n");while((ptr = readdir(dir)) != NULL) {printf("\t%s\n", ptr->d_name);}closedir(dir);

更多内容,在同专栏 ESP32Easyio 使用教程:ESP32开源驱动库Easyio的使用

ESP32-IDF给FATFS添加长文件名支持,更改_USE_LFN以支持大于8.3格式的文件名相关推荐

  1. ESP32( IDF平台)+MAX30102 配合Pyqt上位机实现PPG波形显示与心率计算

    0 引言 年前买了一个MAX30102模块,在家无聊做了这个demo对一些相关的知识进行学习. 主要学习的内容: 光体积变化描记图(Photoplethysmogram, PPG)测量原理学习. ES ...

  2. esp32系列(11):ESP32 IDF平台 mpu6050 DMP 驱动移植及测试上位机开发

    目录 1 DMP 官方库介绍 1.1 DMP与MPL(Motion Processing Libraries)功能 1.2 运行MPL的硬件要求 1.3 Motion Driver 6.12 的架构 ...

  3. FATFS配置长文件名,为何跟编码转换有关

    要打开FATFS的长文件名功能,必须添加OEMCP与Unicode的编码转换函数,同时也就要把OEMCP与Unicode的编码转换数组添加进来,这是为什么呢? OEMCP在936代码页下就是GBK,这 ...

  4. Hive表中修改列位置,更改类型、移动位置(impala支不支持更改位置)

    Hive表中修改列位置,更改类型.移动位置 Hive 目标:在hive中实现在指定位置添加列 背景:hive中添加新列时会默认在最后一列依次添加,无法同mysql一样可以指定位置. 解决方法:首先在h ...

  5. ESP32 IDF LVGL8.0 flash 外部字库显示 中文显示

    我从stm32一路学到esp32,发现这款芯片挺好玩的,主要是还是stm32太贵了,stm32主要是很多坑有人遇到了,并给出了解决方法,esp32这方面就少点,有时候找不到的,只能靠自己了. 本文使用 ...

  6. ESP32 IDF LVGL 1.47寸圆角屏幕测试

    前言 基于ESP32 IDF框架移植的LVGL,IDF版本为4.3.1,LVGL版本为8.1.1.屏幕为中景园的1.47寸172x320分辨率的圆角IPS,驱动芯片为st7789v3. B站视频效果: ...

  7. linux上添加下载源的时候报错:无法添加 PPA:“‘此 PPA 不支持 bionic‘”,以及关于linuxPPA的介绍,如何查找软件包的PPA源,并添加PPA

    1 介绍LInux PPA 在介绍问题之前,首先来说明一下什么是PPA,清楚问题的本质,追根溯源,这样才能更明确问题,然后针对性的去解决这个问题! 1.1 为什么需要PPA PPA:Personal ...

  8. 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的

    一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled  GD Version bundled (2.0.34 compatible)  GI ...

  9. Android11还能自定义相机吗,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...

    原标题:安卓用户又少了一项自由,Android 11不再支持更改默认相机程序 来源:量子位 关注前沿科技 萧萧 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧萧 发自 凹非寺 量子位 报道 ...

最新文章

  1. hub-spock-ospf,nbma
  2. paramiko基础
  3. Linux安装mysql学习
  4. 强大的PHP防SQL注入类,可以过滤敏感参数
  5. 第一个jfinal的样例
  6. 俄罗斯方块之四 运动块的绘制实现
  7. propertychange方法
  8. Shell 快速入门
  9. 持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型
  10. 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象
  11. 带着canvas去流浪系列之四 绘制散点图
  12. mvn linux,Linux安装Maven
  13. java hexits,[Java]浅谈Java的异常体系
  14. mysql实战数据.sql_Mysql实战(DML增删改+Select)
  15. linux 进程 inline hook,高级Linux Kernel Inline Hook技术分析与实现
  16. can test 接收报文_CAN总线
  17. 拓端tecdat|R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
  18. 《阿里感悟》- 技术人员的职业规划
  19. iOS App Store 审核 other 处理、解决办法 The review of your app is taking longer than expected
  20. docker基础篇--有它就够了

热门文章

  1. 项目经理如何确保工程质量
  2. AWS向中国有限预览客户推出多级别AWS支持服务
  3. 火狐浏览器插件(XPI 文件)签名指南
  4. Alt属性 添加的意义
  5. PJblog跨站漏洞利用及修补
  6. 【jQuery笔记Part1】08-jQuery操作css-获取设置样式
  7. Python Type Hint类型注解
  8. 设计模式18_责任链
  9. ​OCO订单(委托)
  10. 最近给公司撸了一个可视化大屏