LCD设备模块主要由控制器和驱动器组成。在嵌入式设备中,控制器一般集成在soC上,驱动器集成在LCD屏中。
依据驱动方式的不同可以将液晶显示器分为三类:静态驱动、单纯矩阵驱动以及主动矩阵驱动。其中主动矩阵型又可以分为薄膜式晶体管型(Thin Film Transistor;TFT)及二端子二极管型(Metal/Insulator/Metal;MIN)两种方式,TFT已成为其主流。
对于LCD控制器,其作用可以概括为通过配置提供的可编程寄存器产生必要的控制信号和传输数据信号将能显示在LCD上的数据从系统内部的数据缓冲区传送到外部的LCD驱动器中,最终在屏上显示。
通常LCD控制器和驱动器都可以支持多种连接方式,产生不同的信号来控制数据的传输。
1 MCU模式:目前最常用的连接模式,一般是8080系统和6800系统,现在6800系统已经不常用了,两者的差异表现在信号时序上。数据位传输有8位、16位和18位。信号有CS、RS(register select)、RW、WR以及数据信号。这种方式控制起来简单方便,无需时钟和同步信号。但是速度慢。
2 VSYNC模式:该模式在MCU模式下增加了一根VSYNC(帧同步)信号线,速度较MCU模式快,主要应用于运动画面的显示。
3 RGB模式:该模式一般为大屏所采用,数据位传输有8、16、18、24位。信号一般有VSYNC(帧同步)、HSYNC(行同步)、DOTCLK(像素时钟)、ENABLE(使能信号)以及数据信号。速度快,但需提供时钟和同步信号。
4 SPI模式:信号有CS/,SLK,SDI,SDO四根线,相对简单,但是软件控制比较复杂。一般很少用。
除了上述接口模式外,不同的控制器也会支持一些特有的接口模式。另外,不同的控制器其提供的接口的名称可能不一样。下面以i.MX233为例,讲述LCD驱动原理。
(i.MX233 controller)
i.MX233 LCD控制器提供了四种接口模式:System Interface(MCU)、VSYNC Interface、DOTCLK Interface(RGB)、ITU-R BT.656 Digital Video Interface(DVI)。
对应上图,控制器提供了两种数据传输的方式。
一种方式是通过APB总线,CPU直接将数据或者命令传送到HW_LCDIF_DATA寄存器然后暂存在缓冲区中,{zh1}通过数据信号线传送到LCD驱动器中。这种方式需要将数据按字、半字、或字节大小先传送到数据寄存器中,速度慢。在LCD提供的四种接口模式中,只有System Interface采用的是这种方式。
另一种方式是通过AXI总线,首先将要传送的数据存储在外部存储器(EMI)中,然后通过特定的寄存器保存数据在EMI中的首地址一次将数据传送到控制器的FIFO中。
要将LCD设备驱动起来,最终在液晶屏上能够显示图像,我们要做的工作就是确定LCD控制器和驱动器之间的连接方式,然后根据这种连接方式,配置对应的可编程寄存器,让用于图像显示的数据发送到LCD驱动器中。以i.MX233为例:
LCD模组为tm240320,采用的驱动器为ILI9325,支持MCU、SPI、RGB、VSYNC模式,下图为控制器与LCD模组之间的信号连接图:
除了16位数据信号外,提供了WR,RS,CS、RW、RESET信号,可以确定采用的是MCU模式,因此接下来按此模式要求配置相关的寄存器即可完成LCD设备的驱动了。对于具体配置的细节这里不赘述,有兴趣的可以看看芯片手册就可以了。