LVGL系列(二)之二 LVGL常见问题解答 整理自官方文档

“本文大部分内容来自LVGL官方文档,手翻版,如有错误欢迎指正。”

系列文章目录

一、LVGL系列(一) 一文了解LVGL的学习路线 轻松了解LVGL的全部 

二、LVGL系列(二)之一 LVGL必读介绍  为什么要学习LVGL

       LVGL系列(二)之二 LVGL常见问题解答 整理自官方文档

二、LVGL系列(三)LVGL仿真环境的搭建(WIN下)

        2.1 VS下搭建LVGL仿真环境

        2.1 如何在仿真环境下运行自己的代码

三、LVGL系列(三) LVGL移植教程

四、LVGL系列(四)概述

        4.1 对象 LVGL核心概念

        4.2  位置、尺寸和布局

五、LVGL系列(五)部件

六、LVGL系列(六)布局

文章目录

系列文章目录

文章目录

前言

一、LVGL·的主要特征?

二、硬件要求

三、许可证

四、仓库布局

五、最后

给点个赞点个关注呗!!!持续更新



前言

        LVGL(Light and Versatile Graphics Library)是一个免费的开源图形库,为您提供创建具有易于使用的图形元素、漂亮的视觉效果和低内存占用的嵌入式 GUI  所需要的一切。

“这是来自官网的一句话,我觉的说的很好在此贴出来。也是我们学习LVGL的原因。”

一、LVGL·是否支持我的硬件?

每一个具有能够驱动显示器的接口(并口, SPI, RGB接口等)并能够满足需求的MCU都被LVGL支持

这包括:

  • "一般的" MCU :STM32F,STM32H,NXP Kinetis,LPC,IMX,DSPIC33,PIC32等。
  • 蓝牙,GSM,WiFi模块,如Nordic NRF和ESPRESIF ESP32
  • 带帧缓冲设备的Linux  such as /dev/fb0.  这包括单板计算机像 Raspberry Pi。
  • 以及任何具有足够强大的MCU和能够驱动显示器的设备


二、支持我的显示器吗?

        只需要一个简单的驱动程序功能,可将一个像素数组复制到显示的给定区域中。如果您可以使用显示屏执行此操作,那么你的显示器就支持LVGL。

支持的显示类型的一些示例:

  • 具有16或24位颜色深度的TFT
  • 带有HDMI端口的监视器
  • 小单色显示器
  • 灰度显示器
  • 即便是LED矩阵
  • 或任何其他显示器,您可以在其中控制像素的颜色/状态

三、显示器没反应我做错了什么?

        确保您在一个中断中调用了LV_TICK_INC(x)并且在主程序中的while(1)调用了LV_TIMER_HANDLER().


四、为什么显示驱动程序只调用一次? 只刷新显示屏的上部。

        确保你在"display flush callback"结束后调用了 lv_disp_flush_ready(drv)。


五、为什么显示乱码?

        可能有显示驱动程序中的错误。在不使用LVGL的情况下尝试以下代码。你应该看到一个带红色渐变的正方形

#define BUF_W 20
#define BUF_H 10

l_color_t  buf[BUF_W  *  BUF_H]; lv_color_t  *  buf_p  =  buf;
 uint16_t x, y;
for(y  =  0;  y  <  BUF_H;  y++)  {
lv_color_t  c  =  lv_color_mix(LV_COLOR_BLUE,  LV_COLOR_RED,  (y  *  255)  /  BUF_H);
for(x  =  0;  x  <  BUF_W;  x++){ (*buf_p) =	c;
buf_p++;
}
}

lv_area_t a; a.x1 = 10;
a.y1 = 40;
a.x2 = a.x1 + BUF_W - 1; a.y2 = a.y1 + BUF_H - 1;
my_flush_cb(NULL,  &a,  buf);

六、为什么在显示器上有无意义的颜色

可能lvgl的颜色格式与显示颜色格式不兼容。在 lv_conf.h.中检查 LV_COLOR_DEPTH

如果您使用具有SPI(或其他面向字节的接口)的16位颜色,可能需要在LV_CONF.H中设置LV_COLOR_16_SWAP 1。它互动像素的上下字节。

七、怎么提高UI速度

  • 如果你的MCU具有高速缓冲器,请在编译器中打开以便使用
  • 提升显示缓存的大小
  • 使用2个显示缓冲区,并在后台中使用DMA(或类似的外围)刷新缓冲区
  • 如果使用SPI或者并行端口以驱动显示器,请提高他们的时钟速度
  • 如果显示屏具有SPI端口,请考虑使用并行更改为模型,因为它具有更高的吞吐量
  • 将显示缓冲区保留在内部RAM中(不在外部SRAM中),因为LVGL使用它很多并且它应该具有小的访问时间

八、如何减少Flash / ROM使用

        您可以在lv_conf.h中禁用所有未使用的功能(如动画,文件系统,GPU等)和对象类型。

如果您使用的是GCC,您可以添加

  • -fdata-sections -ffunction-sections  编译器标志
  • --gc-sections 链接器标志。

       从最终二进制中删除未使用的函数和变量

九、如何降低RAM使用量

  • 降低显示缓冲区的大小 Display buffer
  • 在lv_conf.h里减少 LV_MEM_SIZE。这个内存是创建像按钮,标签等的对象时使用的。
  • 为了使用更低的 LV_MEM_SIZE 您可以只在必需时创建对象并在不需要时删除它们。

十、如何在RTOS中使用LVGL

        要在使用任务互相中断的操作系统(抢占)中使用LVGL,您应该使用互斥锁保护LVGL相关的功能调用。

给点个赞点个关注呗!!!持续更新

整个系列还在整理中,有些地方还没完成。如有意见建议,欢迎在评论区提出。

  • 11
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪有万里山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值