|
TFT的接口如下图:
LCD-TFT(液晶显示器——薄膜晶体管)显示器控制器提供并行数字 RGB (红色、绿色、蓝色)以及水平同步、垂直同步、像素时钟和数据使能信号,这些信号直接输出到不同 LCD和 TFT面板的接口。 主要功能: 24 位 RGB并行像素输出;每像素 8 位 (RGB888)。 2个带有专用 FIFO的显示层(FIFO 深度 64x32位)。 查色表 (CLUT) ,每层高达 256 种颜色(256x24位)。 支持高达 XGA (1024x768) 的分辨率。 可针对不同显示面板编程时序。 可编程背景色。 可编程 HSync、VSync 和数据使能信号的极性。 每层有多达 8 个输入颜色格式可供选择。 1、ARGB8888 2、RGB888 3、RGB565 4、ARGB1555 5、ARGB4444 6、L8(8位 Luminance或 CLUT ) 7、AL44(4位 alpha + 4位 luminance ) 8、AL88(8位 alpha + 8位 luminance ) 每通道的低位采用伪随机抖动输出。红色、绿色、蓝色的抖动宽度为 2 位。 使用 alpha 值(每像素或常数)在两层之间灵活混合。 色键(透明颜色) 。 可编程窗口位置和大小 。 支持薄膜晶体管 (TFT) 彩色显示器 。 AHB 主接口支持 16个字的突发。 高达 4 个可编程中断事件。 时钟: AHB 时钟域 (HCLK) :用于将数据从存储器传输到 FIFO层APB2时钟域 (PCLK2):用于配置寄存器像素时钟域 (LCD_CLK) :用于生成 LCD-TFT接口信号。LCD_CLK输出应按照面板要求配置。LCD_CLK通过 PLLSAI进行配置(见 RCC部分)。 时钟配置程序: - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
/ q4 S! o! u2 B, U( {( |8 x - PeriphClkInitStruct.PLLSAI.PLLSAIN = 192; j- N2 p" B5 _( U( [5 V- o2 o) s
- PeriphClkInitStruct.PLLSAI.PLLSAIR = 5;* {$ @/ S* Z$ f
- PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4;# f4 A0 h% |& A, Y
- HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
复制代码引脚 LCD-TFT最多可以使用28个引脚。
液晶时序配置 - hltdc_F.Init.HorizontalSync = (RK043FN48H_HSYNC - 1);
: c4 ?" o2 K( o; _0 d% e - hltdc_F.Init.VerticalSync = (RK043FN48H_VSYNC - 1);1 w% k+ q! x8 S! G9 o1 |0 f
- hltdc_F.Init.AccumulatedHBP = (RK043FN48H_HSYNC + RK043FN48H_HBP - 1);6 Y ` L' R- C/ l$ |, x
- hltdc_F.Init.AccumulatedVBP = (RK043FN48H_VSYNC + RK043FN48H_VBP - 1);
3 G4 L q+ U- Y- M6 I- d2 ] - hltdc_F.Init.AccumulatedActiveH = (RK043FN48H_HEIGHT + RK043FN48H_VSYNC + RK043FN48H_VBP - 1);
) B( _' m# ~1 K- J3 R: m$ j - hltdc_F.Init.AccumulatedActiveW = (RK043FN48H_WIDTH + RK043FN48H_HSYNC + RK043FN48H_HBP - 1);
s; T' A4 [* c - hltdc_F.Init.TotalHeigh = (RK043FN48H_HEIGHT + RK043FN48H_VSYNC + RK043FN48H_VBP + RK043FN48H_VFP - 1);* N1 F9 }1 Z* F3 y; I+ O1 L
- hltdc_F.Init.TotalWidth = (RK043FN48H_WIDTH + RK043FN48H_HSYNC + RK043FN48H_HBP + RK043FN48H_HFP - 1);
复制代码背景色配置: - hltdc_F.Init.Backcolor.Blue = 0;8 H" g5 Y* I1 ~ {
- hltdc_F.Init.Backcolor.Green = 0;
5 \" t" Y# f! A2 H0 b - hltdc_F.Init.Backcolor.Red = 0;
复制代码这里使用的hltdc_F 变量是一个LTDC_HandleTypeDef类型的结构体。
1 q# r" n- [7 e9 n3 M4 M3 r窗口配置,这里只显示了一个图层。 配置开始、结束的像素位置坐标,也就是整个屏幕。 - pLayerCfg.WindowX0 = 0;1 d+ H) ^- \' n0 l; r& X+ p4 u5 B
- pLayerCfg.WindowX1 = 480;
% |! D$ p; C$ I - pLayerCfg.WindowY0 = 0;! x- G; _) v! f) f1 q
- pLayerCfg.WindowY1 = 272;
复制代码像素格式配置成为RGB565。 - pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
复制代码显示图像的起始地址: - pLayerCfg.FBStartAdress = (uint32_t)&RGB565_480x272;
复制代码Alpha配置为255. 最后通过HAL_LTDC_ConfigLayer函数初始化TFT与配置图层。 HAL_LTDC_ConfigLayer(&hltdc_F, &pLayerCfg, 1); 显示结果。
' h7 r! P, \+ m/ n
|