嵌入式显示框架--LVGL
LVGL(Light and Versatile Graphics Library)
简介
LVGL官网
一个免费开源的轻量、多功能图形库,提供嵌入式GUI所需的功能,具备易于使用的图形元素、美观的效果和低内存占用。
资源
- 支持各种16、32、64位微型控制器处理器
- CPU资源:主频建议 >16MHz
- Flash/ROM :> 64kB(建议180kB)
- RAM:
>8kB(建议24kB) + FrameBufferSize + GraphicBufferSize
- Static RAM使用约2kB,取决于使用的特征
- Stack:>2kB(建议>8kB)
- 动态数据(heap):>2kB(建议>48k)LV_MEN_SIZE
- 1帧帧缓存:Frame buffer,在MCU、外部RAM、显示驱动IC中GRAM都可
- 如240x240,16色深,240x240x2byte = 115kB
- LVGL的图形缓存:Graphics buffer,屏幕一行水平像素内存占用大小(建议屏幕1/10像素点大小)
特点
- 免费开源(MTI license)
- 纯C语言编写,小内存占用,
- 支持OS:无os、任何os,Nuttx / RT-ThreadX RTOS / FreeRTOS等
- 超过30+ 丰富自带控件 Widgets:Button、Bar、Silder、Chart、Text area、KeyBoard等支持
- 多种显示支持 Display:任意分辨率、自定义颜色格式(6/16/32color depth)、
- 各种输入设备支持 Input Device:触摸板、鼠标、键盘、编码器等,滚动,拖动对象、手势识别;
- 图形 Drawing:去锯齿、圆角矩形、圆角边界、阴影、线、圆弧、多边形、蒙板
- 文字 Font:UTF-8、去锯齿、字间距、自动换行和文件滚动、FreeType集成例子、多语言支持
- 图片 Image:支持多种颜色格式、实时重着色、实时放缩旋转、图片存在文件/flash中、PNG例子
- 风格 Style:部件外观、提供主题、动画切换、CSS方式Layout、平滑滚动、不透明度等
开发
官网手册
官方文档:API/Code/效果 注意版本
离线模拟环境
Simulator on PC
Window上使用CodeBlocks / VSCode + SDL driver
Linux上使用VSCode + SDL(开源跨平台多媒体开发库,控制图像、剩余、输入输出等)
拖放GUI工具
SquareLine Studio
可以布局放置基础部件及格式,生成初步C代码。免费试用。
ESP32+Nuttx+LCD
make menuconfig
修改 lcd driver application lvgldemo graphic部分生成defconfig
注:app example默认LVGL7.3版本,使用8.0等版本nuttx需要修改部分内容
app/graphics/lvgl/
lv_conf.h
lv_demo_conf.h
Makefile
Make.def
等
app/examples/lvgldemo/
lvgldemo.c
Makefile
等
7.3和8.0+差别还挺多的 !!!
TouchGFX
简介
一款针对STM32微控制器进行了优化的免费高级图形软件框架,为基于STM32的硬件快速完成GUI应用程序。TouchGFX由三个主要部分组成:两个工具和一个框架。
- TouchGFX Designer 拖放式图形构建PC工具
- TouchGFX Generator STM32CubeMXPC工具进行软硬件配置可生成工程
- TouchGFX Engine 优化和硬件加速图形库
资源
- 支持st系列微型控制器处理器:入门级(stm32f0/g0/l0)高阶(stm32u5/h5/f3/l4/h7/wl/f7/mp等)
- CPU资源:占用率 1 - 90% 取决于应用及可用的硬件加速器
- Flash/ROM > 61kB
- 框架:60-100kB
- 屏设置,GUI,逻辑:1-100kB
- 图片和字库:1-40MB(取决于应用复杂度)
- RAM:>20kB
- 框架和协议:10-30kB
- 显存:10kB-3MB(取决于屏分辨率,色深,显存数量)
- 如240x240,16色深,1个显存,240 x 240 x 2byte x 1 = 115kB
特点
- 高阶MCU集成图形加速的嵌入式图形化硬件加速器,有效释放CPU资源 占用率80%->4%
- 界面生成C++语言,使用模型-视图-表示器模式轻松与任意C代码对接
- 支持OS:无os、任何os,Nuttx / RT-ThreadX RTOS / FreeRTOS等
- 30+窗口小部件:滑动容器、动画图像、形状、时钟、滚动列表等
- 支持透明度特效、alpha混合、抗锯齿字体和字距调整
- 持智能手机动画功能,如滑动、滚动、3D效果,视频播放等
- 触摸显示屏或硬键进行即时交互
开发
- TouchGFX Designer 拖放式图形构建PC工具
- TouchGFX Generator STM32CubeMXPC工具进行软硬件配置可生成工程
- TouchGFX Engine 优化和硬件加速图形库
对比
相同点
占用资源较小,适合嵌入式GUI应用,提供丰富窗口部件,支持图形、文字、动画等多样效果,支持触摸按键等输入等;
不同点
LVGL
适用资源符合的MCU、CPU
全部C语言
MTI开源
释放CPU资源需对应提升硬件配置
TouchGFX
适用STM系列单片机
GUI部分C++语言
工具包
ST系列MCU增加硬件加速模块有效释放CPU资源,应该是只有高阶的MCU有加硬件加速