2025-02-27 10:53 AM - last edited on 2025-02-28 11:59 PM by mƎALLEm
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!!
2025-02-28 1:26 PM
2025-02-28 2:49 PM
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
2025-02-28 3:20 PM
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.
2025-03-01 9:14 AM
@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:
2025-03-01 10:58 AM
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
inner frame is 320kB layer in L8.
2025-03-01 11:14 AM
@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:
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.
2025-03-01 11:25 AM - edited 2025-03-01 11:26 AM
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