1、接口数据线
MCU屏:/RES、/CS、RS、/WR、/RD、db0~db17(18bit ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。
RGB屏幕:/E、VSYNC、HSYNC、CLK、r0至r5、G0至G5、B0至b5 (18位) )。
2、LCD的CPU接口和RGB接口(CPU接口也有写成MPU接口的)
目前,一般的彩色LCD的连接方式有MCU模式、RGB模式、SPI模式、VSYNC模式、MDDI模式等。
MCU模式:是目前最常用的连接模式,MCU接口主要可以分为8080模式和6800模式,这主要是定时差异。 数据位传输包括8位、9位、16位和18位。 连接被分为CS/、RS (寄存器选择)、RD/、WR/、数据线。
优点是控制简单,不需要时钟和同步信号。
缺点是因为要消耗GRAM,所以很难调成大屏幕(QVGA以上)。
RGB模式:大屏幕采用多种模式,数据位传输也有6位、16位和18位之分。 连接通常是VSYNC、HSYNC、DOTCLK、VLD、ENABLE和数据线。
其优缺点正好与MCU模式相反。
SPI模式: CS/、SLK、SDI、SDO根电缆较少连接,连接数量较少但软件控制复杂。
VSYNC模式:该模式仅在MCU模式中添加了VSYNC (帧同步)信号线,适用于视频更新。
MDDI模式:高通公司2004年提出的接口MDDI (移动显示接口),可以通过减少连接提高手机可靠性,降低功耗,从而替代SPI模式连接主要是host_data、host_strobe、client_data、client_strobe、power、GND这几条线。 目前,瑞萨和三星刚刚发货。
通过查看LCM模块提供者提供的包接口图,可以看到提供的接口主要是根据用户的要求进行选择的。
3、最主要的区别是:
MPU接口方式:显示数据写入DDRAM,常用于静态图像显示。
RGB接口方式:显示数据不写入DDRAM,直接写入画面。 速度快,常用于显示视频和视频。
4、MPU和RGB接口的发展
首先看看驱动电路部分。 我记得早些时候,当时还是FSTN的显示器在天上飞的时候。 ymdpy毕业后刚开始做手机的时候。
LCD的驱动电路多为2个芯片、1个LCDC、1个LCDDriver,一般的LCDC中加入了display的buffer。 LCDDriver是电路驱动液晶显示部的电路,什么都没有。 更早以前,LCD上有一张LCDDriver就好了。 程序员需要控制两个(h,v )场扫描信号,而程序员要用某个坐标表示,都需要编程控制驱动电路来实现。 后来发现显示器越来越大。 MCU和程序员没有能力和精力进行这种同步控制,LCDC应运而生并承担了这些功能。 之后,添加了buffer。 这意味着程序员可以将大量的显示内容以显示矩阵(display matrix )的形式写入buffer,让LCDC读取buffer的数据并在LCDDriver上显示在显示器上。 之后,这个buffer变得越来越大,在显示矩阵以外还可以放置很多命令,所以不能一概而论。 因此,用于放置显示矩阵的存储空间的专用名称现在被称为GRAM。
现在,将这些驱动/控制电路和buffer合并在一个芯片中,统称为driver IC。 也就是说在LCM上的那个COG的芯片上,看到这个帖子的兄弟们相信都见过。 而且,这个驱动器IC的功能越来越nb,有什么dimm功能、有伽马功能、有什么省电功能等,功能乱七八糟,但大多数功能程序员不需要详细知道,现在的程序员很轻松能够用简单的数量的命令控制该驱动器IC来驱动LCD。
虽然上述液晶屏驱动电路的发展,但接口一直是CPU接口。 这一发展方向是因为LCD驱动器作为MCU的一个协处理器,能够接收从MCU发送来的command/data,并能够比较独立地处理显示作业。 如何处理显示工作的过程对MCU和程序员来说是透明的。
之后,ymdpy真的还不知道为什么会出现RGB的接口电路。 但是,有两点很明确。 一个是使用RGB接口的MCU/Backend IC一般更强大,配合RGB显示有专用的接口电路。 一个是一般使用RGB接口的LCD驱动器没有GRAM。 这大大降低了LCD驱动器的成本,将这些成本转移到了更大的液晶显示区域。 因此,您可以看到高端显示器() 2.2 )、QCIFF )通常采用的是RGB接口。 想想看。 26w颜色的QCIFF显示屏至少需要多少GRAM? 这是钱啊。
其实RGB连接器的LCD也变得简单了。 比CPU连接器的液晶屏更简单。 和c
PU接口的LCD driver相比,RGB接口的driver去掉了一个接口电路,就是去掉了CPU接口中的一个处理COMMAND/DATA数据的IO电路。(这个我光用语言说不大清楚,等ymdpy有空做一个ppt再放上来)这样的话,就需要MCU提供两个场同步信号(H,V),无疑提高了对MCU的要求,而且,LCD的帧率唯一受MCU/Backend IC的接口速度限制,所以如果MCU足够nb的话,LCD的刷新速度还是很不错的。还有就是有的GRB接口的driver做得还不是很nb,需要用SPI来传输一些少量的命令,而很多MCU没有这么一个专用的SPI,所以要用GPIO来模拟SPI。呵呵,看看也是够麻烦的。而且最郁闷的是,因为考虑到很多MCU/Backend IC芯片的接口速度还不是足够的快,所以很多厂家在LCD driver里还是放了部分或者是整个显示内存——唉,还是没有达到省钱的目的啊
5、LCD调试中的常见问题以及注意事项
功能:Init、SleepIn、SleepOut、DisplayOn、DisplayOff
注意事项:
LCD的调试中,延时特别重要,一定要确定延长的时间足够,特别是更改电压寄存器后面的延时。记得有一次屏幕出现抖动的现象,一直查不出原因,厂家从日本派了2次来人,都没解决;最后,把所有的时序测试出来,发现延时不足,影响延时的一个函数传递参数错了。
1.初始化前需要一个延时(大概为10ms),使Reset稳定;
2.如果出现花屏现象,很大的可能是总线速度问题;
3.如果屏幕闪动比较明显,可以通过调整电压来稳定,一般调节的电压为VRL、VRH、VDV和VCM;这些电压也可以用来调节亮暗(对比度);
4.调节对比度时,也可以通过调节Gamma值来实现,要调节的对象为:PRP、PRN、VRP、VRN等;
5.注意数据是8位、16位时,写命令和数据的函数注意要变化;
6.如果调试时发现LCD的亮度有问题,首先检查(考虑)提供给LCD的电流是否一致,再考虑调节电压。
7.开机花屏问题,最简单的处理方式就是在INIT结束的地方增加一个刷黑屏的功能。也可以在睡眠函数里加延时函数;
8. 如果随机出现白屏问题,一个可能是静电问题,把LCD拿到头发上擦几下,如果很容易出现白屏那肯定就是静电问题了。另外一个在有Backend IC的情况下,也有可能bypass没处理好。
9.还碰到过一个问题,写PLL的寄存器写了2次,屏幕就抖动的很厉害。这个问题应该跟LCD内部实现有关了,并不是每个都会。
10.横向抖动,看不清画面,修改ENTRY MODE
11.如果字体反了,修改drive output control ,GS,SS;
12.如果图像刷新上面的字体跑到下面等,区域刷新没处理好;
13.如果图像分开显示,起始点不在原点,多半是全屏刷新起始点寄存器没有设好;
14.DMA刷新方式,每次刷新为一行,只能一次刷一整行,不然会出错,减少了循环计算时间,提高了LCD的刷新速度,也就减少了响应时间;