본문으로 건너뛰기

LVGL 소개

제품정보

이 가이드는 TuyaOpen의 LVGL (Light and Versatile Graphics Library) 응용 프로그램을 구축하는 방법을 설명합니다. 구성에서 스택을 활성화하고 **vendor 포트를 통해 디스플레이 초기화 ** (lv_vendor_*), 위젯을 만들고 LVGL 작업을 실행합니다. 그것은 보완Display Driver 통합 가이드(TDL 디스플레이 및 패널) 및제품정보참고.

자주 묻는 질문

제품 정보

  • 지원되는 전시를 가진 널 (아래 보기).
  • tos.py/ LVGL 및 디스플레이 드라이버를 활성화하는 Kconfig 액세스.
  • **T5AI-class 대상 **, TuyaOpen 선박 LVGL 아래src/liblvgl/이름 *lv_vendor접착제. ESP32, LVGL은 보통 ESP-IDF 구성품 및 보드 별 포트(Board-specific port)에서 제공됩니다.boards/ESP32/common/display/); 행동은 일치ESP32 지원 기능노트, T5하지lv_vendor경로.

한국어

  1. LVGL 예제 또는 앱 템플릿에서 시작:

    • examples/graphics/lvgl_demo(Widgets 데모)
    • examples/graphics/lvgl_label(분자 상표)
    • examples/graphics/lvgl_gif(GIF 위젯)
    • examples/graphics/lvgl_camera(camera 미리보기, 보드 별)
  2. board config를 선택하면 LCD와 터치와 일치합니다.TUYA_T5AI_BOARD_LCD_3.5.config또는 ESP32 밀가루 구성lvgl_demo).

  3. 메뉴 구성을 열고 **LVGL ** 및 올바른 ** 디스플레이 / 터치 ** 드라이버를 활성화하십시오. 이름 *제품정보LVGL 옵션 및 패널 관련 매크로에 대한.

  4. example 디렉토리에서 빌드 및 플래시:

    cd examples/graphics/lvgl_demo
    tos.py config choice
    tos.py build
  5. 검사user_main내 계정src/example_lvgl.c(주)example_lvgl_label.c): 기계설비 등록,lv_vendor_init, UI 설정,lv_vendor_start.

확장된 결과: 데모는 화면에 그릴; LVGL 작업은 유지lv_timer_handler납품업자 층을 통해 달리기.

LVGL을 초기화 (T5 / T5)lv_vendor경로)

일반적인 순서 (from)examples/graphics/lvgl_demo이름 *lvgl_label):

#include "board_com_api.h"
#include "lvgl.h"
#include "lv_vendor.h"

void user_main(void)
{
tal_log_init(TAL_LOG_LEVEL_DEBUG, 4096, (TAL_LOG_OUTPUT_CB)tkl_log_output);
board_register_hardware();

lv_vendor_init(DISPLAY_NAME);

lv_vendor_disp_lock();
/* Create objects, e.g. lv_demo_widgets() or lv_label_create() */
lv_vendor_disp_unlock();

lv_vendor_start(5, 1024 * 8);
}
한국어제품정보
board_register_hardware()도표의 앞에 LCD, 접촉 및 다른 널 장치 등록하십시오.
lv_vendor_init(DISPLAY_NAME)이름 *lv_init(), lv_port_disp_init, lv_port_indev_init, 틱 콜백을 설정하고 내부 sync primitives를 만듭니다.DISPLAY_NAMEKconfig display 인스턴스명(string)입니다.
lv_vendor_disp_lock() / lv_vendor_disp_unlock()LVGL API 호출 주위에 Mutex ** 아웃사이드 ** 전용 LVGL 스레드 (시작 중 예를 들어).
lv_vendor_start(priority, stack_size)실행 스레드를 시작lv_timer_handler()루프에서.

ISR 컨텍스트에서 arbitrary LVGL API를 호출하지 마십시오. TAL workqueues 또는 이벤트를 사용하여 UI 작업을 defer합니다.

위젯과 상호 작용

이름 *lv_vendor_init그리고 내부lv_vendor_disp_lock / unlock(또는 이미 안전한 컨텍스트에서 실행되는 코드에서):

  • 물체 만들기lv_<type>_create, 텍스트, 스타일 및 정렬 설정.
  • 제품 정보lv_screen_active()간단한 UI의 기본 루트로.
  • LVGL 버전에서 문서화 된 Prefer LVGL APIsrc/liblvgl/당신의 분지.

예제에서lvgl_label:

lv_vendor_disp_lock();
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_white(), LV_PART_MAIN);
lv_obj_t *label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "Hello World!");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
lv_vendor_disp_unlock();
lv_vendor_start(5, 1024 * 8);

내장 데모의 경우,demos/lv_demos.h관련 기사lv_demo_widgets()(또는 다른 데모) 자물쇠와 잠금 해제 사이, 에서lvgl_demo.

LVGL 앱

  1. 이름 *examples/graphics/lvgl_demo(주)lvgl_label) 시작 CMake 프로젝트로apps/또는examples/.
  2. 제품 정보ENABLE_LIBLVGL디스플레이 옵션app_default.config/ 널을 위한 Kconfig 파편.
  3. 실행 또는 재사용board_register_hardware()당신의 PCB (SPI/RGB 패널, 접촉 I2C, 역광선)를 위해.
  4. UI 모듈을 사용하여 데모 통화를 교체하십시오.lv_vendor_startUI가 건설된 후.
  5. 동적 업데이트를 추가하면 (network 상태, 센서 값), worker 스레드에서 위젯을 새로 고침lv_vendor_disp_lock / unlockLVGL 통화의 주위에, 또는 사용lv_async_callLVGL에 의해 권장되는 패턴.

플랫폼 노트

회사연혁LVGL 소스항구 입장
T5AI (일반)src/liblvgl/lv_vendor_init / lv_port_disp/ TDL-backed 디스플레이
ESP32 (일반)ESP-IDF LVGL의 장점회사연혁board_register_hardware+ IDF LVGL 포트 파일

Always read the README 현재 선택된 예에서 supported board matrix (예를 들어,)lvgl_demo/README.md목록 T3 SPI, T5AI RGB/SPI 및 ESP32 상태).

이름 *