2022-05-06 04:17 AM
Hi Community,
I have generated the Touch GFX project through STMCubeIDE. Getting correct output in simulator. Not getting image as it is (on the Touch GFX canvas) on the display.
I have attached the images for the reference.
2022-05-06 06:14 AM
Hello Vins,
Can you give more information about your configuration please ?
/Osman
2022-05-06 11:01 AM
Basic user mistake. Set default image angle to 90 / 0 based to your hw lcd orientation.
2022-05-08 10:49 PM
Hi @Osman SOYKURT
1) Touch GFX Designer Version- 4.19.1.
2) Internal RAM.
3) Single Buffer.
4)
2022-05-09 02:31 AM
@MM..1 Already I checked with both the orientations, same results.
2022-05-09 06:09 AM
Realy you regenerate code after change
and on all images have default ?
2022-05-09 07:05 AM
this looks more like a problem with your porch settings or the pixel depth.
you can clealy se *something* which means the system is running and the assets are there.
The skewing of the assets hints at some offset going wrong at the end of the line. Also - the bottom of the image shows 'random' noise which indicate memory without content.
2022-05-09 10:21 PM
@MM..1 I regenerated and dumped the code. Same result. All images have default.
2022-05-09 10:50 PM
2022-05-10 09:20 AM
I dont like DSI command mode, but part of your code that maybe is source for trouble
void HAL_DSI_EndOfRefreshCallback(DSI_HandleTypeDef* hdsi)
{
updateRegion++;
if (updateRegion < 4)
{
DSI->WCR &= ~(DSI_WCR_DSIEN);
LTDC_Layer1->CFBAR = ((uint32_t)currFbBase) + 200 * 2 * updateRegion;
uint16_t REAL_WIDTH = 200;
uint16_t ADJUSTED_WIDTH = 200;
if (updateRegion == 3)
{
ADJUSTED_WIDTH += 32;
}
LTDC->AWCR = ((ADJUSTED_WIDTH + 2) << 16) | 0x1E2; //adj
LTDC->TWCR = ((REAL_WIDTH + 2 + 1 - 1) << 16) | 0x1E3;
LTDC_Layer1->WHPCR = ((REAL_WIDTH + 2) << 16) | 3;
LTDC_Layer1->CFBLR = ((832 * 2) << 16) | ((REAL_WIDTH) * 2 + 3);
LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR;
LCD_SetUpdateRegion(updateRegion);
DSI->WCR |= DSI_WCR_DSIEN;
HAL_DSI_Refresh(hdsi);
}
else
{
// Otherwise we are done refreshing.
DSI->WCR &= ~(DSI_WCR_DSIEN);
LTDC_Layer1->CFBAR = (uint32_t)currFbBase;
uint16_t WIDTH = 200;
LTDC->AWCR = ((WIDTH + 2) << 16) | 0x1E2;
LTDC->TWCR = ((WIDTH + 2 + 1) << 16) | 0x1E3;
LTDC_Layer1->WHPCR = ((WIDTH + 2) << 16) | 3;
LTDC_Layer1->CFBLR = (((832 * 2) << 16) | ((WIDTH * 2) + 3));
LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR;
LCD_SetUpdateRegion(0);
DSI->WCR |= DSI_WCR_DSIEN;
GPIO::clear(GPIO::VSYNC_FREQ);
displayRefreshing = false;
if (HAL::getInstance())
{
// Signal to the framework that display update has finished.
HAL::getInstance()->frontPorchEntered();
}
}
plus check priority setup for IRQs. LCD 800x480 ?