S3C2440芯片的LCD控制器

1、LCD控制器的功能

(1)取数据:把framebuffer的地址告诉LCD控制器。另外需要把framebuffer中对应每个像素的数据格式告诉控制器,例如bpp(Bits Per Pixels),分辨率等

(2)发数据:把时序告诉LCD控制器,设置引脚的极性(是高电平有效还是低电平有效)


2、LCD控制器框图


(1)图中的LCDCDMA是从framebuffer取数据的模块,我们都知道DMA是不用在CPU的参与下就能直接操作内存的。

(2)我们通过设置REGBANK中寄存器,然后通过TIMEGEN就能产生各种时序了,例如我们上一篇文章提到的CLK、Hsync、Vsync等


3、TFT LCD控制器的操作

我们这款芯片支持两种类型的LCD,分别是TFT和STN,我们一般用TFT,所以这里也以TFT类型的LCD为例。

(1)

当使用16BPP的时候,通过设置BSWP和HWSWP的值,可以得到地址000H的高16位还是低16位表示第一个像素。



上面的16为数据通过哪个引脚传送数据,设置硬件的时候可以由下面的图看出来,5:6:5 = R:G:B



(2)24BPP的情况

我们可以看到高一字节的数据是没有用到的,也就是浪费掉的,所以叫Dummy Bit



(3)

另外还有一种8BPP的显示格式。这个格式会涉及到调色板的概念



(3)调色板的概念

      假如LCD的数据位为16位,那么framebuffer应该每个像素占据16bit,但是为了节省空间,我们用了8bit表示一个像素,这时候就需要引入调色板才能正确传输16位的数据给LCD的数据线。

      调色板其实就是一片内存,这里面每一格存放16bit的数据。当LCD控制器从framebuffer中去处8bit的数据后,不是直接传给LCD的数据线,而是用这个8bit作为索引,从调色板中取出16bit的数据,然后发给LCD。

       所以我们可以说8BPP格式时,framebuffer中存放的是伪彩色,16BPP或者24BPP格式时,framebuffer中存放的才是真彩色。如果以后用了8BPP格式,首先要设置调色板。



猜你喜欢

转载自blog.csdn.net/lee_jimmy/article/details/80155479