网站营销方式,温州品牌网站建设,网站域名有哪些,官方网站建设投标书024- STM32学习笔记 - LTDC控制液晶屏
在学习如何控制液晶屏之前#xff0c;先了解一下显示屏的分类#xff0c;按照目前市场上存在的各种屏幕材质#xff0c;主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏#xff0c;在F429的开发板上#xff0c;…024- STM32学习笔记 - LTDC控制液晶屏
在学习如何控制液晶屏之前先了解一下显示屏的分类按照目前市场上存在的各种屏幕材质主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏在F429的开发板上配套的是LCD液晶显示屏分辨率800*480。
LCD液晶显示屏是通过给内部的液晶一种介于液态与固态之间但其分子排列和和固态晶体一样规则的有机化合物施加电场改变其分子排列从而改变光线传播方向配合前后两片偏振光片以及RGB滤光片可以控制其颜色再通过改变电压大小控制透光率从而改变颜色的深浅。每个RGB为一个像素点很多个RGB通过组合后可以组合出来很多种颜色。
LCD本身不发光因此在LCD屏幕的背后都会有一块背光板白光而且因为液晶的特性所以我们经常会看到因为存储液晶的容器一旦破裂会出现漏液或者漏光的情况。LCD在颜色变幻时因为液晶晶体转动需要消耗时间因此我们会感觉到LCD屏幕的响应时间会比较慢。
剩下关于LED和OLED在这里就不做介绍了有兴趣的可以去找一些相关资料看看。
一、显示器基本参数
这里关于显示器需要了解的点主要有以下几个
1、像素
像素是图像的最基本要素也是显示器的最小显示单位点。
2、分辨率
分辨率表示的是显示器上“行像素数 * 列像素数”例如1920*1080表示的是每行有1920个像素点每列有1080个像素点同样可以理解为一共有1920列1080行因此该显示器的总像素数就是1920 * 1080 2073600个像素点。
3、色彩深度
这个参数很多人应该都没注意到色彩深度指的是显示器的每个像素点能表示多少中颜色比如路边商铺上常用的LED单色显示屏来说单色屏的每个像素点只有亮或灭两种状态因此只需要一个数据位就可以表示其所有状态所以单色屏的色彩深度为1bit其余我们见到的彩色显示屏的深度一般为16bit、24bit。
4、显示器尺寸
显示器尺寸大小以寸英寸为单位表示如3.7寸、7寸、32寸等是屏幕对角线的长度对角线的长度结合屏幕的长宽比例如169就可以确定显示器的具体长度和宽度了。
5、点距
点距表示的是两个相邻像素点之间的间距在相同尺寸的屏幕下点距越小屏幕的分辨率越高相应的制造工艺越复杂成本也越高。
二、液晶控制原理
我们这里用到的显示屏是由液晶显示面板、电容触摸面板以及PCB底板组成。触摸面板带有触摸控制芯片与液晶面板引出的排线连接到PCB底板上通过液晶控制器芯片与STM32进行通讯部分STM32不自带液晶控制器因此显示器需自带我这里使用的F429集成了液晶控制器因此配套的显示器并没有液晶控制器。
在液晶面板上引出的控制信号线如下
信号名称说明R[7:0]红色像素控制信号G[7:0]绿色像素控制信号B[7:0]蓝色像素控制信号CLK像素同步时钟信号HSYNC水平同步信号VSYNC垂直同步信号DE数据使能信号
1、RGB信号线
RGB信号线每个通道各有8根分别表示每个像素点的红、绿、蓝颜色的分量因此每个像素点的每个通道色彩分量可以表示为0-255种比如RGB565表示红绿蓝三个通道数据线分别是5、6、5根数据位一共16因此可表示为216种颜色色彩深度为16bit而我用到的液晶屏三种颜色通道数据线各有8根因此可显示颜色为224种色彩深度为24bit。
2、同步时钟信号CLK
液晶屏与外部适用同步通讯方式以CLK信号作为同步时钟每个时钟传输一个像素点的数据。
3、水平同步信号HSYNC
水平同步信号表示液晶屏一行像素数据的传输结束每次传输完成液晶屏一行像素数据时HSYNC都会发生一次电平跳变比如分辨率为800x480分辨率的显示屏传输一帧不想时HSYNC的电平会跳变480次这里注意跳变次数与行数是对应的。
4、垂直同步信号VSYNC
垂直同步信号是指每一帧像素数据传输结束后VSYNC会发生一次跳变也就是说当液晶屏上显示一次完整的图像时VSYNC会发生跳变玩哪些3A大作游戏的伙伴们一般在挑选显示器时会关注刷新率的参数这个刷新率例如60Hz、144Hz等表示的就是每秒刷新多少次即触发多少次VSYNC跳变。
5、数据使能信号DE
数据使能信号表示数据的有效性当DE信号线为高电平时RGV信号线表示的数据有效。
三、液晶数据传输时序
向液晶屏传输数据时我们可以将液晶屏上面的像素点按照行去展开例如800*480分辨率的显示屏。展开后第1个像素点为第1行第1列的像素点第481个像素点为第2行第1列的像素点由此往下类推这时候我们想象出来一个指针这个指针指向下一个要显示的像素点这个指针的扫描方向在显示屏上应该是由左到右、从上向下的一个点一个点的移动当指向像素点时通过DE使能信号的使能下将RGB信号线的数据发送到指向的像素点再在CLK时钟的驱动下移向下一个像素点每传输一行像素数据时水平同步信号HSYNC触发一次当所有像素点全部传输完成后垂直同步信号HSYNC再触发一次之后指针再次移回到最开始的位置即第一行第一列。
这里我们是将显示屏上的像素点拉成一条线去说明的但是实际上显示指针在行与行、帧与帧之间切换存在一定的延迟并且水平同步和垂直同步信号本身有一定的宽度这些时间参数如下表
时间参数参数说明水平后沿VBPvertical back porch表示一帧图像开始时垂直同步信号以后的无效行数水平前沿VFPvertical front porch表示一帧图像结束后垂直同步信号以前的无效行数垂直后沿HBPhorizontal back porch表示从水平同步信号开始到有效数据开始前的CLK的个数垂直前延HFPhorizontal front porch表示一行有效数据就鳄属到下一个水平同步信号开始之间的CLK的个数垂直信号宽度VSWvertical sync width表示垂直同步信号的宽度单位为行水平信号宽度HSWhorizontal sync width表示水平同步信号的宽度单位为同步时钟CLK的个数
看这个表我估计多数人会比较懵用一张图来分析一下各个时间参数表示的含义 因为生产制造工艺的问题显示屏整个显示区域中并不是所有像素点都是可用的如上图中实际上关于上表中的各项时间参数可以认为是为了对非有效显示区域的限制在这里使能控制信号只有像素指针到了有效显示区域内才会变为高电平其余位置均低电平。
四、显存
这里说的显存是指屏幕中所有像素点的颜色数据缓存起来再传给显示屏这种存储显示数据的存储器被称为显存显存的容量至少要能存储显示器的一帧显示数据分辨率为800*400的液晶屏如果使用RGB888格式显示则其一帧数据大小为888x 800 x 480 9216000bit / 8 1152000Byte如果适用RGB565格式显示则一帧图像数据大小为565x 800 x 480 6144000bit / 8 768000Byte。
五、LTDC液晶控制器
上面提到F429本身自带液晶控制器可以适用SDRAM的部分空间作为显存不需要液晶屏再增加液晶控制器芯片了。ST,32的LTDC液晶控制器最高支持800 x 600分辨率的像素支持多种颜色格式包括RGB888、RGB565、ARGB8888和ARGB1555(A表示透明像素)支持2层显示数据混合可以利用这个特性制作出背景和前景分离的效果比如背景播放视频前景显示字幕。
如果需要适用数据混合功能前景曾必须适用包含透明的像素格式如ARGB8888或者ARGB1555里面的字母和数字是对应的比如ARGB1555表示的是透明像素层A只用1位表示像素透明或者不透明后面的几位则是表示RGB通道的颜色深度而ARGB8888里面透明像素则可以表示透明深度。
关于液晶屏这里需要注意的是液晶屏本、身是没有透明度的参数的比如24位液晶屏RGB888只有RGB颜色各对应的8根数据线不存在表示透明度的数据线所以实际上ARGB也只是针对于内部分层数据处理的格式通过液晶控制器混合计算出直接颜色数据通过RGB三根数据线发送给液晶屏显示这里就跟我们使用PS软件绘图时通过图层混合后最终输出的jpg的图片一样。
关于LTDC这里通过下面几个部分来进行学习
LTDC结构
LTDC主要包含信号线、图像处理单元、寄存器以及时钟信号其结构如下图 1、LTDC信号线
LTDC信号线与液晶屏的数据线时一一对应的包含RGB数据线、水平垂直同步信号线、时钟信号线以及使能信号线下表是查询《STM32F4XX规格书》整理出来的对应引脚号。
引脚号LTDC 信号引脚号LTDC 信号引脚号LTDC 信号引脚号LTDC 信号PA3LCD_B5PE11LCD_G3PH14LCD_G3PJ4LCD_R5PA4LCD_VSYNCPE12LCD_B4PH15LCD_G4PJ5LCD_R6PA6LCD_G2PE13LCD_DEPI0LCD_G5PJ6LCD_R7PA8LCD_R6PE14LCD_CLKPI1LCD_G6PJ7LCD_G0PA11LCD_R4PE15LCD_R7PI2LCD_G7PJ8LCD_G1PA12LCD_R5PF10LCD_DEPI4LCD_B4PJ9LCD_G2PB8LCD_B6PG6LCD_R7PI5LCD_B5PJ10LCD_G3PB9LCD_B7PG7LCD_CLKPI6LCD_B6PJ11LCD_G4PB10LCD_G4PG10LCD_B2PI7LCD_B7PJ12LCD_B0PB11LCDG5PG11LCD_B3PI9LCD_VSYNCPJ13LCD_B1PC6LCD_HSYNCPG12LCD_B1PI10LCD_HSYNCPJ14LCD_B2PC7LCD_G6PH2LCD_R0PI12LCD_HSYNCPJ15LCD_B3PC10LCD_R2PH3LCD_R1PI13LCD_VSYNCPK0LCD_G5PD3LCD_G7PH8LCD_R2PI14LCD_CLKPK1LCD_G6PD6LCD_B2PH9LCD_R3PI15LCD_R0PK2LCD_G7PD10LCD_B3PH10LCD_R4PJ0LCD_R1PK3LCD_B4PE4LCD_B0PH11LCD_R5PJ1LCD_R2PK4LCD_B5PE5LCD_G0PH12LCD_R6PJ2LCD_R3PK5LCD_B6PE6LCD_G1PH13LCD_G2PJ3LCD_R4PK6LCD_B7
2、图像处理单元
在上图中②表示的是图像处理单元通过AHB接口获取显存中的数据然后按照分层把数据发送到两个”层FIFO“缓存中将每个FIFO可以缓存64*32位的数据紧接着再由缓存中获取数据交给PFC像素格式转换器将数据从像素格式转换成字ARGB8888格式通过混合单元将两层数据合并再通过信号线将混合得到的单层数据发送到液晶屏上。
输出数据前数据还要经过一个抖动单元作用是当输出数据的色彩深度大于显示屏实际的色彩深度时对像素颜色进行舍入操作比如当向16位显示器上输入24位色彩深度的数据时抖动单元会把像素数据的低8位24-16数据与阈值比较若大于阈值则向第9位进1否则直接舍掉后面的8位。
3、配置和状态寄存器
图中标4的表示的是LTDC的控制逻辑包含了LTDC的各种配置和状态寄存器。需要配置的参数有通讯时信号线的有效电平、各种时间参数、有效数据宽度、像素格式及显存地址等等LTDC通过这些配置控制输出将AHB接口从显存位置搬运过来的数据输出到显示器同时可以通过用于指示当前显示状态和位置的状态寄存器去获取LTDC的工作状态。
4、时钟信号
LTDC使用到3中时钟信号AHB时钟、APB2时钟及像素时钟LCD_CLK其中AHB时钟用于驱动数据从存储器存储到FIFOAPB2时钟用于驱动LTDC的驱动器而LCD_CLK则是与显示器的通讯同步时钟时钟树如下图 这里可以看到LCD_CLK来源于HSE经过M分频因子输出到PLLSAI分频器有PLLSAI中的倍频因子N得到”LCD-TFT clock“这里的”LCD-TFT clock“就是通讯中的同步时钟LCD_CLK通过LCD_CLK引脚输出即PI14引脚。
六、DMA2D图形加速器
实际使用LTDC控制液晶屏显示的时候往配置好的显存地址中写入要显示的像素数据LTDC会将这些数据从显存经过一系列处理后在发送到液晶屏但是上面我们通过计算发现每帧显示的数据量非常大如果仅仅是单帧数据的话还好说如果是视频类的图像对于处理器来说工作量是相当大的之前学习过DMA外设STM32针对于这个需求专门定制了用于图像数据搬运的DMA2D外设可以快速绘制矩形、直线、分层数据混合、数据复制以及图像数据格式转换是图像专用的DMA外设。
DMA2D的结构框图与LTDC结构中的图像处理单元很类似主要为分层FIFO、PFC及彩色混合器。 1、FG FIFO与BG FIFO
FG FIFO与BG FIFO是两个64*32位大小的缓冲区分别用于缓冲前景层和背景层从AHB总线获取的像素数据。AHB总线的数据源一般是SDRAM也就是说再LTDC外设中配置的前景层和背景层的数据源地址一般指向SDRAM的存储空间使用SDRAM的部分空间作为显存。
2、FG PFC和BG PFC
FG PFC和BG PFC是两个像素格式转换器分别用于前景层和背景层的像素格式转换不管从FIFO的数据源格式如何通过其转换后都为ARGB8888格式32位。
图中的“α”表示Alpha透明度经过PFC处理后透明度会被扩展位8位格式。
图中的CLUT表示颜色查找表是一种间接的颜色表示方式使用一个256*32位的空间缓存256种颜色颜色格式是ARGB8888或RGB888实际图像只是用这256种颜色图像的每个像素点使用8位数据表示但是该数据不是直接的RGB颜色而是指向颜色查找表的地址便宜可以理解为像素点应该显示的颜色对应的是颜色查找表里面的颜色在图像大小不变的情况下利用颜色查找表i可以扩展颜色显示的能力特点就是可以用8位的数据表示一个24或者32位的颜色整个图像种的颜色种类受限于颜色查找表中的256种。DMA2D可以通过CPU自行加载或者编程手动加载。 3、混合器
FIFO中的数据通过PFC像素格式转换器后前景层和背景层的图像都输入到混合器种运算运算公式如下 混合器的运算主要使用前景和背景的透明度作为因子对像素的RGB颜色进行加权运算通过混合器将两层数据合为一层ARGB8888格式的图像。
4、OUT PFC
OUT OFC是输出像素格式转换器是将上面混合器种得到的图像转换成目标格式比如ARGB8888、RGB888、RGB565、ARGB1555或ARGB4444具体的格式根据需要再输出PFC控制今存其DMA2D_OPFCCR种选择。
F429使用通过LTDC、DMA2D以及存储器构成一个完整的液晶控制器LTDC不断刷新液晶屏DMA2D搬运图像数据、混合及格式转换RAM存储器作为显存显存可以使用STM32内部SRAM或者外扩SDRAM/SRAM。
OK关于液晶屏、LTDC以及DMA2D的内容就学习到这里下一节开始实测控制显示屏显示图像。 PFC控制今存其DMA2D_OPFCCR种选择。