cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F746IGT, &Inch Display & TouchGFX Problem.

GMano.1
Associate II

Hai everyone ....,

I am new to touchGFX, I have a STM32F746IGT based waveshare development board and 7 Inch display (800X480 Pixels) SDRAM with 16bit data bus from Micron,QSPI flash.

I firstly try to configure LTDC to display a image on LCD from flash i got success so means i am able to configure LTDC ok.

Then iniatlize SDARM i just give LTDC frame start address as 0xD0000000. Configure TouchGFX and generated code. But it not workout.

0693W00000BatrfQAB.jpg please let me know how to debug where is my mistake?

My doubt in SDRAM .

how to check SDRAM initialize working or not , How change image data flash to SDRAM?

Image data from flash just is i use:

 pLayerCfg.FBStartAdress = (uint32_t)& image_data_Hello_World;

Thanks & Regards

M.Govind

3 REPLIES 3
MM..1
Chief II

SDRAM check is simple. comment out RTOS start and

  1. use memset((void *)disp_mem,0,x*1024*1024); x is size in M of SDRAM
  2. LCD must be black
  3. memset((void *)disp_mem,255,10000); some part white
  4. create memtest func with write and check try other settings if 1-3 dont work...

Hai...<

Thanks for replay......,

Yes...., It's work TouchGFX, But if one switch OFF and ON the controller again display showing some color's.

0693W00000BaNX4QAN.jpggo to .ioc file and change LTDC --> Layer Setting --> color frame buffer start address : 0xD0000000, change to 0xC0000000,(this time display show Whit color) and again change 0xD0000000 or this all done in main.c file " pLayerCfg.FBStartAdress = 0xD0000000;" (Change run the code and make some changes and run the code after some attempts it will work) some thing do like this

 LTDC_LayerCfgTypeDef pLayerCfg = {0};

 /* USER CODE BEGIN LTDC_Init 1 */

 /* USER CODE END LTDC_Init 1 */

 hltdc.Instance = LTDC;

 hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;

 hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;

 hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;

 hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;

 hltdc.Init.HorizontalSync = 19;

 hltdc.Init.VerticalSync = 2;

 hltdc.Init.AccumulatedHBP = 159;

 hltdc.Init.AccumulatedVBP = 22;

 hltdc.Init.AccumulatedActiveW = 1183;

 hltdc.Init.AccumulatedActiveH = 622;

 hltdc.Init.TotalWidth = 1343;

 hltdc.Init.TotalHeigh = 634;

 hltdc.Init.Backcolor.Blue = 0;

 hltdc.Init.Backcolor.Green = 0;

 hltdc.Init.Backcolor.Red = 0;

 if (HAL_LTDC_Init(&hltdc) != HAL_OK)

 {

  Error_Handler();

 }

 pLayerCfg.WindowX0 = 0;

 pLayerCfg.WindowX1 = 1024;

 pLayerCfg.WindowY0 = 0;

 pLayerCfg.WindowY1 = 600;

 pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;

 pLayerCfg.Alpha = 255;

 pLayerCfg.Alpha0 = 0;

 pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;

 pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;

 pLayerCfg.FBStartAdress = 0xD0000000;

 pLayerCfg.ImageWidth = 1024;

 pLayerCfg.ImageHeight = 600;

 pLayerCfg.Backcolor.Blue = 0;

 pLayerCfg.Backcolor.Green = 0;

 pLayerCfg.Backcolor.Red = 0;

 if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)

 {

  Error_Handler();

 }

switch OFF the controller again start from first.

Why some time it will work some time not work,

Where i need check? where i am make mistakes?

Please let me know.

Thanks

M.Govind

Display IC have some selftest commands and maybe when init sequence is bad show selftest and with this setup all LTDC is ignored, too LTDC address is overwrited with TouchGFX HAL then must be setup properly on two places .