STM32H7B3I-DK LVGL port

Hi all,

I used LVGL in my final year project and I was blown away by how fantastic it is. I’ve decided to show my appreciation by sharing a ready-made LVGL port for the STM32H7B3I-DK development board since I couldn’t find a port for it. The port can be found on my GitHub: https://github.com/epichl25/STM32H7B3I-DK_LVGL and I have written the instructions on how to import the project in STM32CUBEIDE in the README file.

Thank you for your time and happy developing!

1 Like

Hi,

Very nice! Would you be interested in hosting this repo under the LVGL organization?
Of course, we would provide write or admin access for you to this repo.

Absolutely! I’d be more than happy to host this repo under the LVGL ogranisation so it could reach a wider audience. How would this work? Do I add you and embeddedt to my repository or will you be creating a new repository to host on the LVGL GitHub? Do let me know if there’s anything I need to do to proceed.

Update: I have changed the repositories name, the project structure, and improved how users can change the rendering modes for this project.

The new project link can be found here: https://github.com/epichl25/lv_port_stm32h7b3i_disco

Great! I’ve accepted you invitation, but please give me admin access to transfer the repo to LVGL.

Hi,

I just transferred the ownership to your account @kisvegabor. Let me know if there are any problems.

Aaaand here it is :slight_smile:

1 Like

I was able to compile this project with the latest ST CubeIDE version 1.12.1. However, it is not possible to use the ST CubeMx to add additional peripherals. The IOC file does not generate the libraries as included with the project.

What are the actual HAL libraries that are required? Also why are the BSP (Utilities subdirectory) referenced at all?

I was able to compile this project in CubeIDE 1.16 without any changes and it runs fine on my stm32h7b3i-dk without DMA2D enabled. With DMA2D enabled, a hard fault occurs because something in the function lv_draw_stm32_dma2d_blend_fill() clobbers ram variables and pointers end up pointing to invalid memory regions. I was hoping to test this as an alternative to TouchGFX for my current stm32h7a3 design and from the comments it looks like DMA2D should greatly improve performance. Has anyone else tried this with DMA2D?

I found the problem with the lv_draw_stm32_dma2d_blend_fill() function. You need to add the following to the DMA2D configuration in the function:

DMA2D->OPFCCR = LV_DMA2D_COLOR_FORMAT;

Dan

1 Like

Great news!

Finally we are in a good state with our STM collaboration and can add the DMA2D driver to LVGL v9.

Are you interested in contributing into this feature? I think it would be an exciting topic where you can learn a lot about v9’s rendering pipeline, however DMA2D is simple enough to keep the project doable in a few days.

I am interested, but I just don’t have time right now. I am in the middle of two new product designs using the STM32H7B3 and it’s using up all of my time. LVGL looks very interesting and we are considering it for one of the designs. Integrating the GUI within the application is easier with LVGL than it is with TouchGFX. I think LVGL is a better choice, but need to decide if we have time to rebuild with LVGL. If we decide to use LVGL and I can free up some time to help, I will contact you.