LVGL ported to the 5-inch Riverdi STM32 Embedded Displays (STM32U599NJH6Q or STM32U5A9NJH6Q)

Overview

STM32 Embedded 5” display is all-in-one complete and open-platform solution being able to independently handle the visual layer of devices with the need for high computing performance. The 5-inch STM32 Embedded Displays series are industrial-quality LCD-TFT solutions based on the STM32U599NJH6Q or STM32U5A9NJH6Q microcontroller. It has been designed in a way that allows to meet most of the hardware and programming challenges faced by engineers, including access to all interfaces.

Benchmark

The benchmark uses a screen-sized partial buffer and copies a rendered area to a frame buffer with DMA2D. No VSYNC is used, therfore some tearing is visible in some test cases.

Riverdi STMU5-cover

Buy

You can purchase the 5-inch Riverdi STM32 Embedded Displays from several sources:

Benchmark

Buffer configuration

The example is configured for 16-bit RGB565 color format, which is the native color format of the panel. The project uses LVGL's LV_DISPLAY_RENDER_MODE_PARTIAL mode with two 60 line (1/10th of the height of the screen) buffers. A single buffer requires 120kB memory.

If more memory is needed for the application, a single buffer may be used, or the size of the buffer can be reduced. There is no strict rule for the optimum buffer size, as it depends on many factors (screen size, screen content, processor speed, RAM speed, type of the LCD interface). In practice a 1/10th screen size buffer is a good compromise between performance and memory use, but this is an area for potential optimization, depending on the application.

The buffer configuration can be found in the file lv_port_riverdi_stm32u5/Core/Src/lvgl_port_display.c.

TODO: update benchmark video and certificate links image

Specification

CPU and memory

  • MCU STM32U599NJH6Q/STM32U5A9NJH6Q (Cotex-M33, 160MHz)
  • RAM 2.5MB
  • Flash 4MB
  • GPU Neo-Chrom (GPU2D), Chrom-Art (DMA2D), Chrom-GRC (GFXMMU)

Display

  • Resolution 800x480
  • Display size 5.0”
  • Color depth 24bit
  • Technology IPS
  • Brightness 850 nits
  • DPI 188 px/inch
  • Touch pad Projected Capacitive

Others

  • RS485, RS232
  • Expansion connector (40 GPIOs to access 2x I2C, 1x UART, 1x USART, 1x SPI, 1x USB, 7x PWMs, 2x DACs, 2x ADCs)
  • 2x CAN FD
  • RiBUS connector
  • USB
  • Haptic feedback driver output (DRV2605L)

Getting started

To be able to flash and debug your program you will need to purchase an SWD debug probe which supports the ARM Cortex-M7 core, e.g the STMicro ST-Link V2/V3 or the Segger J-Link.

Hardware setup

  • Connect a 6-48V power supply to the POWER header on the board using the supplied cable. The board draws about 0.28A at 9V.
  • Connect a debug probe to the SWD header using the supplied cable.

Software setup

Run the project

  • Clone the project: git clone --recursive https://github.com/lvgl/lv_port_riverdi_stm32u5
  • Open STM32CubeIDE and import project: File => Open Projects from File System... => Directory => Select the "STM32CubeIde" folder => Finish
  • Build the project (for the best performance use Release configuration with -O2 flag): Project => Build Project
  • Click the image Run button to flash the project

Debugging

  • After building the project click the Debug button image to flash the project. You will need to select the correct debug probe for the first run.

Notes

This repository supports all configuration of 5-inch Riverdi STM32 Embedded Displays:

Contribution and Support

If you find any issues with the development board feel free to open an Issue in this repository. For LVGL related issues (features, bugs, etc) please use the main lvgl repository.

If you found a bug and found a solution too please send a Pull request. If you are new to Pull requests refer to Our Guide to learn the basics.