1045|1

510

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【兆易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

 

 

最新回复

跑例程还是非常流畅的吧。  详情 回复 发表于 2024-5-15 07:35
点赞 关注
个人签名

保持热爱

 
 

回复
举报

6992

帖子

11

TA的资源

版主

沙发
 
跑例程还是非常流畅的吧。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表