【ThreadX全家桶】GuiX移植之LTDC

【ThreadX全家桶】GuiX移植之LTDC


一、LTDC配置

1、使用STM32CubeMX配置并生成LTDC工程。

2、时钟配置界面配置符合需求的LTDC时钟。

3、LTDC基础配置

【ThreadX全家桶】GuiX移植之LTDC
①笔者手上的板子采用RGB24线连接屏幕,所以显示类型选择RGB8888。
②宽度、高度、分辨率、前庭、后庭等数据可查看屏幕数据手册获悉。
③其他数据保持默认即可。

4、LTDC层配置

STM32F429BIT6的LTDC支持两个层,类似于两个显存空间。输出时,两个层数据由硬件根据设置,混合为一层数据输出到RGB引脚。
【ThreadX全家桶】GuiX移植之LTDC
①层数可设置为1/2层。
②设置层窗口大小,无特殊需求,设置为分辨率大小即可。
③像素格式选择ARGB8888,4字节,测试时容易往显存中填充数据。也可以选择RGB888,注意填充数据时一个像素占3字节。
【ThreadX全家桶】GuiX移植之LTDC
④混合系数配置,Layer1为前层,Layer0为后层。当混合系数都设置为最大值255时,最终显示结果与前层数据保持一直,更多组合请自行尝试。
⑤帧buffer,设置前层和后层的显存起始地址(一般使显存地址位于SDRAM/SRAM上),其他两个参数与分辨率保持一致即可。
⑥背景色在最终输出时,会和前后层混合,这里未设置。

5、LTDC IO设置

【ThreadX全家桶】GuiX移植之LTDC
LTDC IO引脚输出速度设置为High/Very High,设置速度较低时,屏幕显示会出现毛刺。

二、测试LTDC

LTDC配置好后,向显存中写入与像素格式匹配的数据,LTDC会自动将显存中的数据显示在屏幕上。

下面提供一个测试代码:

#define LAYER0ADDR	0xD0000000
#define LAYER1ADDR	0xD0100000
uint32_t x=0,y=0;
uint32_t *wp=NULL;
void LTDC_Test(ULONG thread_input)
{
	wp = (uint32_t *)LAYER0ADDR;
	for(x=0; x<480*272; x++)
	{
		wp[x] = 0xff00ff00;
	}
	
	wp = (uint32_t *)LAYER1ADDR;
	for(x=0; x<480*272; x++)
	{
		wp[x] = 0xffff0000;
	}
}	

因为Alpha系数设置为255,所以最终显示效果与Layer1保持一致,即显示红色。


上一篇:sqllabs 闯关wp


下一篇:【语音分离】基于matlab FASTICA语音分离【含Matlab源码 1023期】