cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H743 LTDC with no framebuffer

AlexSmart
Senior

Is it possible to use STM32H743's LTDC with no frambuffer and fill its FIFO "on the fly"?

20 REPLIES 20

Generating custom image with no fullframe static RAM buffer

set 72 to 104 and when you dont see your memory isnt ready and work, Mayby you choose memory not accesible on bus with LTDC or init is bad.

Too MPU have role...

custom image over fullframe? You will need reload it on dotclock speed , mybe this idea isnt good.

Second q is from where is your image.

Yes, moving buffer from SRAM1 to AXI-SRAM helped, thank you!

AlexSmart
Senior

However, manipulating window position on-the-fly doesnt work

void LTDC_IRQHandler(void)
{
	static unsigned int line_num = 72;
		
	LED1_GPIO_Port->ODR |=LED1_Pin;
	
	line_num +=10;
	if (line_num>=672)
		line_num = 72;
 
	__HAL_LTDC_CLEAR_FLAG(&hltdc, LTDC_FLAG_LI);
	__HAL_LTDC_DISABLE_IT(&hltdc, LTDC_IT_LI);
	LTDC->LIPCR = line_num;
	__HAL_LTDC_ENABLE_IT(&hltdc, LTDC_IT_LI);
 
	HAL_LTDC_SetWindowPosition(&hltdc, 10, line_num, 0);
	LED1_GPIO_Port->ODR &=~LED1_Pin;
}

When I set a breakpoint in interrupt code works as designed - every interrupt moving window 10 lines down. But when no breakpoint is active - blank screen.

HAL_LTDC_SetWindowPosition(&hltdc, 10, line_num, 0);

??? and as i write i dont understand your idea

Ok mistake in code,

    HAL_LTDC_SetWindowPosition(&hltdc, 10, line_num-9, 0);

but idea is the same. Every 10th line I set window position (buffer output) to line position+1 (buffer size changed to 10 lines).

I wanted to see if window position will update immediately or on the next frame. There is a posibility Im not getting whole mechanism right

Try inspire here

void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr)
{
    LTDC_Layer1->CFBAR = (uint32_t)adr;
 
    /* Reload immediate */
    LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR;
}

Its not gonna work, buffer addres is still same. But window position on the screen should be moved down

Ahh pls this is example you need change CFBAR to line management and use IMR ...