手写GD32F450/F470 TLI

您所在的位置:网站首页 GD32F470啥时量产 手写GD32F450/F470 TLI

手写GD32F450/F470 TLI

2023-12-26 16:12| 来源: 网络整理| 查看: 265

TLI-LCD接口开发(使用GD32F450/F470芯片开发) 简介

TLI(TFT-LCD接口)连接同步的LCD接口,并且为无源LCD显示屏提供像素数据,时钟以及时序 信号。它支持不同的完全可编程的时序参数显示。一个内嵌的DMA不断的从系统存储器搬移数 据到TLI然后输出到外部的LCD显示。TLI支持两个独立的显示层,并支持层窗口和层混叠功能。

主要特点  每像素最多24位并行数据输出;  支持高达2048*2048的分辨率;  完全可编程的时序参数;  内嵌DMA处理像素数据拷贝;  带有窗口和混合功能的两个独立的层;  支持多种像素格式:ARGB8888,RGB888,RGB565等;  支持CLUT(颜色查找表)和色键格式;  像素低位的抖动操作。

结构框图 在这里插入图片描述

在TLI模块有3个时钟域。寄存器工作在APB 时钟域,通过APB总线访问。像素DMA模块工作在AHB时钟域,从系统存储器获取像素数据需 要使用AHB总线。剩下的模块工作在TLI时钟域。TLI时钟由PLLSAI-R 分频而得到。PLLSAI参 数和分频因子在RCU模块配置。

时钟配置如下图: 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 使用到的寄存器如下: 在这里插入图片描述

在这里插入图片描述

简单介绍就到这里,需要详细了解请阅读官方文档。接下来,展示代码。

TIL驱动代码 GD32的TIL有两个图层,这里只使用图层0,使用两个图层需要很大的显存。最好外扩RAM作为TLI的显存。TLI.h /* * TLI.h * dasen, 2023/5/30 */ #ifndef _DS_TLI_H #define _DS_TLI_H #include "gd32f4xx.h" #define HORIZONTAL_SYNCHRONOUS_PULSE 10 #define HORIZONTAL_BACK_PORCH 150 #define ACTIVE_WIDTH 480 #define HORIZONTAL_FRONT_PORCH 40 #define VERTICAL_SYNCHRONOUS_PULSE 10 #define VERTICAL_BACK_PORCH 140 #define ACTIVE_HEIGHT 800 #define VERTICAL_FRONT_PORCH 15 extern uint16_t *ltdc_framebuf[2]; //extern __IO uint16_t ltdc_lcd_framebuf0[800][480]; //extern __IO uint16_t ltdc_lcd_framebuf1[800][480]; extern __IO uint16_t ltdc_lcd_framebuf0[800*480]; void _TLI_gpio_init(void); void _TLI_init(void); #endif TLI.c /* * TLI.c * dasen, 2023/5/30 */ #include "TLI.h" #include "sdram.h" uint16_t *ltdc_framebuf[2]; __IO uint16_t ltdc_lcd_framebuf0[800*480] __attribute__((at(SDRAM_DEVICE0_ADDR)));//图层0显存 //__IO uint16_t ltdc_lcd_framebuf1[800][480] __attribute__((at(SDRAM_DEVICE0_ADDR + 800 * 480 * 2))); //图层1显存 ---> 图层1不使用 //TIL GPIO口配置函数 void _TLI_gpio_init(void) { /* enable the periphral clock */ rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_GPIOC); rcu_periph_clock_enable(RCU_GPIOD); rcu_periph_clock_enable(RCU_GPIOF); rcu_periph_clock_enable(RCU_GPIOG); /* TLI pins AF configure */ gpio_af_set(GPIOA, GPIO_AF_14, GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_8 | GPIO_PIN_11 | GPIO_PIN_12); gpio_af_set(GPIOB, GPIO_AF_9, GPIO_PIN_0); // PB0 gpio_af_set(GPIOB, GPIO_AF_14, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11); gpio_af_set(GPIOC, GPIO_AF_14, GPIO_PIN_6 | GPIO_PIN_7); gpio_af_set(GPIOD, GPIO_AF_14, GPIO_PIN_3); gpio_af_set(GPIOF, GPIO_AF_14, GPIO_PIN_10); gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_11); gpio_af_set(GPIOG, GPIO_AF_9, GPIO_PIN_10 | GPIO_PIN_12); /* configure TLI GPIO */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_8 | GPIO_PIN_11 | GPIO_PIN_12); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_8 | GPIO_PIN_11 | GPIO_PIN_12); gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11); gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_0 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11); gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6 | GPIO_PIN_7); gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_6 | GPIO_PIN_7); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_3); gpio_mode_set(GPIOF, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10); gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_10); gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12); gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12); } void _TLI_init(void) { uint32_t temp; //rcu_periph_clock_enable(RCU_TLI); RCU_APB2EN |=(1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3