单片机基础知识 -- TFT-LCD(二)

张开发
2026/4/11 15:22:54 15 分钟阅读

分享文章

单片机基础知识 -- TFT-LCD(二)
基于GD32F4单片机TFT(一)一、GD32tli_parameter_struct超详细讲解这是GD32 单片机 TLITFT LCD 接口控制器最核心、最顶层的配置结构体。作用配置整个 LCD 屏幕的硬件时序、分辨率、同步信号、背景色等全局参数相当于 LCD 控制器的“总设置”。我用最清晰、最实用的方式给你讲透直接能用来写代码。一、结构体完整定义typedefstruct{// 1. 同步信号参数HSYNC/VSYNCuint32_ttli_sync;// 同步信号极性配置uint32_ttli_hsync;// 水平同步周期 HSYNCuint32_ttli_hbp;// 水平后沿uint32_ttli_hfp;// 水平前沿uint32_ttli_vsync;// 垂直同步周期 VSYNCuint32_ttli_vbp;// 垂直后沿uint32_ttli_vfp;// 垂直前沿// 2. 输出控制uint32_ttli_clock_polarity;// 像素时钟极性uint32_ttli_de_polarity;// DE 使能信号极性uint32_ttli_output;// TLI 输出使能// 3. 背景颜色没有图层时显示的底色uint8_ttli_background_red;// 背景 Ruint8_ttli_background_green;// 背景 Guint8_ttli_background_blue;// 背景 B}tli_parameter_struct;二、每个成员到底什么意思超级通俗1. 同步信号配置决定屏幕能不能点亮tli_sync同步信号极性高有效/低有效TLI_SYNC_HSYNC_LOW行同步低有效TLI_SYNC_HSYNC_HIGH行同步高有效TLI_SYNC_VSYNC_LOW场同步低有效TLI_SYNC_VSYNC_HIGH场同步高有效tli_hsync行同步信号宽度HSYNC单位时钟周期tli_hbp行同步后沿Horizontal Back Porchtli_hfp行同步前沿Horizontal Front Porchtli_vsync场同步信号宽度VSYNCtli_vbp场同步后沿Vertical Back Porchtli_vfp场同步前沿Vertical Front Porch2. 有效分辨率怎么算最重要水平有效像素 总水平周期 - hsync - hbp - hfp 垂直有效像素 总垂直周期 - vsync - vbp - vfp例如常见480x272屏hsync41, hbp2, hfp2 vsync10, vbp2, vfp23. 时钟与信号极性tli_clock_polarity像素时钟 SCLK 极性TLI_CLK_POLARITY_RISING上升沿采样最常用TLI_CLK_POLARITY_FALLING下降沿采样tli_de_polarityDE 使能信号极性TLI_DE_POLARITY_HIGHTLI_DE_POLARITY_LOWtli_outputTLI 输出开关TLI_OUTPUT_ENABLE开启显示TLI_OUTPUT_DISABLE关闭显示4. 背景颜色tli_background_red/green/blue当所有图层都关闭时屏幕显示的颜色。范围0~255三、最常用、最标准的初始化示例直接复制用tli_parameter_struct tli_struct;// 初始化默认值tli_struct_para_init(tli_struct);// 同步极性tli_struct.tli_syncTLI_SYNC_HSYNC_LOW|TLI_SYNC_VSYNC_LOW;// 水平时序tli_struct.tli_hsync41;tli_struct.tli_hbp2;tli_struct.tli_hfp2;// 垂直时序tli_struct.tli_vsync10;tli_struct.tli_vbp2;tli_struct.tli_vfp2;// 时钟与DEtli_struct.tli_clock_polarityTLI_CLK_POLARITY_RISING;tli_struct.tli_de_polarityTLI_DE_POLARITY_HIGH;// 背景色黑色tli_struct.tli_background_red0x00;tli_struct.tli_background_green0x00;tli_struct.tli_background_blue0x00;// 开启输出tli_struct.tli_outputTLI_OUTPUT_ENABLE;// 初始化 TLItli_init(tli_struct);四、一句话总结tli_parameter_structTLI 控制器全局配置负责LCD 屏幕时序同步信号极性时钟/DE 信号背景颜色开关显示输出它是图层layer的父级配置必须先配置它才能配置图层。二、图层控制器结构体 讲解 tli_layer_parameter_structtli_layer_parameter_struct是 GD32 单片机如 F4xx、H7xx 系列中用于TLI (TFT-LCD Interface) 图层控制器的配置结构体。它定义了单个显示层的位置、大小、像素格式、显存、透明度、混合模式等所有关键参数。完整结构体成员详解typedefstruct{// 1. 层窗口位置与大小 (Layer Window Position)uint32_tlayer_window_leftpos;// 窗口左边界 X 坐标uint32_tlayer_window_rightpos;// 窗口右边界 X 坐标uint32_tlayer_window_toppos;// 窗口上边界 Y 坐标uint32_tlayer_window_bottompos;// 窗口下边界 Y 坐标// 2. 像素格式 (Pixel Pixel Format)uint32_tlayer_ppf;// Pixel Format (RGB565/ARGB8888 等)// 3. 全局 Alpha (指定 Alpha)uint32_tlayer_sa;// 4. 默认颜色 (Default Color)uint32_tlayer_default_alpha;// 默认 Alphauint32_tlayer_default_red;// 默认 Ruint32_tlayer_default_green;// 默认 Guint32_tlayer_default_blue;// 默认 B// 5. 混合因子 (Alpha Blending Factors)uint32_tlayer_acf1;// Alpha Blending Factor 1uint32_tlayer_acf2;// Alpha Blending Factor 2// 6. 帧缓冲区 (Frame Buffer)uint32_tlayer_frame_bufaddr;// 帧缓冲区首地址uint32_tlayer_frame_line_length;// 行长度 (字节)uint32_tlayer_frame_buf_stride_offset;// 行间距 (字节)uint32_tlayer_frame_total_line_number;// 总行数 (高度)}tli_layer_parameter_struct;1. 层窗口位置 (Layer Window)定义该层在屏幕上的显示区域。layer_window_leftpos/rightpos水平显示范围[leftpos, rightpos]宽度 rightpos - leftpos 1layer_window_toppos/bottompos垂直显示范围[toppos, bottompos]高度 bottompos - toppos 1注意坐标基于TLI 全局显示时序包含同步、前后廊而非单纯 LCD 分辨率。2. 像素格式layer_ppf指定显存中像素数据的存储格式。LAYER_PPF_RGB565(最常用)16位无AlphaLAYER_PPF_ARGB888832位带8位AlphaLAYER_PPF_RGB88824位LAYER_PPF_ARGB1555/LAYER_PPF_ARGB4444等3. 全局透明度layer_sa(Specified Alpha)范围0 ~ 255(0全透明, 255不透明)作用整个层的统一透明度仅当layer_acf混合因子配置为使用SA时生效4. 默认颜色layer_default_xxx当层被禁用、窗口外区域或像素格式不含Alpha时显示的默认颜色。5. 混合因子layer_acf1/layer_acf2(Alpha Control Factor)控制多层叠加时的混合公式最终像素 (当前层 × ACF1) (下层 × ACF2)常用配置LAYER_ACF1_PASA|LAYER_ACF2_PASA(默认)ACF1像素自带Alpha,ACF2(1-像素Alpha)正常透明叠加(图层带Alpha通道时用)LAYER_ACF1_SA|LAYER_ACF2_SAACF1全局SA,ACF2(1-全局SA)整层统一透明(不带Alpha的RGB565用)6. 帧缓冲区 (Frame Buffer)指向显存 (SDRAM)的指针与格式。layer_frame_bufaddr图像数据在内存中的起始地址layer_frame_line_length一行像素占总字节数(含填充)例RGB565, 480宽 →480 × 2 960 字节layer_frame_buf_stride_offset行间距两行首地址间的字节差layer_frame_total_line_number图像的总高度 (行数)典型初始化示例tli_layer_parameter_struct layer_cfg;// 初始化结构体为默认值tli_layer_struct_para_init(layer_cfg);// 1. 窗口 (在 480x272 屏上显示 400x200)layer_cfg.layer_window_leftpos40;layer_cfg.layer_window_rightpos40400-1;layer_cfg.layer_window_toppos36;layer_cfg.layer_window_bottompos36200-1;// 2. 格式与透明layer_cfg.layer_ppfLAYER_PPF_RGB565;layer_cfg.layer_sa255;// 不透明// 3. 混合模式layer_cfg.layer_acf1LAYER_ACF1_SA;layer_cfg.layer_acf2LAYER_ACF2_SA;// 4. 显存layer_cfg.layer_frame_bufaddr(uint32_t)0xC0000000;// SDRAM地址layer_cfg.layer_frame_line_length400*2;// RGB565layer_cfg.layer_frame_buf_stride_offset400*2;layer_cfg.layer_frame_total_line_number200;// 应用配置tli_layer_init(LAYER1,layer_cfg);tli_layer_enable(LAYER1);总结tli_layer_parameter_struct 图层的身份证核心是位置、格式、显存、透明度四大块多图层叠加靠acf1/acf2控制混合规则

更多文章