韦东山嵌入式Linux学习----016 LCD(1)-硬件原理与LCD控制器介绍

LCD硬件原理与LCD控制器介绍

/*
 *硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
 *软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统,
 *参考资料:开发版原理图,S3C2440A datasheet,AT043TN24 datasheet
*/


一、基础知识

1、像素

  像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。

2、像素深度

  像素深度(BPP—Bit Pixel Depth)是指存储每个像素所用的位数,也用它来度量图像的分辨率。
  每个像素用R,G,B三个分量表示,若每个分量用8位,那么一个像素共用24位表示,就说像素的深度为24。像素的位数越多,它能表达的颜色数目就越多,而它的深度就越深。

二、TFT LCD 硬件原理

  在开发板中,采用的是一块4.3英寸的TFT LCD,对于其显示原理,这里就不进行简单的描述的介绍,具体的详细介绍可以点击这里查看。

1、画面形成分析

1.1 原理

  利用了人们眼睛的视觉残留特性和荧光粉的余辉作用,通过一支电子枪,以特定的扫描方式、足够快的速度向所有排列整齐的像素进行激发,最终形成一幅画面。

1.2 扫描方式

  如直线式扫描,圆形扫描,螺旋扫描等等,而直线扫描则是我们使用到的TFT LCD的扫描方法。具体分为逐行扫描与隔行扫描

1.2.1 逐行扫描

  下面我将简单画一幅图简述其原理。

在这里插入图片描述

  如上图看到的,电子枪不断的走Z字形路线,从开始位置一行接一行的把像素 “打” 到显示屏上,最终到达最后位置,形成的画面叫做。当到达最后位置时,电子枪重新回到下一帧的的开始位置,继续按照需求执行上述步骤。

扫描二维码关注公众号,回复: 10715498 查看本文章

行扫描:如逐行扫描中,形成一行的扫描方式。
场扫描:如逐行扫描中,形成一幅画面的扫描。

1.2.2 隔行扫描

  一张图像的扫描不是在一个场周期中完成的,而是由两个场周期完成的。在前一个场周期扫描所有奇数行,称为奇数场扫描,在后一个场周期扫描所有偶数行,称为偶数场扫描。

1.3 如何执行上述扫描方式

  以逐行扫描为例,走Z字形路线,LCD的电子枪需要知道以下信息:

  ①、何时移动—————通过时钟信号(CLK)确定,每一个CLK移动一个像素
  ②、何时去下一行———接到NSYNC脉冲移动到下一行
  ③、何时回到起始位——接收到VSYNC脉冲回到起始位置
  ④、”打” 出什么颜色——由RGB确定

  上述的信息都可以通过设置S3c2440的LCD控制器实现,如Nand Flash控制器相同,我们只需要设置好LCD控制器中相关寄存器的值LCD控制器就会控制TFT LCD进行一系列的硬件操作,最终达到我们所需的显示效果。

2、具体工作原理

2.1 硬件原理图分析

在这里插入图片描述

分析:
  ①、RGB三组信号线使用到的位数R[0:5] G[0:4] B[0:4],采用的是565格式,即16bpp,一个像素用16位数据表示。
  ②、VLINE数据线——HSYNC信号:使LCD的电子枪在行的末尾去到下一行开始的位置激发像素。
  ③、VFRAME数据线——VSYNC信号:使LCD的电子枪回到起始位置重新激发像素。

2.2 时序图分析

这个时序图比较复杂,所以会用较多的文字介绍。

在这里插入图片描述

  对于这种时序图,我们需要由最小的时间周期往最大的时间周期看,在这个时序图里,①时间周期是②时间周期中HSYNC信号的一个时间片段,②时间周期是③时间周期中VSYNC信号的一个时间片段。类似下图的结构


①时间周期
  一次行扫描,具体描述:电子枪开始从一行第一个像素每一个CLK脉冲,往后移动一次,直到到达一行最后一个像素HSYNC信号拉低,进行换行(此时移动的次数或者像素个数就为X)。
②时间周期
  一次场扫描,具体描述:电子枪开始从第一行第一个像素每一个CLK脉冲,往后移动一次,进行多次换行(拉低HSYNC信号的次数为Y),到达最后一个像素时,VSYNC信号拉低,回到起始位置再次场扫描。
③时间周期
  多次场扫描
上述的 X × Y = 分辨率

2.3 画面大小

在这里插入图片描述

通过这个图可以知道实际的显示区域大小,与黑框的大小有关,而黑框的大小与HBP、HFP、VBP、VFP、VSYNC、HSYNC有关,这些值都需要通过LCD控制器来进行设置,达到预期的显示效果。

三、LCD控制器

通过查询S3c2440芯片手册,知道其系统框图

在这里插入图片描述

1、简介

  LCD控制器在嵌入式系统中的功能如同显卡在计算机中所起到的作用。LCD控制器负责把显存(可能是内存中的指定域)中的LCD图形数据传输到LCD驱动器(LCD driver)上,并产生必须的LCD控制信号,从而控制和完成图形的显示,翻转,叠加,缩放等一系列复杂的图形显示功能

2、寄存器介绍

LCD 控制器由 REGBANK、 LCDCDMA、 TIMEGEN 、 VIDPRCS 寄存器组成。

1.1 REGBANK

拥有17套可编程寄存器和256x16调色板内存,用于配置LCD控制器

1.2 LCDCDMA

一种专用的DMA,它可以将帧内的视频自动数据传输到LCD驱动程序中。通过使用这种特殊的DMA,视频数据可以在屏幕上显示,而不需要CPU的干预

1.3 VIDPRCS

接收来自LCDCDMA的视频数据,将其转换成合适的数据格式(例如4/8位单扫描或4位双扫描显示模式)后,通过VD[23:0]数据端口将视频数据发送到LCD驱动程序

1.4 TIMEGEN

由可编程逻辑组成,以支持可变的需求接口定时和速率通常发现在不同的LCD驱动器。TIMEGEN块生成VFRAME、VLINE、VCLK、VM等。

2、工作过程

①、LCD控制器,通过系统总线,把数据加载到对应的寄存器——REGBANK和LCDCDMA。
②、REGBANK寄存器把数据分别传
②、LCDCDMA寄存器通过DMA控制,将加载进来的RGB数据传输到VIDPRCS寄存器中,
随后VIDPRCS寄存器根据REGBANK寄存器中的

发布了40 篇原创文章 · 获赞 29 · 访问量 3613

猜你喜欢

转载自blog.csdn.net/weixin_42813232/article/details/105222197
今日推荐