ESP32-IDF移植LVGL 文件系统

一. 简介

在使用LVGL进行界面开发的时候,需要使用到各种字体文件和图片文件,如果直接下载到flash中的话(esp32的flash足够大,可以下载少量的资源文件),不方便替换和管理,而且资源有限,但比较方便,有优点也有缺点。
针对缺点,可以使用TF存储资源,然后使用自带的文件文件系统进行读取,但是文件系统需要自己移植一下,而esp32-idf给了很大的支持,移植起来特别特别简单,所以移植的缺点可以忽略不计。

二. TF卡初始化

在使用文件系统的时候,需要先对TF卡进行初始化,这一步直接copy官方例程(提供了SPI和SDIO两种接口),本人使用的是SDIO版本的,copy过来后,修改一下IO引脚就可以了。
ESP32-IDF移植LVGL 文件系统_第1张图片

三. LVGL文件系统移植(8.3.x)

其实LVGL官网已经给我们准备好了,同显示和输入设备的移植过程一样,fs的移植网上的教程比较少而已,去掉后面的_template,然后将#if 0 改成#if 1就可以了
ESP32-IDF移植LVGL 文件系统_第2张图片
然后看看fs的初始化函数,将我们的TF卡初始化的函数放到fs_init()函数里面,然后将letter的值修改为‘S’,然后在主函数里面调用这个函数就可以了。
ESP32-IDF移植LVGL 文件系统_第3张图片
最后就是接口对接了,将下面这些函数里面的内容实现一下就可以了,
ESP32-IDF移植LVGL 文件系统_第4张图片
例如fs_read这个函数,TFCard_Read是自己对fread进行的一个封装,fs_read调用一下TFCard_Read函数就可以了。
ESP32-IDF移植LVGL 文件系统_第5张图片
ESP32-IDF移植LVGL 文件系统_第6张图片
其它的函数同样如此,添加完之后,移植过程就结束了。

ps:

  1. 读取文件的路径: 由于例程中的节点是 #define MOUNT_POINT/sdcard"这个,所以我们在lvgl输入的路径应该为"S:/sdcard/图片路径

三. 小结

基于esp32-idf 的文件移植是非常简单的,并不需要再config中进行配置,也不需要去github上下载对应的文件。

如果对esp32 开发感兴趣的话,可以关注下方公众号哦,想获取资料的话,或者有什么疑问想进行交流,也可以在上面和我取得联系哦。

你可能感兴趣的:(lvgl,linux,lvgl,fs文件系统,TF卡)