RGB接口和MPU接口区别

1、接口数据线
    MCU屏:/RES , /CS , RS , /WR , /RD , DB0 ~ DB17   (18bit)
    RGB屏:/E , VSYNC , HSYNC , CLK ,  R0~R5 , G0~G5 , B0~B5 (18bit)

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(Mobile Display Digital Interface),通过减少连线可提高移动电话的可靠性并降低功耗,这将取代SPI模式而成为移动领域的高速串行接口。连线主要是host_data, host_strobe, client_data, client_strobe, power,GND几根线。目前瑞萨和三星才刚刚出货(主要是大屏的)。

通过观察LCM模组提供商提供的封装接口图,就大致可以看出它提供的是什么接口,主要是根据用户的要求来选择。

3、最主要的区别是: 

MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。

RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

4、MPU和RGB接口的发展

 我们先来看看驱动电路部分。记得在很早的时候,那时候还都是FSTN的显示屏满天飞的时候(也是小弟刚刚毕业开始作手机的时候)。

LCD的驱动电路有很多是两片芯片的,一片LCDC,一片LCDDriver,一般的LCDC里面有一个display的buffer。LCDDriver是电路驱动液晶显示部分的电路,没有什么好讲的。更早的时候,LCD上就一片LCDDriver就行了,程序员需要控制两个(H,V)场扫描信号,而且程序员希望在某个坐标显示,都需要编程控制驱动电路来实现,后来发现显示屏越来越大,而MCU以及程序员没有这个能力和精力来对LCD进行这类的同步控制,于是LCDC就诞生出来承担起这些个功能。后来加上了buffer,就是说程序员可以把大批的显示内容以显示矩阵(display matrix)的形式写到buffer里,让LCDC来读取buffer里的数据再由LCDDriver显示到显示屏上。后来这个buffer越来越大,除了显示矩阵以外还放很多命令,所以也不能老把它笼统的叫buffer啊,所以就对放显示矩阵的存储空间有了一个专用的名字叫做GRAM。
到现在嘛,这些驱动/控制电路以及buffer都合起来放在一片芯片中,统称为driver IC啦。也就是LCM上那颗COG的芯片,相信看这片回帖的兄弟们都看到过。而且这颗driver IC的功能越来越nb,有什么dimm功能啊,gamma功能啊,什么省电啊等等乱七八糟的功能,不过大多功能程序员都不需要去详细了解,现在的程序员都很轻松啦,只需要用很简单的几条命令就可以控制这颗driver IC来驱动LCD。

    上面说的LCD的驱动电路的发展,而接口都是一直是CPU接口。因为这个发展的方向是:LCD driver作为MCU的一片协处理芯片,接受MCU发过来的command/data,而可以相对独立的处理显示工作。而怎么处理显示工作的过程,对于MCU和程序员来说,都是透明的。
    后来为什么出现了RGB的接口电路,小弟真的还不知道为什么。但是有两点很清楚:一是用RGB接口的MCU/Backend IC一般都更加的强大,有专门的接口电路来配合RGB显示。一是一般用RGB接口的LCD driver都没有GRAM,这大大的降低了LCD driver的成本,而将这些成本转移到更大的液晶显示区域去。所以不难看出,高端的显示屏(>=2.2",QCIFF)的一般都会选用RGB接口。想想吧,26w色的QCIFF的显示屏至少需要多少GRAM啊,这都是钱啊!
    其实RGB接口的LCD也很简单了,甚至比CPU接口的LCD还要简单。和CPU接口的LCD driver相比,RGB接口的driver去掉了一个接口电路,就是去掉了CPU接口中的一个处理COMMAND/DATA数据的IO电路。(这个我光用语言说不大清楚,等小弟有空做一个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的刷新速度,也就减少了响应时间;

猜你喜欢

转载自blog.csdn.net/qlexcel/article/details/82722588