Skip to main content
Associate III
September 3, 2026
Question

Is there a demo of H7R7 using gfxmmu for round panel?

  • September 3, 2026
  • 5 replies
  • 40 views

I am trying to use touchgfx and gfxmmu on H7R7 with a round lcd panel,but failed. So ,Is there a demo of this kind?

5 replies

ST Technical Moderator
September 3, 2026

Hi amb,

I am not familiar with any existing demos doing exactly this, but in TouchGFX Designer there are two very relevant template projects you can look at for inspiration:

Best regards,

Peter

ambAuthor
Associate III
September 3, 2026

Hello ​@PeterVang 

It seems  the gfxmmu between these chips are different, I can not configure the same as U5G9 .

This is the GFXMMU and LTDC setup I am using:

The screen size is 480*480,I use 16 bytes per block,256*16=4096 bytes, I use RGB565,So 2 bytes per pixel. 

4096/2 = 2048. So I changed the Image width to 2048. Is my calculation correct?

After this config,I got a display like this:

This is exactly what I want.But I did not use touchgfx, the random display is normal.So I believe I am doing right till now.

Then I enabled touchgfx ,use this configure:

I changed “Use Large Framebuffer Stride” to “Yes”,But The “FrameBuffer Stride Value” did not change as expected.

After generate code ,I found this changement in TouchGFXGeneratedHAL.cpp:

 setFrameBufferSize(0,480); This is  clearly a wrong number.

So I changed 0 to 2048,and build the project, download to mcu. The program is running ,If I place a break point ,It breaks normally. The RENDER_TIME pin is mormally fired, I can see 60hz 10% pwm coming out,which is normal.

The only thing that did not work is Display never changed.Still random pixel I showed before.

So what I am missing?

Hope for your reply.

ST Technical Moderator
September 4, 2026

Hello amb,

I agree that the value for “Framebuffer Stride Value (LTDC)” should definitely not be calculated to 0. In our U5G9 example project, this is calculated as a result of the “Number of Blocks” selected in GFXMMU configuration:
192 * 16 bytes / 24 bit/pixel = 1024 pixels

But this “Number of Blocks” parameter does not exist in the H7S7 GFXMMU configuration. I will have to investigate this further, give you a solution.

 

In the meantime, I am curious to know why you want to create a “round framebuffer” on the H7S7?

The typical purpose is to save around 20% of framebuffer RAM, by not storing the corners. But this comes at the expense of a little increase in rendering performance, because of the overhead of going through the GFXMMU. On the U5G9, this can be a good tradeoff because of the very limited internal RAM. But with external RAM, you normally have enough RAM that the 20% framebuffer size reduction is not important.

ambAuthor
Associate III
September 3, 2026

BTW: I use cubemx 6.18.1