嵌入式开发(S5PV210)——LCD显示器

Posted 代二毛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式开发(S5PV210)——LCD显示器相关的知识,希望对你有一定的参考价值。

LCD介绍

1.LCD(Liquid Crystal Display)俗称液晶,这种材料的一大特点就是在电信号的驱动下液晶分子进行旋转,旋转会影响透光性,不同的透光性会透过不同的颜色的光,于是我们便看到显示屏上五颜六色的画面。
2.LCD是被动发光,LCD显示屏有一个背光板发出白光,液晶分子只是决定哪些波长的光透过去被人看到,但液晶本身并不会发光。这有点像月亮,本身不发光,被人们看到发光是反射太阳的光。
3.与之相对就有主动发光,比如CRT显示器和LED显示器。
4.应用领域:液晶显示器使用在电视机、手机、电脑等;户外大屏幕基本是使用LED,因为液晶是被动发光,背光强度有限,在户外光照这么强的境况下,根本看不清。

LCD显示的主要相关概念

像素(pixel)

像素是显示的最小单位,整个图像就是一个个像素组成的;

像素间距(pitch)

像素间距就是两个像素中心点之间的距离。一般的像素是方形的,所以横向pitch和纵向的pitch一样的,像素间距影响最佳观看距离,像素间距大的适合远距离观看,像素间距小的适合近距离观看。

分辨率(resolution)

分辨率是指屏幕在横向和纵向上像素的个数,比如1920x1080分辨率是指屏幕在横向上有1920个像素,在纵向上有1080个像素。注意和屏幕尺寸的区别,屏幕尺寸是指屏幕对角线的长度,比如7寸的屏幕,指的是屏幕的对角线长度是7寸。

清晰度

清晰度是主观概念,指人眼看到图像的清晰程度。一般来说,相同的屏幕尺寸分辨率越高图像越清晰;除此之外清晰度还和其他的因素有关。

像素深度(bits per pixel,简称bpp)

计算机中用二进制位来表示一个像素的数据,像素深度指的是一个像素在计算机中用多少个bit去描述,用来表示一个像素的bit位越多,则这个像素的颜色越丰富,但是图像所占的存储空间也越大。

显示内存

显示内存就是常说的显存,Soc在内存中挑选一段符合要求的内存,然后通过寄存器配置将LCD控制器和这一段内存连接起来构成映射,显存里存放将要在屏幕上显示的图像数据。

LCD的接口技术

接口分类

1.从电平角度来看其本质都是TTL电平,+5V表示逻辑1,0V表示逻辑0.这种就叫TTL电平,和CMOS电平相对比。SoC的LCD控制器硬件接口是TTL电平的,LCD这边硬件接口也是TTL电平的,理论上来说直接相连就可以通信,但是TTL电平有个缺点,不能长距离传输。所以日常我们连接主机和显示器都是通过VGA线或者HDMI线,其目的就是通过电平转换来进行长距离传输。转换方式:主机SoC(TTL) ->VGA-> LCD屏幕(TTL)。
2.根据通信协议分类:TTL、LVDS、EDP、MIPI、HDMI、VGA等,可以参考《LCD常用接口原理》

RGB接口详解

RGB接口时序图

RGB接口的重要时序

(1)VD[23:0]:24根数据线,用来传输图像信息。可见LCD是并行接口,速率才够快。
(2)HSYNC(水平同步信号) :控制行扫描的
(3)VSYNC(垂直同步信号):时序信号线,为了让LCD能够正常显示给的控制信号,控制一帧图像的显示
(4)VCLK(像素时钟):LCD工作时需要主板控制器给LCD模组一个工作时钟信号,就是VCLK。
(5)VDEN(数据有效标志):使能信号,和HSYNC、VSYNC结合使用。
(6)LEND(行结束标志,不是必须的):时序信号,非必须,譬如X210接口就没有。

为了向前兼容出现的六个时序参数

HSPW 水平同步信号脉宽
HBPD 水平同步信号前肩
HFPD 水平同步信号后肩
VSPW 垂直同步信号脉宽
VBPD 垂直同步信号前肩
VFPD 垂直同步信号后肩
补充:这6个参数对于LCD显示器其实本来是没用的,这些信号其实是老式的CRT显示器才需要的,LCD本身不需要,但是出于历史兼容性要求,LCD选择了兼容CRT显示器。CRT显示器是靠电子偏转轰击荧幕来发光的,扫描完一行后切换到下一行的行首开始扫描需要时间,所以每扫描一行的前后都需要等待一段时间,也就是HBPD和HFPD;扫描完一帧切换到下一帧的扫描也需要等待,每扫描一帧的前后都需要等待一段时间,也就是VBPD和VFPD。

时序分析

时序图的整体分析

整个时序图分为上下两大部分,上半部分是一帧图像的显示过程,下半部分是一行图像的扫描过程,下半部分时序是对上半部分时序局部的详细介绍。

行扫描

(1)HSYNC(行同步信号)先给一个高脉冲,脉冲宽度是HSPW+1,表示接下来要扫描一行图像;
(2)经过脉冲宽度为HBPD+1的等待,VDEN由低变高,VDEN是数据传输的使能信号;
(3)VDEN变为高电平期间是传输真正的一行图像数据,VD就是代表的24根数据线;
(4)图像数据传输完毕,要经过HFPD+1的等待,一行图像的扫描才算结束。

