Microchip SAMA5D27上運行LVGL V7.02

LVGL簡介

LVGL - 輕量級通用圖形庫.

  • 強大的構件-按鈕、圖表、列表、滑塊、圖像等。
  • 先進的圖形-支持動畫,抗鋸齒,不透明度,平滑滾動。
  • 同時支持各種輸入設備,如觸摸屏、鼠標、鍵盤、編碼器、按鈕等。
  • 同時使用多種顯示設備,即單色和彩色顯示器。
  • 支持UTF-8編碼的多語言,雙向支持和阿拉伯語文本處理。
  • 完全可定製的圖形元素
  • 硬件獨立,可與任何微控制器或顯示器一起使用。
  • 可擴展到以較少的內存進行操作(64 kB閃存,10 kB RAM)
  • 支持操作系統、外置內存和GPU,但不是必需的。
  • 即使是先進的圖形效果,也可以進行單幀緩衝操作。
  • 用C語言編寫,以達到最大的兼容性(兼容C++)。
  • Micropython Binding在Micropython中公開LVGL API
  • 無需嵌入式硬件就能在PC上開發的模擬器
  • 提供教程、例子、主題幫助快速完成開發
  • 提供參考的說明文檔和API文檔

LVGL V7.0新版本特性

搶先看LVGL V7.0帶來了哪些新的特性:

新的繪圖系統

  • 完全重構LVGL的繪製引擎,使用 "mask"來實現更高級、更高質量的圖形效果。
  • 新系統的新引入的一個功能是可以去除圓角邊緣的溢出內容。
  • 它還允許繪製完美的反鋸齒圓、線和弧。
  • 在內部繪圖是通過定義mask(如圓角矩形、線條、角度)來實現的。
    當繪製一些東西時,當前活動的遮罩可以使一些像素透明。(作者補充-開源2D矢量圖型引擎Cairo裏面也有用到mask概念)
    例如,矩形邊框是通過使用2個矩形遮罩來繪製的:一個遮罩去除內部部分,另一個遮罩去除外部部分。

新的系統風格

  • 用一種更靈活, 輕量級的系統取代舊的系統。
  • 使用了一種類似於CSS的方法:支持層疊樣式,繼承屬性和每個對象的本地屬性。
  • 作爲這些更新的一部分,很多對象被重新設計,API也被改變。

GPU加速

  • 爲了更好地利用GPU,從這個版本開始,GPU的使用可以整合到LVGL中。在lv_conf.h中,任何支持的GPU都可以通過一個配置選項來啓用。
  • 目前只支持ST’s DMA2D (Chrom-ART) , 更多GPU的支持會在後續版本中加入進來.

命名的改進

以下對象類型進行了重命名:

  • sw -> switch
  • ta -> textarea
  • cb -> checkbox
  • lmeter -> linemeter
  • mbox -> msgbox
  • ddlist -> dropdown
  • btnm -> btnmatrix
  • kb -> keyboard
  • preload -> spinner
  • lv_objx folder -> lv_widgets
  • LV_FIT_FILL -> LV_FIT_PARENT
  • LV_FIT_FLOOD -> LV_FLOOD_MAX
  • LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT
  • LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM

重新設計和改進的對象

  • dropdown: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right.
  • label: body_draw is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before)
  • arc: can draw bacground too.
  • btn: doesn’t store styles for each state because it’s done naturally in the new style system.
  • calendar: highlight the pressed datum. The used styles are changed: use LV_CALENDAR_PART_DATE normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work)
    chart: only has LINE and COLUMN types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. LV_CHART_PART_SERIES_BG also added to set a different style for the series area. Padding in LV_CHART_PART_BG makes the series area smaller, and it ensures space for axis labels/numbers.
    linemeter, gauge: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines.
    gauge: lv_gauge_set_needle_img allows use image as needle
    canvas: allow drawing to true color alpha and alpha only canvas, add lv_canvas_blur_hor/ver and rename lv_canvas_rotate to lv_canvas_transform
  • textarea: If available in the font use bullet (U+2022) character in text area password

LVGL V7.0.2初體驗

話不多說,直接上圖看官方例程效果圖。
在這裏插入圖片描述
在這裏插入圖片描述

LVGL在Microchip SAMA5D27運行效果

LVGL V7.02移植到SAMA5D27+7"LCD屏(分辨率是800*480), 核心處理器是ARM Cortex-A5架構,主頻500MHz帶NEON,用來跑LVGL足夠.
在這裏插入圖片描述

LVGL不足之處

  • 目前沒有針對NEON進行優化
  • 屏幕切換的時候不夠自然,能夠見到抖動(已經開了雙frame buffer)
  • 不支持直接貼圖顯示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章