LVGL简介
LVGL(Light and Versatile Graphics Library)是一个轻量级的嵌入式图形库。LVGL的项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2016年将其发布在 GitHub上。
lvgl官方网站的内容十分完善。在官方文档的介绍页,详细说明了Lvgl的关键特性、运行要求、仓库组成(github)以及常见问题的解答等,例如,Lvgl也针对如何优化UI界面速度给出了建议,包括:
- 启用编译器优化并启用缓存(如果MCU支持)
- 增加
显示缓冲区大小
- 使用两个显示缓冲区,并在后台使用
DMA
(或类似的外设)刷新缓冲区 - 如果使用SPI或并行接口驱动显示器,可尝试
提高时钟速度
- 如果你用的显示器仅支持SPI端口,可以考虑更换为具有
并行接口
的显示器型号,并行接口具有更高的吞吐量 - 将显示缓冲区存储在
内部RAM
中(而不是外部SRAM),因为LVGL会频繁访问它,所以应该具有快速的访问时间
总之,Lvgl的维护团队可以说是十分贴心了!在官方文档的Examples小节,也比较全面地给出了各个组件的介绍和代码示例。如果你希望阅读中文文档,可以选择访问百问网LVGL中文站点。
开发前需要了解的概念
- Driver(驱动程序):LVGL需要与显示器和触摸屏等硬件设备进行交互。因此我们了解如何编写或配置驱动程序。但其实LVGL官方提供了许多常用驱动芯片的驱动程序如ILI9341、SSD1963、ST7789等,这些驱动被存放在lv_drivers仓库。当然,有了官方的驱动并不意味着不做什么就能用了。大多数时候,我们还需要进行一些配置参数的修改,以兼容我们显示屏的分辨率、方向等。
- Objects(对象):在LVGL中,用户界面的基本构建块是对象,也称为Widgets(组件),例如按钮、标签、图像、列表、图表和文本区域等。所有对象都使用
lv_obj_t
指针作为句柄进行引用,并可用于设置或获取对象的属性。任何对象都有共同的属性字段(Position、Size、Parent、Styles、Event handlers等)和自身特定的属性(如滑块对象有最大值、最小值、当前值)。
LVGL开发
建议使用的工具
GUI_Guider
SquareLine Studio
Font Converter https://lvgl.io/tools/fontconverter
Image Converter https://lvgl.io/tools/imageconverter
参考文档
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
请登录后查看评论内容