一帧图像的显示

(1)VSYNC(帧同步信号)给一个宽度为VSPW+1的高脉冲,表示即将要刷新一帧图像;
(2)经过经过脉冲宽度为VBPD+1的等待,开始一行的扫描;
(3)每行都扫描结束后,经过VFPD+1的等待,一帧图像的扫描结束;

LCD的驱动器&控制器

驱动器:严格意义上LCD是指的液晶显示面板,液晶面板要工作就需要不同的电压,而驱动器就是向液晶分子提供不同的模拟电信号,从而让液晶面板有不同的透光性。LCD的驱动器一般都是和液晶面板集成在一起的,嵌入式开发基本不会直接用裸的液晶面板。
控制器:LCD控制器一般集成在SoC内部,他负责通过数字接口向远端的LCD驱动器提供控制像素显示的数字信号。LCD控制器的关键在于时序,它必须按照一定的时序和LCD驱动器通信;LCD控制器受SoC控制,SoC会从内存中拿像素数据给LCD控制器并最终传给LCD驱动器。

LCD如何显示图像

显示图像的两个阶段

第一阶段:初始化LCD控制器,建立屏幕和显存的映射。初始化LCD控制器包括时钟配置、显存配置、GPIO引脚配置、时序配置等。
第二阶段:屏幕和显存的映射建立好后,只需要将要显示的图像数据拷贝到显存,LCD控制器会自动刷新到屏幕上显示。

虚拟屏幕叠加

虚拟屏幕介绍:虚拟屏幕不是真实存在的屏幕,是用内存来模拟一块屏幕。上面的显示阶段已经介绍过,LCD控制器不断将显存的图像数据刷新到屏幕显示,一般来说一块屏幕对应一块显存即可,但是我们也可以在内存中多开辟几块显存,将几块显存的图像数据按照一定配置进行叠加,将最终叠加的数据再屏幕上显示。
虚拟屏幕应用:上图展示的就是两块虚拟屏幕叠加到一起,其中需要注意两个虚拟屏幕的覆盖关系,到底谁在前谁在后;还有图像的色度、透明度等设置,这些在Soc的相关寄存器都有说明。常见的虚拟屏幕叠加应用就是电视节目里的台标、字幕等。
虚拟屏幕的好处第一:不会污染原图像数据。因为显示的是叠加的图像数据,并不是在原图像数据上修改,所以原图像数据是没有被污染的。同一个视频,可以在播放的时候叠加不同的图标或者字幕,播放完后原视频仍然没有被修改。**第二:可以减少屏幕刷新,提高显示效率,减少CPU工作量。**比如你要在视频上叠加一个图标,因为图标是固定每帧都有的,所以你只需要在其中一块虚拟屏幕对应的显存上放上图标的图像数据;虽然之后屏幕上显示的每一帧图像都会有图标,但是不用再去刷新显存。

虚拟显示

**日常生活中的应用:**当用手机游览某些网站或者图片时,可能出现手机屏幕不能一次性显示全部图像,需要我们滑动手机屏幕来看到图像不同的位置,这就是虚拟显示的应用。
**虚拟显示的作用:**小分辨率的屏幕显示大分辨率的图像时,减少CPU对显存的刷新,提升效率。

虚拟显示的原理:

1.显存存放的是将要显示的图像数据,当屏幕分辨率固定,那么屏幕显示所需的一帧图像的大小也就固定,存放一帧图像数据需要的显存大小也固定。现在有两种方案去申请显存,第一种是显存刚好等于屏幕所需一帧图像的大小,第二种是显存大于屏幕所需一帧图像的大小。(上图中是第二种)
2.假设现在屏幕分辨率是800480,要显示分辨率是19201080的图片,来看看两种显存方案的差异:
第一种:因为显存刚好只够放一帧图像的数据,也就是800*480,所以要看到1080p分辨率图像的不同局部,需要将1080p图像的不同部分的图像数据刷新到显存中,需要频繁的刷新显存。
第二种:显存足够大可以将1080p的图像数据一次性加载到显存中,结合上面的图进行分析,大框代表实际申请的显存,小框代表的是真实屏幕大小对应的显存,屏幕上只能显示小框里的图像数据。当我们滑动屏幕查看图像不同的区域时,我们不用重新刷新显存,只需要配置LCD控制器显存的起始地址,就可以将不同区域的数据刷新到屏幕中显示。
总结:虚拟显示的思路是用空间换取时间,消耗更多的内存空间来减少内存的刷新次数,降低操作的响应时间,提升用户的使用体验。

以上是关于嵌入式开发(S5PV210)——LCD显示器的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux裸机开发——S5PV210时钟系统

嵌入式开发综述

嵌入式Linux裸机开发——S5PV210中断处理流程

嵌入式开发(S5PV210)——u-boot的顶层Makefile分析

嵌入式开发(S5PV210)——u-boot中如何确定启动方式

嵌入式开发(S5PV210)——u-boot的顶层mkconfig文件分析