LVGL移植FATFS后显示.bin文件图片问题

遇到的问题:移植完FATFS后调用FATFS的文件系统函数打开目录下的文件是可以的(我使用的是外置的SPI Flash,将文件存放到SPI Flash中,再读出来),查找目录下 的文件也是可以找到的,但是使用lv_img_set_src函数就是无法显示图片,代码一行一行地调试后,发现是lvgl层的文件系统没用,打开文件失败,下面详细介绍遇到的问题和解决办法。

一、进行FATFS文件系统的移植

这个网上有许多教程,就不多做介绍了。

二、LVGL的文件系统移植

首先打开lv_conf.h中的宏定义,开启文件系统。

/*API for FATFS (needs to be added separately). Uses f_open, f_read, etc*/
#define LV_USE_FS_FATFS 1 // 开启,置为1
#if LV_USE_FS_FATFS
    #define LV_FS_FATFS_LETTER 'A'     /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
    #define LV_FS_FATFS_CACHE_SIZE 0    /*>0 to cache this number of bytes in lv_fs_read()*/
#endif

LV_FS_FATFS_LETTER是用来设置盘符的,盘符可以在ffconf.h中查看,用哪个就填哪个如果用的是sd卡就设置为'2',我用的是spi,设置为'3'。

### 实现 LVGL 8.3 对 FatFS 文件系统的支持 #### 配置 STM32CubeMX 工程环境 为了使STM32微控制器能够通过SDIO接口访问SD卡,在STM32CubeMX软件中配置项目参数,开启SDIO外设功能并设置其工作模式为高速(High Speed)[^1]。 #### 初始化FatFs模块 在应用程序初始化阶段调用`f_mount(&fatfs, "", 0)`来注册文件系统对象至指定逻辑驱动器路径下。此过程会关联底层存储介质(即SD卡)与高层应用之间的交互桥梁[^2]。 #### 修改LVGL库源码适配FatFs API 针对LVGL图形界面开发框架版本8.3.x系列,需调整内部用于处理图像资源加载部分的代码逻辑以便兼容外部存储设备上的数据读写需求。具体做法是在lv_conf.h头文件内激活相应选项开关: ```c /* Use custom file system */ #define LV_USE_FS_FATFS 1 ``` 接着按照官方文档指导完成剩余必要的定制化改动,比如重定向标准输入输出流指向目标硬件平台特定实现等操作。 #### 编写测试程序验证集成效果 编写简单的演示案例用来检验上述工作的有效性。下面给出了一段Python风格伪代码作为参考说明如何创建一个窗口并将来自SD卡内的位图绘制出来展示给用户查看: ```python import lvgl as lv def load_image_from_sdcard(file_path): try: with open(file_path,'rb') as f: img_data=f.read() return img_data except Exception as e: print(f"Failed to read image from {file_path}: ",e) scr=lv.obj() # 创建新页面容器 img=lv.img(scr) # 添加图片组件到当前屏幕 sd_img_bin=load_image_from_sdcard("/path/to/image.bin") # 假定已存在名为image.bin的二进制格式图片位于根目录下 if sd_img_bin is not None: img.set_src(sd_img_bin) # 设置图片源为刚刚获取的数据缓冲区内容 lv.scr_load(scr) # 刷新整个显示屏以呈现最终结果 ``` 以上流程涵盖了从准备阶段直至实际运行期间涉及到的关键环节描述以及注意事项提示[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值