显示

概述

Ameba 显示架构采用 LVGL 作为 GUI 引擎。LVGL 是目前最流行的免费开源嵌入式图形库,可为任何 MCU、MPU 和显示类型创建精美用户界面。该架构不仅提供 LVGL 的参考移植方案和多种参考驱动程序,还提供了强大的 Wi-Fi/Bluetooth 通信能力,内置智能语音算法模块,各种通用的网络协议帧等等,广泛应用于消费电子和家电领域。

../../rst_rtos/4_multimedia/figures/display_architecture.svg

核心组件

组件

显示(display)的核心功能组件主要有:

  • GUI 渲染: LVGL 提供丰富的 UI 组件(按钮、滑块、列表等)。

  • 通信能力: 集成 Wi-Fi、Bluetooth、USB 等协议栈。

  • 多媒体支持​: 音频播放(Audio)、图像解码(JPEG/PNG)。

  • 智能交互: 语音识别(AI Voice)、触摸控制(Touch Driver)。

应用场景

主要应用场景有:

  • 消费电子(智能家居、可穿戴设备)。

  • 工业 HMI(人机界面)。

  • 物联网终端(网关、传感器节点)。

应用层

应用层的作用是用户交互入口,包含预定义应用场景。

模块名称

功能描述

Launcher

主屏幕界面,应用启动器。

Settings

系统设置(显示、网络、声音等)。

Music

音频播放器。

Speech

语音助手交互界面。

LVGL 库

LVGL 引擎

LVGL (轻便而多功能的图形库)负责图形渲染、事件处理、动画效果。

实现

LVGL 在 SDK 中的实现如下所示。

模块

位置

LVGL 8.3

{sdk}/component/ui/LVGL/lvgl-8.3/lvgl

LVGL 8.3 driver

{sdk}/component/ui/LVGL/lvgl-8.3/lv_drivers

LVGL 9.2

{sdk}/component/ui/LVGL/lvgl-9.2/lvgl

LVGL 9.2 driver

{sdk}/component/ui/LVGL/lvgl-9.2/lv_drivers

有关 LVGL 的更多细节,请参考 LVGL v8.3LVGL v9.2

配置

在我们的 SDK 中,要配置打开 LVGL 选项。

CONFIG APPLICATION > Graphics Libraries Configuration > Graphics Library Selection 打开 Enable LVGL Graphics Library

../../rst_rtos/4_multimedia/figures/display_lvgl_library_enable_lvgl.png

目前 SDK 支持的 LVGL 版本,可以在编译时进行选择。

CONFIG APPLICATION > Graphics Libraries Configuration > Graphics Library Selection > Enable LVGL Graphics Library > LVGL Version 中根据需要选择版本。

../../rst_rtos/4_multimedia/figures/display_lvgl_library_sel_version.png

驱动接口

要使用 LVGL 核心库,必须先对其进行初始化并配置所需组件。初始化的顺序如下所示。

  • 调用 lv_init()

  • 使用 lv_hal_init(int32_t w, int32_t h)() 来初始化显示驱动与输入驱动。

  • 使用 LVGL 核心库绘制你的用户界面应用。

  • 每隔若干毫秒调用 lv_timer_handler() 来处理 LVGL 相关任务。

示例如下。

int your_app(void) {
   lv_init();
   lv_hal_init(480, 800);
   /* Something else ... */
   /* ...... */
   while(1) {
      lv_task_handler();
      usleep(1000);
   }
}

外围组件

框架中提供的各种外围组件的说明如下。

组件名称

依赖库

功能

libjpeg/libpng

图像解码库

jpeg和png格式的图像加载

zlib

压缩库

文件压缩与解压

Wi-Fi/LwIP

网络协议栈

无线网络连接与通信

Bluetooth

蓝牙协议栈

近距离通信与数据传输

Audio

音频驱动

播放控制、音量调节

VFS

文件系统抽象层

支持多种存储介质

USB

USB 协议

外设连接

驱动层

功能

驱动层主要负责硬件抽象与控制,具体如下。

驱动类型

对应硬件

接口功能

Touch Driver

电容、电阻触摸屏

触摸坐标采集、手势识别

Panel Driver

LCD/OLED显示屏

显示模式配置、背光控制

Key Driver

按键

按键状态检测、中断处理

实现

驱动对应的实现如下。

驱动

位置

display for v8.3

{sdk}/component/ui/LVGL/lvgl-8.3/lv_drivers/amebadplus/src/display.c

display for v9.2

{sdk}/component/ui/LVGL/lvgl-9.2/lv_drivers/amebadplus/src/display.c

硬件接口层

硬件接口层主要负责底层硬件操作库​​,具体如下所示。

库名称

对应硬件接口

应用

ameba_lcd

LCD控制器

显示屏初始化、像素格式设置

ameba_mipi

MIPI接口协议栈

高速数据传输

ameba_spi

SPI总线

外设通信

ameba_i2c

I2C总线

低速设备控制

ameba_ppe

硬件加速引擎

图形渲染加速、DMA传输