【兆易GD32H759I-EVAL】--5.点亮LCD
[复制链接]
开发板板载TFT-LCD触摸屏,可以做现实应用,本篇主要讲述驱动其显示。
一.硬件原理
开发板配备40Pin 4.3寸TFT LCD,像素分辨率480*272,触摸IC XPT2046。使用前要将开发板相关跳线帽接到LCD TLI功能引脚侧。屏硬件原理如下:
图1:TFT LCD屏引脚定义
液晶显示器,简称 LCD(Liquid Crystal Display),液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分子排列却和固体晶体一样非常规则,因此取名液晶,液晶本身是不发光的。TFT LCD接口包含R[7:0] 红色数据、G[7:0] 绿色数据、B[7:0] 蓝色数据、CLK像素同步时钟信号、HSYNC水平同步信号、VSYNC垂直同步信号、DE数据使能信号、触摸检测、背光、SPI四线信号。
GD32H759IMK6具有图像处理加速器(IPA),IPA 提供从某一个或两个源图像到目标图像的可配置的,灵活的图像处理功能。它支持以下四种转换模式:
复制某一源图像到目标图像中;
复制某一源图像到目标图像中并同时进行特定的格式转换;
将两个不同的源图像进行混合,并将得到的结果进行特定的颜色格式转换;
用特定的颜色填充目标图像区域。
前景层图像支持 16 种像素格式,背景层图像支持 11 种像素格式,每像素从 4 位到最高 32 位,对于目标图像支持 5 种像素格式,每像素从 16 位到最高 32 位。采用间接像素模式时, IPA 为两个源图像分别提供了 256*32 的颜色查找表。其特性主要有:支持四种像素格式转换模式;支持配置图像大小;支持图像旋转等。
二.代码
1.像素大小、同步信号脉冲数宏定义
#define HORIZONTAL_SYNCHRONOUS_PULSE 41
#define HORIZONTAL_BACK_PORCH 2
#define ACTIVE_WIDTH 480
#define HORIZONTAL_FRONT_PORCH 2
#define VERTICAL_SYNCHRONOUS_PULSE 10
#define VERTICAL_BACK_PORCH 2
#define ACTIVE_HEIGHT 272
#define VERTICAL_FRONT_PORCH 2
2.LCD配置。tli_gpio_config配置LCD GPIO引脚,tli_config配置显示屏参数、初始背景LOGO,像素大小等
/*!
\brief LCD Configuration
\param[in] none
\param[out] none
\retval none
*/
static void lcd_config(void)
{
/* configure the GPIO of TLI */
tli_gpio_config();
/* configure TLI peripheral */
tli_config();
}
3.使能TLI功能,包括前景层与背景层使能
/* enable TLI layers */
tli_layer_enable(LAYER0);
tli_layer_enable(LAYER1);
tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN);
/* enable TLI */
tli_enable();
4.配置 TLI 外设及显示混合图像并载入
/* configure TLI and display blend image */
tli_blend_config();
tli_reload_config(TLI_REQUEST_RELOAD_EN);
5.定义图像,这里gImage_image1-12定义在Image文件夹.h文件夹里,在main函数通过轮询调用显示,达到动画效果。这里显示的是一只豹子奔跑的画面。
int main(void)
{
/* enable the CPU cache */
cache_enable();
/* configure the SysTick, TLI */
systick_config();
lcd_config();
/* enable TLI layers */
tli_layer_enable(LAYER0);
tli_layer_enable(LAYER1);
tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN);
/* enable TLI */
tli_enable();
/* configure TLI and display blend image */
tli_blend_config();
tli_reload_config(TLI_REQUEST_RELOAD_EN);
while(1) {
/* IPA configuration and display the images one by one */
ipa_config((uint32_t)&gImage_image1);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image2);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image3);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image4);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image5);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image6);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image7);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image8);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image9);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image10);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image11);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
ipa_config((uint32_t)&gImage_image12);
ipa_transfer_enable();
while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));
delay_1ms(50);
}
}
三.编译烧录测试
编译烧录后复位,可以看到LCD屏被点亮,显示LOGO和一直奔跑的豹子。这里使用到了TLI LCD显示和图像加速处理(IPA)将图像从Flash拷贝到SRAM以加速处理,这些需要更多一些深入地了解和熟悉使用。
图2:LCD显示
LCD_Display
|