|
路线栈欢迎您!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 一路上 于 2024-12-17 15:51 编辑
一、计算机的成像原理
CPU计算完成后,将结果交给GPU渲染,GPU会把渲染的结果放到帧缓存中,视频控制器从帧缓存中读取,通过RGB显示接口把图像和视频信号传输到屏幕上,如下图所示。
主流的显示器有LCD《详解LCD显示原理和结构》和OLED《详解OLED显示原理和结构》,常见的接口标准包括VGA、TTL RGB、LVDS和MIPI DSI等,可以采用并行或串行方式进行数据传输。RGB并行显示接口是将图像的红、绿、蓝三种基本颜色分量分别传输,构成完整的图像信号。
二、显示器的成像方式
电子枪扫描:显示器的电子枪按照上面方式,从上到下一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描。为了把显示器的显示过程和系统的视频控制器进行同步,显示器(或者其他硬件)会用硬件时钟产生一系列的定时信号。
当电子枪换到新的一行,准备进行扫描时,显示器会发出一个HSync水平同步信号(horizonal synchronization) ;而当一帧画面绘制完成后,电子枪回复到原位,准备画下一帧前,显示器会发出一个VSync垂直同步信号(vertical synchronization)。
接收到VSync垂直同步信号后,应用程序就会在CPU中计算显示内容,例如视图的创建、布局计算、图片解码、文本绘制等等,然后将结果提交给GPU渲染,由GPU进行变换、合成、渲染,然后将渲染结果提交到帧缓冲区中,等待下一次VSync垂直同步信号到来之时,显示到屏幕上。
三、RGB接口描述
TFT-LCD显示屏电路框图如下图,具有两路偏压电源输出OUTP/OUTN,为LCD模组中显示驱动芯片DDIC提供正负偏置电压,驱动芯片通过内置电压转换模块将供电电压转换成正负高压输出至行列驱动模块Source Driver和Gate Driver,从而调整液晶分子的偏转角度,利用偏光片实现每个像素点明暗变化实现不同图像显示。
RGB接口是红(R)、绿(G)、蓝(B)分三原色输入的图像显示接口;按传输方式可分为串行(serial)RGB接口和并行(parallel)RGB接口,一般为TTL( 3.3V)电平,需要同步信号,传输距离较短,抗干扰性不强。
并行(parallel)RGB接口信号如下表所示:
四、RGB颜色模型和数据格式
RGB颜色模型基于三个基本颜色:红色(Red)、绿色(Green)和蓝色(Blue),图像的每个像素通过这三种颜色的不同强度组合而成:
R(红色通道):表示图像中红色部分的强度。
G(绿色通道):表示图像中绿色部分的强度。
B(蓝色通道):表示图像中蓝色部分的强度。
每个颜色通道的强度通常使用位深度(例如8位、10位、12位等)来表示,表示每个颜色分量的亮度值。例如,8位深度表示每个颜色通道的亮度值范围从0到255,24位色深表示每个像素用24个二进制位表示(8位红色 + 8位绿色 + 8位蓝色)。
前面的LCD硬件接口图里用到了24条数据线:R0-R7、G0-G7、B0-B7,每个像素的颜色占据3*8=24位。硬件上LCD的数据引脚连接是固定的,但是我们使用的时候,在软件上可以支持不同的像素格式 RGB888,RGB565,RGB555等。
虽然硬件上用了24条数据线,但是软件上也可以提供24位数据,也可以只提供16位数据。当只提供16位数据时,硬件上24位数据线中会有8条数据线上没有数据。比如RGB565格式,R0R1R2、G0G1、B0B1B2这8条数据线上是不传输数据的,恒为0。
五、RGB接口TFT-LCD时序
RGB接口TFT-LCD显示屏的图像显示的同步模式有HV同步模式和DE同步模式两种;两者实现的时序一致,只是同步时使用的信号不一样。
时序是控制LCD显示填充像素的过程,也就是一行一行的填充直到整个LCD屏幕像素填充完毕,显示过程和时序的关系如下图。
1. HV同步模式下的时序
在HV模式下,需要用到HS与VS来控制刷新。比如对于分辨率为1024x600RGB的LCD,LCD控制器发出HS信号后,就会发出1024个DCLK,在每个DCLK上传输像素数据;当发出600个HS信号后,就会发出一个VS信号。
1.1 行同步信号(水平同步信号)
RGB LCD 的行显示时序其中重要的几个参数:
HSYNC:行同步信号,当此信号有效的话就表示开始显示新的一行数据,查阅LCD 数据手册可以知道此信号是低电平有效还是高电平有效,假设此时是低电平有效。
HSPW:表示水平同步信号的宽度,用VCLK计算;HSYNC 信号不是一个脉冲,而是需要持续一段时间才是有效的,单位为 CLK。
HBP:表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数;术语叫做行同步信号后肩,单位是 CLK。
HOZVAL:显示一行数据所需的时间,假如屏幕分辨率为1024*600,那么HOZVAL 就是1024,单位为CLK。
HFP:表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数;术语叫做行同步信号前肩,单位是 CLK。
水平同步信号HSYNC(Horizontal Sync)用于表示液晶屏一行像素数据的传输结束,每传输完成液晶屏的一行像素数据时,HSYNC 会发生电平跳变,如分辨率为 1024x600 的显示屏(1024 列,600 行),传输一帧的图像 HSYNC 的电平会跳变 600 次。
当 HSYNC 信号发出以后,需要等待 HSPW+HBP 个 CLK 时间才会接收到真正有效的像素数据。当显示完一行数据以后需要等待 HFP 个 CLK 时间才能发出下一个 HSYNC 信号,所以显示一行所需要的时间就是:HSPW + HBP + HOZVAL + HFP。
1.2 场同步信号(垂直同步信号)
RGB LCD 的帧显示时序其中重要的几个参数:
VSYNC:帧同步信号,当此信号有效的话就表示开始显示新的一帧数据,查阅LCD 数据手册可以知道此信号是低电平有效还是高电平有效,假设此时是低电平有效。
VSPW:表示垂直同步脉冲的宽度,用行数计算;也就是VSYNC 信号持续时间,单位为 1 行的时间。
VBP:表示在一帧图像开始时,垂直同步信号以后的无效的行数;术语叫做帧同步信号后肩,单位为1 行的时间。
LINE:显示一帧有效数据所需的时间,假如屏幕分辨率为 1024*600,那么LINE 就是 600 行的时间。
VFP:表示在一帧图像结束后,垂直同步信号以前的无效的行数;术语叫做帧同步信号前肩,单位为1 行的时间。
垂直同步信号VSYNC(Vertical Sync)用于表示液晶屏一帧像素数据的传输结束,每传输完成一帧像素数据时,VSYNC 会发生电平跳变。其中“帧”是图像的单位,一幅图像称为一帧,在液晶屏中,一帧指一个完整屏液晶像素点。人们常常用“帧/秒”来表示液晶屏的刷新特性,即液晶屏每秒可以显示多少帧图像,如液晶屏以60 帧/秒的 速率运行时,VSYNC 每秒钟电平会跳变60 次
显示一帧所需要的时间就是:VSPW+VBP+LINE+VFP 个行时间,最终的计算公式:T = (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)
2. DE同步模式下的时序
在 DE 模式下,需要用到DE信号来控制刷新,比如对于分辨率为 1024x600RGB 的 LCD,LCD 控制器发出DE信号后,就要发出1024个 DCLK,在每个 DCLK 上传输像素数据;当发出 600 个 DE 信号,刷新完一帧数据后,又从第 1 行开始扫描。
编写 LCD 程序时,一般都会兼容两种模式,所以程序中会设置这3个信号:数据使能信号(DE),垂直同步信号(HS),水平同步信号(VS)。
六、TFT-LCD时序驱动参数
前面已经对RGB接口驱动时序进行了描述,在调试LCD的时候要获得的一些参数,打开裸屏数据手册都会提供有如下的参数:
不同的分辨率的TFT-LCD显示屏在时序上是相似的,只是存在一些参数上的差异。
七、像素时钟
像素时钟就是 RGB LCD的时钟信号,以 1024*600 这款屏幕为例。
显示一帧图像所需要的时钟数就是:
= (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)
= (3 + 20 + 600 + 12) * (20 + 140 + 1024 + 160)
= 635 * 1344
= 853440。
显示一帧图像需要 853440 个时钟数,那么显示 60 帧就是: 853440 * 60 = 51206400 即 51.2M 所以像素时钟就是 51.2MHz。
八、结语
RGB接口基于RGB并行信号传输与时钟同步,显示控制器通过像素时钟、同步信号和RGB数据传输实时驱动屏幕显示,逐行逐帧刷新图像。主要用于显示控制器与屏幕之间的高速数据传输,广泛应用于工业显示、车载显示、消费电子等领域。
注意事项:
- LCD 白屏的几种情况:初始化未成功、LCD RGB 时序问题问题。
- RGB 时序需要和屏的初始化参数一致,LCD 时序盲目照搬参考的时序不可取,因为不同平台 CLK 时钟频率一般无法做到一模一样。
- 时钟频率要设对,太快,LCD 反应不过来,显示不了,太慢也不合适,这个范围可以根据你的刷新率需求和 LCD 的规格书来确定。
- PCB 设计中 RGB 要控制信号走等长,走线间距遵循 3W 规则﹐避免相互干扰,以防屏幕闪屏和花屏现象的出现。
复制代码 |
|