LVGL8移植FATFS并适配到STM32F407

目前LVGL版本已经更新到8.3版本,FATFS也是在嵌入式领域常用的文件系统。网上许多在LVGL上移植FATFS的教程大都是基于LVGL7版本的,而且过程较为凌乱。本文旨在帮助大家了解在LVGL8上移植FATFS文件系统的过程。
两种库的适配很简单,说白了就是在一方的函数中调用另一方的函数。下面介绍如何将LVGL与FATFS的函数关联起来。
这里我认为大家已经下载了LVGL和FATFS的官方库,并且已经会单独使用LVGL和FATFS进行测试(本文只讲他们之间如何适配)。下面是下载链接:
LVGL: https://github.com/lvgl/lvgl
FATFS: http://elm-chan.org/fsw/ff/00index_e.html
使用LVGL的文件系统时,函数的调用关系为:LVGL调用FATFS,FATFS调用单片机底层SD卡或FLASH驱动函数。
在适配过程中,我们主要关注3个文件:LVGL中有两个:lv_fs.clv_fs_fatfs.c。FATFS中有1个:ff.c
lv_fs.c是提供给用户使用的函数,比如lv_fs_openlv_fs_closelv_fs_read等。
ff.c是FATFS文件系统对底层磁盘操作的函数。
lv_fs_fatfs.c是连接上面两部分的过度文件。
调用关系:
在这里插入图片描述
lv_fs.c文件中打开文件函数:
在这里插入图片描述
可以看到,在函数内部实际上调用的是设备的打开文件回调函数。
此回调函数会在lv_fs_fatfs.c中注册。
lv_fs_fatfs.c
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里LVGL和FATFS之间的调用关系就十分的清晰明了了。
注意:文件中的lv_fs_fatfs_init函数,是在lv_extra.c中的函数lv_extra_init调用的。而lv_extra_initlv_init中被调用,所以用户就不需要自己调用上面的lv_fs_fatfs_init函数注册回调函数了。
在这里插入图片描述
在这里插入图片描述
同时注意也要在lv_conf.h中打开使用FATFS文件系统的宏开关。
在这里插入图片描述
这里的LV_FS_FATFS_LETTER是单个字符,正点原子把SD卡盘符设置为0,这里注意要写为‘0’,而不能写为‘0:’或者‘0/’,否则使用文件系统函数会报错。我就是这个问题卡了好久。
综上可知,在LVGL中使用FATFS文件系统,同时在单片机上使用,只需要下面几步:
1、在lv_conf.h中打开LV_USE_FS_FATFS宏开关同时设置磁盘的盘符。
2、在工程中添加FATFS文件系统移植文件。
3、在FATFS文件中的diskio.c中添加底层磁盘驱动函数。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
到此,LVGL和FATFS的适配已经完成,下面进行测试。
首先进行SD卡初始化和文件系统挂载
在这里插入图片描述
然后进行LVGL初始化,最主要的是lv_init函数,在此函数里面进行文件系统初始化。
在这里插入图片描述
最后调用LVGL的文件系统函数进行测试:
在这里插入图片描述
输出结果:
在这里插入图片描述
可以看到,系统从SD卡中读取了8个字符,说明LVGL的文件系统函数可以正常使用。

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在STM32F407移植FATFS文件系统,首先需要了解FATFS是一个开源的文件系统,它可以在嵌入式设备上实现存储器的文件读写操作。 在移植FATFS之前,需要准备一些基本的材料,如软件开发环境、相关的文档和资料。可以从FATFS的官方网站下载最新版本的库文件和相关的示例代码。 首先,创建一个新的工程,并在工程中添加所需的库文件和头文件。将fatfs.c和diskio.c两个源文件添加到工程,并在工程设置中包含相关的头文件目录。 接下来,在工程中添加适配底层硬件的代码,在这里是针对STM32F407的。需要编写适配FATFS的底层I/O读写操作的代码,包括初始化SD卡、读取扇区数据和写入扇区数据。 然后,根据具体需求配置FATFS的参数。可以在fatfs_conf.h文件中修改相关的参数,如簇大小、扇区大小和最大文件数等。这些参数根据实际应用需求进行调整。 最后,编写应用程序代码。可以利用FATFS提供的API来实现文件的打开、读取和写入等操作。需要注意的是在使用FATFS API之前,需要先调用f_mount函数挂载文件系统。 完成以上步骤后,就可以进行编译和烧录操作,将程序下载到STM32F407上进行测试。可以通过读取和写入文件来验证FATFS的正常工作。 总结来说,STM32F407移植FATFS文件系统需要准备相关的材料,包括库文件和文档。然后添加相关的源文件和头文件到工程中,并编写适配底层硬件的代码。之后根据需求配置FATFS参数,并编写应用程序代码。最后进行编译和烧录操作,进行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值