开源轻量级显示框架LVGL简介

01 LVGL是什么

LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,显著的优势使得LVGL蔚然成风,成为广大开发者在选择GUI时的第一选择。

主要特性

*强大的构建块,如按钮,图表,列表,滑块,图像等。

*高级图形动画,抗锯齿,不透明度,平滑滚动

*各种输入设备,如触摸板、鼠标、键盘、编码器等

*多语言支持与UTF-8编码

*多显示器支持,即使用更多的TFT,单色显示器同时

*完全可定制的图形元素与css类样式

*硬件独立与任何微控制器或显示器使用

*可扩展,使用少量内存(64kb Flash, 16kb RAM)

*支持操作系统、外部内存和GPU,但不是必需的

*单帧缓冲操作,甚至与高级图形效果

*用C编写的最大兼容性(c++兼容)

*模拟器在没有嵌入式硬件的PC上开始嵌入式GUI设计

*绑定到MicroPython

*教程,例子,快速GUI设计的主题

*文档可以在线和PDF格式获取

*麻省理工学院许可下的免费和开源

配置要求

基本上,每个能够驱动显示器的现代控制器都适合运行 LVGL。最低要求是:

*16、32 或 64 位微控制器或处理器

*建议使用 16 MHz 时钟速度

*闪存/ROM:> 64 kB 用于非常重要的组件 (> 建议使用 180 kB)

*RAM:静态 RAM 使用量:0~2 kB,取决于使用的功能和对象类型

*堆: > 2kB (> 建议使用 8 kB)

*动态数据(堆): > 2 KB (> 如果使用多个对象,建议使用 16 kB). 在 lvconf.h 文件中配置 LVMEM_SIZE 生效。

*显示缓冲区:> “水平分辨率”像素(推荐> 10 × 10ד水平分辨率”)

*MCU 或外部显示控制器中的一个帧缓冲器

*C99 或更新的编译器

*具备基本的 C(或 C++)知识 一块能驱动显示屏且Flash大于64KB,RAM大于20KB的单片机都可以支持运行LVGL。这样也就说明只需要是我们经常用于开发的单片机几乎都可以支持(16bit及以上)LVGL,LVGL能够同时被这么多平台支持的主要原因是LVGL对硬件的要求并不算太高。

系统框架

LVGL本身是一个图形库。

我们的应用程序通过调用LVGL库来创建GUI。它包含一个HAL(硬件抽象层)接口,用于注册显示和输入设备驱动程序。驱动程序除特定的驱动程序外,它还有其他的功能,可驱动显示器GPU、读取触摸板或按钮的输入。

MCU有两种典型的硬件设置。一个带有内置LCD/TFT驱动器的外围设备,而另一种是没有内置LCD/TFT驱动器的外围设备。相同的是,这两种情况都需要一个帧缓冲区来存储屏幕的当前图像。

集成了TFT/LCD驱动器的MCU如果MCU集成了TFT/LCD驱动器外围设备,则可以直接通过RGB接口连接显示器。在这种情况下,帧缓冲区可以位于内部RAM(如果MCU有足够的RAM)中,也可以位于外部RAM(如果MCU具有存储器接口)中。

如果MCU没有集成TFT/LCD驱动程序接口,则必须使用外部显示控制器(例如SSD1963、SSD1306、ILI9341 )。在这种情况下,MCU可以通过并行端口,SPI或通过I2C与显示控制器进行通信。帧缓冲区通常位于显示控制器中,从而为MCU节省了大量RAM。

LVGL集成了占用小、多平台使用、移植简单、操作简单、开源免费等一系列特点。对于使用者来说,LVGL拥有30多个可以随时使用的小部件的同时,甚至还可以自定义控件。

LVGL经常被使用在MCU级别的设备上,因其可以在多平台上移植使用以及在不同显示器上,以C编写,对于资源紧张的MCU来说十分适合。

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2023年3月15日 20:22