【兆易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,像素大小等
-
- static void lcd_config(void)
- {
-
- tli_gpio_config();
-
- tli_config();
- }
3.使能TLI功能,包括前景层与背景层使能
-
- tli_layer_enable(LAYER0);
- tli_layer_enable(LAYER1);
- tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN);
-
- tli_enable();
4.配置 TLI 外设及显示混合图像并载入
-
- tli_blend_config();
- tli_reload_config(TLI_REQUEST_RELOAD_EN);
5.定义图像,这里gImage_image1-12定义在Image文件夹.h文件夹里,在main函数通过轮询调用显示,达到动画效果。这里显示的是一只豹子奔跑的画面。
- int main(void)
- {
-
- cache_enable();
-
- systick_config();
- lcd_config();
-
-
- tli_layer_enable(LAYER0);
- tli_layer_enable(LAYER1);
- tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN);
-
- tli_enable();
-
-
- tli_blend_config();
- tli_reload_config(TLI_REQUEST_RELOAD_EN);
-
- while(1) {
-
- 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显示
播放器加载失败: 未检测到Flash Player,请到 安装
LCD_Display
|