1.lvgl库在VS Code中PlatformIO平台的源码详细介绍
2.关于STM32H743配置FMC接口驱动4.3寸TFT并移植LVGL,并优化使用DMA刷屏提高帧率
3.当然要保护花花了~ 基于全志D1-H和XR806的分析名贵植物监控装置
4.香橙派OrangePi Zero2通过ili9488显示lvgl
lvgl库在VS Code中PlatformIO平台的详细介绍
今天我花费了一整天的时间,深入研究了lvgl库及其模拟器在VS Code的源码PlatformIO插件中的使用方法。
lvgl是分析一个轻量级的图形界面库,主要用于为没有操作系统的源码设备提供图形化界面。
由于稚晖君的分析党章知识选粹源码HoloCubic固件需要移植,我想先在电脑上进行模拟,源码于是分析开始探索这一领域。
我在B站上找到了一个教程,源码推荐使用VS Code + PlatformIO来构建lvgl图形界面和PC模拟器。分析在查阅官方文档后,源码我发现作者在GitHub上发布了支持该平台的分析demo,于是源码我开始研究这个库的工作原理和文件结构。
该项目在GitHub上,分析需要自行下载。源码
由于稚晖君的小电视分辨率是x,但默认demo的分辨率是一个很大的长方形。
推荐这个方法的B站UP主只教了如何安装,没有详细讲解lvgl库的使用方法,所以我只能在官网的文档中寻找答案。(顺便提一下,官网是全英文的,但谷歌浏览器自带的翻译功能非常出色,基本翻译一遍,直播源码对行业影响再对照英文原文就能理解意思,没有之前学校里做英语阅读理解的厌恶感。不得不承认谷歌yyds,百度毁了我青春。)
如果有小伙伴还没有安装,可以先看他的视频:
项目结构
所有的库文件和demo源代码都在名为.pio的文件夹里。
注意:如果重复编译时出现错误,需要手动删除build文件夹,再重新编译!
(现在想想,.pio文件夹下的内容可能是在platformIO的.ini配置文件中填写了其在GitHub的URL,然后自动从代码仓库拉取的。只是个人猜测,还没有验证过,希望各位批评指正。)
platformio.ini文件:
这是platformio用来自动补全文件的配置文件,在这里可以设置lvgl的版本、lvgl的驱动版本、模拟器的分辨率等。
我当时并不知道如何调整分辨率,尝试了许多方法,一开始看到有人说在lv_drv_conf.h中修改,有人说在lv_conf.h中修改。寻迹小车蓝牙控制源码于是我在.pio文件夹下研究了一个下午的源码。
最后,通过库编写者的友好注释,我成功地在lv_drv_conf.h中找到了名为SDL_HOR_RES(水平向分辨率)和SDL_VER_RES(竖直向分辨率)的两个宏定义常量。
然后根据注释的要求配置好,但发现调试出来的模拟器分辨率还是老样子!
就在绝望之际,我想起了platform的配置文件.ini,我打开扫视了一下,竟然在这里发现了SDL_HOR_RES和SDL_VER_RES这两个常量和后面的值!我马上修改了这两个值,重新编译了一下(记得要删除build文件夹再重新编译),终于成功了!
所以在库配置文件中的,也就是lv_drv_conf.h和lv_conf.h中的分辨率设置,应该是实际在设备上运行时使用的。
本来只是想调整分辨率,结果我把库的源代码学了个遍。算是因祸得福吧。
真好,又是一个被封在家的一天。
我在上海闵行,听说我这里是u净小程序源码重灾区,小区都封了,解封遥遥无期。但是对于技术宅来说,这简直太开心了!(宅在家变成了正当理由哈哈哈)
关于STMH配置FMC接口驱动4.3寸TFT并移植LVGL,并优化使用DMA刷屏提高帧率
首先,基于原理图配置接口,通过CUBEMX完成FMC接口的设置。然后,依据生成的代码,编写屏幕驱动程序,针对原子品牌的4.3寸MCU屏,x像素,提供直接下载的驱动文件以供移植。
移植过程中,添加了三个shell调试命令,包括打开背光命令`lcd_bl_on`、关闭背光命令`lcd_bl_off`和刷屏命令`lcd_test`。确保移植操作顺利进行,需关注的两个关键函数是单点像素颜色更新和区块颜色更新。这些函数用于实现后续LVGL的刷屏操作。
LVGL的移植涉及8.2.0版本源码的下载与解压,按照指南在H项目中创建了lvgl目录,无源码如何修改功能并分别创建了app、port、src三个文件夹。将LVGL的模板文件、头文件、源文件和示例文件按照特定步骤复制到对应目录中,以构建完整的移植环境。
项目结构设计完成后,编辑相关文件以适应H的配置。在`Lvgl.h`中打开宏定义,将`#if 0`更改为`#if 1`,以启用特定功能。`Lv_port_disp_template.c`文件中同样打开宏定义,并添加显示区域的水平像素和垂直像素的宏定义。修改`lv_port_disp_init()`函数,初始化显示缓存,配置为仅使用第一种方式,并相应调整像素值以匹配LCD规格。
在`disp_init()`函数中,添加LCD初始化代码和配置定时器TIM,实现1ms中断一次。在中断回调函数中,添加LVGL的心跳时钟。`disp_flush()`函数的修改侧重于采用区块刷屏方式,以提高效率。在`main()`函数中,调用LVGL初始化和处理函数,实现整个系统的启动。
白屏展示正常后,可以尝试编写`hello world`示例,并在`main()`函数中调用,以验证文本显示功能。LVGL官方Demo的运行,涉及将C文件添加到项目中,并在`lv_cong.h`文件中启用相关Demo,通过`main()`函数调用以展示更多功能。
在屏幕面积较大、像素较多的情况下,优化刷屏操作以减少CPU占用,采用DMA技术提高刷屏效率。配置CUBEMX以适应特定的LCD接口,如NT的TFT屏幕,调整DMA参数,如内存类型、地址增方式和中断功能。修改LVGL的刷屏代码以支持双缓冲机制,定义两个缓冲区并确保其位于AXI内存空间中。在`disp_init()`函数内添加DMA中断回调函数入口,以实现DMA传输的高效刷屏流程。
完成上述步骤后,系统应能展现出优化后的界面和更高的帧率。如需进一步技术支持和获取开发板资源,可闲鱼搜索用户名阿达和阿文,获取更多专业咨询与帮助。
当然要保护花花了~ 基于全志D1-H和XR的名贵植物监控装置
一款基于全志D1-H和XR的珍贵植物监控装置,通过毕设项目实现,旨在精准监控植物的生长环境。设计中,D1-H充当服务器,搭载yolov5图像处理技术,实时分析叶片状态并监控光照与水分需求;XR作为采集端,集成传感器阵列,采集环境参数,如温湿度、光照和土壤湿度,并通过socket服务与D1-H通信。
D1-H负责复杂的任务,如信息接收、显示、光照控制及图像处理,使用的技术包括图形用户界面设计(LVGL)和YOLOV5图像识别。XR则侧重于环境参数的采集、LED和水泵的控制,通过AMS稳压器确保电源稳定,利用PWM调光技术实现精确补光,土壤湿度传感器驱动补给系统。
通信设计上,服务器采用多线程TCP架构,确保与XR的稳定连接,并具备重连功能。开发过程中,通过WiFi连接进行调试,利用LVGL构建简洁的数据显示界面,显示实时数据和控制选项。
整个系统通过开源的毕设资料,包括开题报告、答辩PPT和论文全文,以及相关的源代码,供全志在线开发者社区的成员分享和学习。这不仅是一个实用的植物监控解决方案,也是一次技术实践的宝贵经验分享。
香橙派OrangePi Zero2通过ili显示lvgl
本文详细介绍了如何使用香橙派OrangePi Zero2通过ili显示lvgl。前置条件包括已接上并能正常显示的3.5英寸SPI显示屏,以及Ubuntu . LTS + Visual Studio Code开发环境,交叉编译器gcc-arm-9.2-.-x_-aarch-none-linux-gnu,以及lvgl源码。
在修改源码文件阶段,首先调整了lv_conf.h中的颜色深度为,以适应屏幕分辨率。接着在lv_drv_conf.h中将fb0修改为fb1,以适应特定配置。同时,修改了Makefile,注释掉原有CC,并指向自定义编译器目录。
编译过程在VSCode中进行,通过新建终端执行命令。编译完成后,可通过file命令检查运行平台类型,ARM aarch字样表示编译成功。此阶段,可将编译出的可执行文件通过ssh传输到香橙派进行运行。
对于鼠标显示功能的实现,考虑到屏幕未配备或未连接触摸屏,通过增加鼠标控制。在lv_drv_conf.h中选择鼠标作为事件源,并在main.c中注释掉触摸屏初始化,增加鼠标初始化。下载并整合鼠标_cursor_icon.c文件,随后修改Makefile,完成编译并上传至香橙派,以显示鼠标。
最后,为保持项目根目录简洁,修改Makefile以将编译输出文件导向指定目录。参考文章如Linuxlinux上使用lvgl、Linux 环境中使用 LVGL和Linux Framebuffer 实验,提供了进一步的学习资源和指导。