Skip to main content
Associate
December 12, 2023
Solved

NeoChrom/GPU2D registers documentation

  • December 12, 2023
  • 13 replies
  • 19278 views

Will this peripheral ever be documented in detail? i.e. registers, interrupts, etc.

Or even a lightweight/low level library would be acceptable.

We may choose STM32U5 for a product but not if we are forced to use TouchGFX for good performance.

 

Best answer by JMYGI

Dear Community
We are preparing to share basic documentation, code examples and required NemaGFX libs through NeoChromSDK. The NeoChromSDK comes in versions dedicated to one STM32 series (STM32U5x9, STM32H7R/S) supporting code examples to dedicated STM32 discovery kits.

Main target user of NeoChromSDK is GUI expert wanting to utilize NeoChrom(VG) GPU features, not using TouchGFX or other GUI tools already prepared to utilize the features of NeoChrom GPU.

We are working on a solution to share it through ST.com on a demand approach as it requires expert-level, and support on NeoChrom GPU is not mass market available. The documentation is limited to what is available from the IP vendor Think Silicon. Please note, I recommend using TouchGFX or other tools using NeoChrom GPU if you need dedicated support for NeoChrom features, this is available through the GUI tool vendor, so ST for TouchGFX.

As a temporary solution, you can already contact me on Jorgen.mygind@st.com to request access to NeoChromSDK.


Regards
Jørgen Mygind
STM32 Graphics Business Manager

13 replies

TDJ
Senior III
March 11, 2025

@Jack3 To clarify and correct myself: STM32U5A5 does NOT have GPU2D, but STM32U5A9 does - although without vector graphics. GPU2D with vector graphics is found on STM32U5G9.

Jack3
Senior
May 1, 2025

Although many things work fine with the NemaGFX and NemaVG libraries, I have a few issues.
All functions that use the NemaGFX library work fine.
Many functions that use the NemaVG library also work fine. For example arc, line and rectangle.

Good_graphics.jpg

However, a few functions that use the NemaVG library produce distorted graphics.
Below you can see a triangle (top left), rounded rectangle (top right), text (middle), circle (bottom left) and ellipse (bottom right). The kit is a STM32U5G9J-DK2. Heap and stack space are set to 0x800, it seems that changing this makes no difference as it comes from 0x200 and 0x400.

The text in the center represents "Hello. ! - | _ @", and can be recognized somewhat by the area that lights up.

Distorted_graphics_800x480.jpg

For each, I will show the code I used.

I'm sure I'm doing somthing wrong. But what is it?

It's hard to find good examples of this anyway, but I hope someone has some brilliant ideas.

GaetanGodart
Technical Moderator
May 1, 2025

Hello @Jack3 ,

 

This post had issue with SVG where the end result / display bug looked very similar to your issue, perhaps it could be helpful to you but I am not sure.

The fix was to add these 2 lines:

 /* Force GPU accesses to SRAM through DCACHE2 to be always uncached */
 __HAL_RCC_SYSCFG_CLK_ENABLE();
 HAL_SYSCFG_DisableSRAMCached();

to the MX_DCACHE2_Init function.

 

Regards,

Jack3
Senior
May 1, 2025

Hi Gaetan, that's the fix! Thank you very much!

BTW, in the distorted images, I used all white color for those, but coloured them this time.

Fixed_graphics_800x480.jpg

The GPU2D is impressive! Drawing the graphics below takes 16 ms only:

Image_2025-05-02_07.29.46.jpg

Video of the rotation of a bitmap, the bitmap (128x128 RGBA8888, 64kB) renders in 344 us (2907 revolutions/sec!), while power consumption is as low as 2mW:

 

Artur Laskowski
Associate III
December 1, 2025

As I see, the NeoChrom SDK is still not available from the ST webpage, right? What a shame.