...each time the the LCD is updated. If I press ignore it will draw the next segment and then throw a new assert at the same place. Any ideas what the root problem could be?
I'm using touchGFX 4.10.0 and IAR ARM compiler 8.32.1
LCD will assert if your image format does not match the instance of LCD you're using (LCD16 in this case). Can you check if your opaque image format is RGB565? (non opaque can be ARGB8888).
The image format is RGB888 but my display is RGB565 so I choose the LCD16bpp as the dsiplay driver. When I change to the LCD24bpp driver I don't get the asserts any more. Does that mean that the format of the images selects what display driver you should choose?
Is there any way to control the format of the images generated from touchGFX designer?
You're absolutely right. The concrete instance of LCD determines how pixels are written to the framebuffer. For image formats, LCD just stops you right there because there's no reason to try to write a wrong format into the framebuffer. So, yes, the image formats you use should match the LCD instance, but everything should of course look correct on the final display.
Ok I figured that out, because I had to change the STM32F7DMA so it does a pixel trnasformation from RGB888 to RGB565 when it draws the image. But does touchGFX designer always gnnereate the images in RGB888 format regardless of what format the picture has when it is supplied to the designer?
No, you need to define the image format in the application configuration (config/gcc/app.mk for gcc) - This is what the image converter uses when it converts images. This setting is made for you when you select bit depth when you create your application. Along with this configuration the touchgfx startup code will also use the appropriate LCD class and set the correct depth of the framebuffer.