Skip to main content
Graduate
February 27, 2025
Solved

LTDC configuration on STM32F469

  • February 27, 2025
  • 3 replies
  • 1256 views

@Tesla DeLorean 

Hi! I wonder if someone can help me! I am trying to initialize a LCD screen and I have some questions. I am using a STM32F469IIT6, and it does not have enough memory in itself to hold a buffer for my screen 800x480. I did not set up a DMA to use an external memory o handle the buffer, however I have the following questions:

I - What would happen if I assign a smaller buffer for the LTDC? will it still paint partial part of the screen, or it will not work at all?

II - Once I set the background colors in the .ioc, give the buffer address in the configuration and do not use the function: HAL_LTDC_SetAddress(&hltdc, buffer, 0), will the buffer be filled with the colors set in the background?

 

I've set up a logic analyzer to try to answer these questions, however, unless I am understanding it wrongly, my buffer is so small compared to the size that I need, that it is being very difficult to identify the colors I am inserting, if it is the case that I am being able to send it. My result so far it only a screen with the same color as when it turns on, so I wasn't able paint anything on the screen. 

 

Thank you!!

    This topic has been closed for replies.
    Best answer by MM..1

    Is more simple as you try. LTDC is simple hw bridge between memory and RGB . Bridge support palletes too then L8 is for save buffer. Too two layer can simple help. Layer 1 you can assign to read from flash static image to full display arrea in for example RGB565 format. And over place Layer 2 your L8 data framebuffer for dynamic GUI. Here you have 320kB memory , then no full window for this layer is used . LTDC is capable place any size on any possition , but have some restrictions for better performance. Then read appnote about.

    I test this on 1280x480 

    0693W00000AMRWmQAP.jpg

    inner frame is 320kB layer in L8.

    3 replies

    Graduate
    February 28, 2025
    Graduate II
    February 28, 2025

    I'm not sure, I'd imagine you could create some truncated LINE counts, and it would either give you some repeating screen sections, or your get one section, and the remaining is the colour snow pattern

    Graduate
    February 28, 2025

    Also, do you mind seeing if I got my set up correctly? Because for some reason the results I got in the logic analyzer are very different from what I expect. Also, I understand the logic in RGB888, but how is the MCU interpreting the buffer values to send it? is it getting the lower 24bits in three bytes or am I supposed to send have a buffer of 8bits values, with sequencies of R-G-B? Hope I am not being so confusing.

    Note: Since I've updated the buffer and set it as the buffer for the LTDC, I was expecting to have at least part of the screen painted.

    LucasStartTech_0-1740784260297.pngLucasStartTech_1-1740784387832.pngLucasStartTech_2-1740784407129.png

    LucasStartTech_3-1740784435244.png

    LucasStartTech_4-1740784720261.png

     

     

    Graduate
    March 1, 2025

    @Tesla DeLorean Trying to get it, step by step, I've set it up with the parameters for the screen. I've initialized with no buffer, and set a background color. I confirmed that the color is being sent to the screen with the logic analyzer, however, I can't display the background neither. Really don't know what to do next. This is my INIT and my results:

    LucasStartTech_0-1740849066435.png

    LucasStartTech_1-1740849104857.pngLucasStartTech_2-1740849135287.png

    LucasStartTech_3-1740849156912.pngLucasStartTech_4-1740849206537.pngLucasStartTech_5-1740849234059.png

     

    Graduate
    March 1, 2025

    @MM..1  Hi! When you said that "I test this on 1280x480 ", you meant the configuration I've set? I also have other questions! 

    -> How is the MCU interpreting the buffer values to send it? is it getting the lower 24bits in three bytes or am I supposed to send have a buffer of 8bits values, with sequencies of R-G-B? Hope I am not being so confusing.

    -> I see that there is a sequence to follow when turning the screen on: 

    LucasStartTech_0-1740856423685.png

    If I just turn it on without following this sequence, would the screen still paint colors on the screen? assuming its not damaged. 

    I am sorry, I am learning it from the very scratch.

    Graduate II
    March 1, 2025

    No your config, test is my 469 with DSI display. And your question isnt right. LTDC have intermediate buffer and do all based on set format of layer. One layer for example read from flash rom memory RGB888 and second L8 read one byte and send three bytes RGB888 from pallete.... As i write read apnote about LTDC 

    Introduction to LCD-TFT display controller (LTDC) on STM32 MCUs - Application note

     

     

    Graduate
    March 30, 2025

    @MM..1  I did it! It took me this long because I was working on other parts as well, but then I went through some notes and understood what you just said. One bad thing though is that trying to write in the flash memory, seems that I have overwritten something in the MCU, which can't be programmed anymore. But after replacing it, I got it right and printed in the screen. Now my next battle is with keying the images, since my inner window does not cover the whole screen.

    Also, I started to try to integrate an external SDRAM, but it is also being a fight :D

     

    Thank you very much for your help!!

     

    WhatsApp Image 2025-03-30 at 11.06.01 AM.jpeg