Skip to main content
JLakn
Associate III
July 28, 2020
Question

STM32CubeMX 6.0.0. LTDC layer generation bug on STM32F767IITx

  • July 28, 2020
  • 6 replies
  • 1612 views

Hey,

Today I updated STM32CubeMX to newest version 6.0.0. When generating my project for custom board on STM32F767 MCU i noticed bug in generated MX_LTDC_Init() function. When I configure one layer in CubeMX, generated code is always generated for 2 layers.

Here is code generated from new CubeMX 6.0.0.:

void MX_LTDC_Init(void)
{
 LTDC_LayerCfgTypeDef pLayerCfg = {0};
 LTDC_LayerCfgTypeDef pLayerCfg1 = {0};
 
 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 = 0;
 hltdc.Init.VerticalSync = 0;
 hltdc.Init.AccumulatedHBP = 46;
 hltdc.Init.AccumulatedVBP = 23;
 hltdc.Init.AccumulatedActiveW = 846;
 hltdc.Init.AccumulatedActiveH = 503;
 hltdc.Init.TotalWidth = 862;
 hltdc.Init.TotalHeigh = 510;
 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 = 800;
 pLayerCfg.WindowY0 = 0;
 pLayerCfg.WindowY1 = 480;
 pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
 pLayerCfg.Alpha = 255;
 pLayerCfg.Alpha0 = 0;
 pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
 pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
 pLayerCfg.FBStartAdress = 0xc0000000;
 pLayerCfg.ImageWidth = 800;
 pLayerCfg.ImageHeight = 480;
 pLayerCfg.Backcolor.Blue = 0;
 pLayerCfg.Backcolor.Green = 0;
 pLayerCfg.Backcolor.Red = 0;
 if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
 {
 Error_Handler();
 }
 pLayerCfg1.WindowX0 = 0;
 pLayerCfg1.WindowX1 = 0;
 pLayerCfg1.WindowY0 = 0;
 pLayerCfg1.WindowY1 = 0;
 pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
 pLayerCfg1.Alpha = 0;
 pLayerCfg1.Alpha0 = 0;
 pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
 pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
 pLayerCfg1.FBStartAdress = 0;
 pLayerCfg1.ImageWidth = 0;
 pLayerCfg1.ImageHeight = 0;
 pLayerCfg1.Backcolor.Blue = 0;
 pLayerCfg1.Backcolor.Green = 0;
 pLayerCfg1.Backcolor.Red = 0;
 if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg1, 1) != HAL_OK)
 {
 Error_Handler();
 }
 
}

and code from CubeMX version 5.6.1. :

void MX_LTDC_Init(void)
{
 LTDC_LayerCfgTypeDef pLayerCfg = {0};
 
 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_IIPC;
 hltdc.Init.HorizontalSync = 0;
 hltdc.Init.VerticalSync = 0;
 hltdc.Init.AccumulatedHBP = 46;
 hltdc.Init.AccumulatedVBP = 23;
 hltdc.Init.AccumulatedActiveW = 846;
 hltdc.Init.AccumulatedActiveH = 503;
 hltdc.Init.TotalWidth = 862;
 hltdc.Init.TotalHeigh = 510;
 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 = 800;
 pLayerCfg.WindowY0 = 0;
 pLayerCfg.WindowY1 = 480;
 pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
 pLayerCfg.Alpha = 255;
 pLayerCfg.Alpha0 = 0;
 pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
 pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
 pLayerCfg.FBStartAdress = 0xc0000000;
 pLayerCfg.ImageWidth = 800;
 pLayerCfg.ImageHeight = 480;
 pLayerCfg.Backcolor.Blue = 0;
 pLayerCfg.Backcolor.Green = 0;
 pLayerCfg.Backcolor.Red = 0;
 if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
 {
 Error_Handler();
 }
 
}

Please fix this bug. It's annoying to edit code everytime I generate code.

This topic has been closed for replies.

6 replies

TTulw.1
Visitor II
August 6, 2020

I have the same problem. After updating CUBEMX, CUBEIDE and Touch GFX the screen stopped working.

Amel NASRI
ST Technical Moderator
September 25, 2020

Hi @Community member​  & @TTulw.1​ ,

Unfortunately your question got lost for a long time as you didn't used relevant tags related to topics having more opportunity to be reviewed.

Now that it is brought to our attention, I reported it to our STM32CubeMX development team who will take care to bring required corrections.

-Amel

To give better visibility on the answered topics, please click on "Best Answer" on the reply which solved your issue or answered your question.
MM..1
Super User
October 13, 2020

Hi @Amel NASRI​ 

i today test my 429 rgb lcd CubeIDE ioc project and still this issue exist, in designer one layer selected , but generated two.

Too nvic irq level all 0 bug still exist.

Pls PATCH bugs quickly.

FYI I create project from ioc file version 5.0.1 in latest IDE...

Amel NASRI
ST Technical Moderator
October 16, 2020

Dear @MM..1​ ,

On the 25th of September, I have just confirmed the issue on my side and reported it to our development team.

It is up to them later to provide required fix and make the planning for the release that will embed this fix.

-Amel

To give better visibility on the answered topics, please click on "Best Answer" on the reply which solved your issue or answered your question.
cjing.1
Visitor II
October 14, 2020

I have the same problem. MX version is v6.0.1

I have fixed it.

the first, I set 2 layers, and set other parameters, then generate code.

the second , I set 1 layers, then generate code.

last, build code.

you can try it.

.

MM..1
Super User
October 14, 2020

This not help me in Version: 6.0.1-RC3

Build: 20200810-1643 (UTC)

still generated both layers.

Too MX plugin have in TouchGFX part User constants, but here defined constants isnt included and report error when used in cpp touchgfx part.