HMI 智能屏方案

介绍

Ameba 以「一块屏,打开多维交互」为理念,推出全场景 HMI 智能屏解决方案,包括 RTL8730E 等旗舰级 HMI SoC 智能屏家族。这些方案赋能厂商打造直观高效的人机交互体验,满足跨行业多样化智能显示需求。无论是智能家居中控的“一屏控全家”,还是冰箱、烤箱、洗衣机的彩屏升级,亦或医疗监护仪、工业 PLC、儿童早教机的交互革新,Ameba 都能提供从芯片、系统到云端的全栈方案,帮助品牌方实现极具竞争力的“用户友好型”智能终端。

核心特性

  • 多接口兼容:支持 MIPI-DSI、 RGB 和 SPI 显示接口

  • 高级图像处理:内置高性能图形引擎,实现高性能数据可视化

  • 沉浸式显示:支持高清数据可视化呈现

  • 多模态交互:结合触摸屏、物理旋钮和通过麦克风阵列实现的 AI 语音控制

  • 互通互联:集成多协议网关,实现智能设备互操作性

应用场景

  • 智能家居控制面板

  • 家电显示终端 (包括各类大家电和小家电)

  • 医疗健康设备

  • 工业控制终端

  • 教育电子设备

显示屏接口

MIPI-DSI

MIPI-DSI 是高分辨率和高刷新率的 LCD 上常见的高速串行接口。RTL8730E 在硬件接口和图形处理方面具备多项先进特性,支持 MIPI-DSI 接口,能够输出 24 位 RGB888 颜色格式的图像。此外,RTL8730E 集成了 LCD 控制器,可以配置多达 7 种 RGB 格式,最多支持 3 个图层混叠,为图像处理提供卓越性能。同时,RTL8730E 配备了 552 KB 的片上 SRAM,外部存储器可以配备 PSRAM 或者 DDR,这些特性共同确保了高分辨率屏幕的流畅渲染和快速响应。

RGB

RGB 因其刷屏速率高、驱动屏幕大、适用面广而成为中控大屏常用的显示驱动接口。

SPI

SPI 是小型屏幕常用的驱动接口。

图形加速引擎

Todo

软件架构

Ameba 显示架构采用 LVGL 作为 GUI 引擎。LVGL 是目前最流行的免费开源嵌入式图形库,可为各类 MCU、 MPU 和显示类型创建精美用户界面。该架构不仅提供 LVGL 的参考移植实现和多种驱动方案,还集成 Wi-Fi /蓝牙功能、智能语音算法及常用网络协议栈 6,广泛应用于消费电子和家电领域

../../rst_multimedia/rtos/figures/display_architecture.svg
应用程序层

应用层作为用户交互入口,包含用户预定义各种应用场景的 app。 例如,智能家居面板产品包含 Launcher,Settings 等应用。Launcher 应用主要负责主屏幕界面和应用启动器。

框架层

由 LVGL 图形库和 lv_drivers 驱动适配层构成,LVGL 提供 GUI 开发基础框架,lv_drivers 为特定显示板提供驱动适配,支持显示控制器与触摸面板

驱动层

包含了各类不同 LCD 面板,触摸等驱动的参考实现。

底层操作层

该层包含了 LCD 控制器,MIPI-DSI 控制器,以及图形加速引擎 PPE 等底层硬件操作接口。

具体实现

Ameba 智能显示解决方案采用 LVGL 作为核心 GUI 引擎。LVGL(轻量级多功能图形库)是一款开源的嵌入式图形库,专为资源受限设备创建现代化用户界面而设计。 当前 SDK 支持的两个 LVGL 版本如下:

Module

Location

LVGL 8.3

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

LVGL 9.2

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

更多 LVGL 细节请参考:

LVGL v8.3LVGL v9.2.

配置

在 SDK 中可通过以下步骤启用 LVGL:

使能 Enable LVGL Graphics Library at CONFIG APPLICATION > Graphics Libraries Configuration > Graphics Library Selection.

../../rst_multimedia/rtos/figures/display_lvgl_library_enable_lvgl.png

在菜单中选择对应的版本 CONFIG APPLICATION > Graphics Libraries Configuration > Graphics Library Selection > Enable LVGL Graphics Library > LVGL Version.

../../rst_multimedia/rtos/figures/display_lvgl_library_sel_version.png

使用方法

使用 LVGL 核心库需按顺序初始化组件:

  • 调用 lv_init().

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

  • 通过 LVGL 库绘制 UI 应用

  • 周期性调用 lv_timer_handler() 处理任务

示例代码:

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