ZHDA005 December   2025 MSPM33C321A , MSPM33C321A-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1概述
    1. 1.1 LVGL 项目设置
    2. 1.2 配置
    3. 1.3 初始化
    4. 1.4 LVGL 输出
    5. 1.5 LVGL 输入
    6. 1.6 LVGL 更新
  5. 2LVGL 示例
    1. 2.1 硬件连接
    2. 2.2 软件
    3. 2.3 LVGL 示例摘要
  6. 3总结
  7. 4修订历史记录

初始化

使用 LVGL 创建嵌入式 GUI 时,必须初始化正在使用的显示,并且必须将 LVGL 配置为与显示配合使用。这种初始化和配置通过 LVGL 全局函数 lv_port_disp_init 完成。此函数分为三个部分:

  • 显示初始化
    • LVGL 包含一个全局函数 disp_init。此函数在 lv_port_disp_init 中调用,可用于触发所使用显示屏的初始化序列。
  • 颜色缓冲区分配和刷新模式选择
    • LVGL 使用颜色缓冲区来存储渲染图像的像素数据。该缓冲区 lv_disp_draw_buf_t 在 lv_port_disp_init 中分配。有两种典型的缓冲配置:
      • 单路缓冲区:一个缓冲区被分配并传递给 lv_disp_draw_buf_init。该缓冲区的大小通常是水平结果的十倍(10 行像素)。该缓冲区仅填充渲染图像的像素数据,CPU 负责将颜色缓冲区的像素信息传输到用于与显示屏通信的通信接口。
      • 具有 DMA 的双缓冲区:两个缓冲区分配了相同大小的内存,并传递到 lv_disp_draw_buf_init。两个缓冲区的大小通常为 10 行像素。LVGL 使用重建图像的部分像素数据填充一个缓冲区,然后使 DMA 可以使用这些数据开始将数据传输到通信接口。
    • 还有两种模式可以用于配置 LVGL 执行图像刷新的方式:
      • 部分刷新:在部分刷新中,只有正在更新的渲染图像部分被写入颜色缓冲区。默认情况下启用此项。该模式支持更快的刷新和更小的颜色缓冲区,然而,如果显示部分撕裂或条纹,则可能会导致残留的显示伪影。
      • 完全刷新:在完全刷新时,整个渲染的图像将被写入颜色缓冲区。这可通过设置 lv_disp_drv_t 显示驱动程序中的 full_refresh 字段来启用。此模式可消除残留显示伪影的问题,但速度要慢得多,并且需要一个与屏幕分辨率相等的颜色缓冲区。
  • 显示驱动程序配置
    • LVGL 提供了必须配置的显示驱动程序结构,以便 LVGL 正确呈现显示。第一步是通过使用驱动程序的新实例 lv_disp_drv_t 调用 lv_disp_drv_init,来初始化显示驱动程序
    • 初始化显示驱动程序后,必须配置的主要值包括:
      • 水平和垂直分辨率:水平和垂直分辨率 hor_res 和 ver_res 是显示驱动程序的成员,可以使用之前定义的 MY_DISP_HOR_RES and MY_DISP_VER_RES 进行设置
      • 刷新回调:必须使用刷新回调 flush_cb 的位置来配置显示驱动程序。刷新回调是在 LVGL 刷新已填充渲染图像像素数据的颜色缓冲区时调用的方法。此回调方法将在本应用手册中进一步讨论
      • 绘制缓冲区:显示驱动程序必须配置先前初始化的颜色缓冲区即 draw_buf 的位置
      • 刷新模式:如果使用完全刷新模式,则必须将显示驱动程序配置为 full_refresh 设置为 1
    • 最后,必须通过调用 lv_disp_drv_register 向 LVGL 注册显示驱动程序

LVGL 支持多种类型的输入器件,包括触控板、鼠标、键盘、编码器、或按钮。所有这些输入器件都必须初始化并配置 LVGL。这是在 LVGL 全局函数 lv_port_indev_init 中执行的,它分为两部分:

  • 输入器件初始化
    • LVGL 包含几个可用于初始化输入器件的全局函数。例如,当使用具有电阻式或电容式触控的显示屏时,可以调用全局函数 touchpad_init 来执行触控板初始化。
  • 输入器件驱动程序配置
    • LVGL 提供了必须配置的输入器件驱动程序结构,以便 LVGL 正确处理输入。第一步是初始化输入器件驱动程序,方法是使用驱动程序的新实例 lv_indev_drv_t 调用 lv_indev_drv_init
    • 初始化输入器件驱动程序后,必须配置的主要值为:
      • 输入器件类型:所使用的输入器件类型:指针(触控板或鼠标)、键盘、按钮和编码器
      • 输入读回调:输入器件驱动程序必须配置输入读回调 read_cb 的位置。输入读取回调是 LVGL 为输入器件的任何输入进行读取时调用的方法。此回调方法将在本应用手册中进一步讨论
    • 最后,必须通过调用 lv_indev_drv_register,使用 LVGL 注册输入器件驱动程序