MIPI的液晶数据传输中涉及DWG(Display Working Group)工作组,该工作组提出了4种液晶规范分别为DBI(Display Bus Interface显示总线接口)、DPI(Display
Pixel Interface显示像素接口)、DSI(Display Serial Interface显示串行接口)、DCS(Display
Command Set显示命令集)。
(1)DBI接口
A,也就是通常所讲的MCU接口【微程序控制器、单片机】,俗称80 system接口。The lcd interface between host processor and LCM device list as below,The LCM driver will repeated update panel display【是连接在主机处理器和LCM设备之间的lcd接口,lcm模块驱动程序将重复更新显示板】。MCU接口通过并行接口传输控制命令和数据,并通过往LCM模组自带的GRAM(graphic RAM)更新数据实现屏幕的刷新。
DBI(Display Bus Interface)规范中规定了它的硬件接口方式,它是液晶数据总线接口,可细分为MIPI DBI Type A、MIPI DBI TypeB、MIPI DBI Type C这三种不同的模式,不同模式下的硬件接口以及数据的采样都有所不同,如在MIPI DBI Type A规范中规定是下降沿采样数据值(摩托罗拉6800接口 ),MIPI DBI Type B规范中规定是上升沿采样数据(英特尔8080接口 )。MIPI DBI Type A和MIPI DBI Type B同时又可细分为5种不同数据接口模式,分别为8位数据接口、9位数据接口、16位数据接口、18位数据接口、24位数据接口。不过市面上支持9位数据接口的液晶驱动IC并不多见,当然数据接口越大那么相同一个周期内数据接口越大,所传输的数据越多。而MIPI DBI Type C 只适用于传输于DCS规范中规定的命令和该命令所需要的参数值,不能传输液晶像素的颜色值(虽然DBI规范中规定能传输颜色值,不过市面上的液晶驱动IC是用来传输命令和命令所需的参数值)。
同样在DBI(Display Bus Interface)规范中规定不同数据接口所支持颜色位数。具体还是要参考所使用的液晶驱动IC资料来确定。谈到颜色位数,需要说一下何谓颜色位数,颜色位数也称色彩位数,位图或者视频帧缓冲区中储存1像素的颜色所用的位数,它也称为位/像素(bpp)。色彩深度越高,可用的颜色就越多。市面常用液晶驱动IC支持的颜色位数有16、18、24这三种。
B,以典型的18位数据跟16位数据做说明(8位寄存器控制)。
如上硬件采用18位数据线,控制命令和参数占用DB0到DB7并行传输,图像数据采用RGB666的格式并行传输。
如上硬件采用16位数据线,控制命令和参数占用DB0到DB7并行传输,图像数据采用RGB565的格式并行传输。
C,关于DBI data format的说明
(I)对于16位的datawidth,典型的数据格式举例如下
1cycle/1pixel,RGB565,格式是:rrrrrggggggbbbbb
3cycle/2pixel,RGB666,格式是:xxxxrrrrrrgggggg
xxxxbbbbbbrrrrrr
xxxxggggggbbbbbb
3cycle/2pixel,RGB888,格式是:rrrrrrrrgggggggg
bbbbbbbbrrrrrrrr
ggggggggbbbbbbbb
(II)对于18位的datawidth,典型的数据格式举例如下
1cycle/1pixel,RGB666,格式是:rrrrrrggggggbbbbbb
3cycle/2pixel,RGB888,格式是:rrrrrrrrgggggggg
bbbbbbbbrrrrrrrr
ggggggggbbbbbbbb
D,硬件接口及时序
(I)硬件连接图:
RESX:复位;CSX:chip select片选;TE:tearing enable;D/CX:register select寄存器选择;WRX/SCL:write control;RDX:read control;DB[….]:传输线。
(II)写周期:
(III)读周期:
(IV)关于屏参中6个读写时序
(2)DPI接口
它不是像DBI规范用Command/Data配置液晶驱动IC的寄存器再进行操作。
也就是通常所说的RGB接口【DBI接口可称为MCU(MPU)接口】,采用普通的同步、时钟、信号线来传输特定数据,采用SPI等控制线完成命令控制。某种程度上,DPI与DBI的最大差别是,DPI的数据线和控制线分离,而DBI是复用的。同样使用DBI接口的液晶很少有大屏幕的,因为需要更多的GRAM从而提高了生产成本,而DPI接口即不需要,因为它是直接写屏,速度快,常用于显示视频或动画用。
DPI从它的名称中就可以看出它是直接对液晶的各像素点进行操作的,它是利用(H,V)这两个行场信号进行对各像素点进行颜色填充操作。填充速度快,可用于动画显示,目前手机液晶屏所用的接口就是这一类。H(H-SYNC)称为行同步信号;V(V-SYNC)称为场同步信号。它像模拟电视机那样用电子枪那样进行扫频显示,不过它对时序控制要求很高。因此一般的MCU芯片很难支持。
它的信号时序图如下:
(3)DPI与DBI的兼容
现在很多LCM的模组可以做到DBI和DPI接口的兼容。因为在IM2/IM1/IM0由手机主板决定的前提下,比如6516支持MCU接口,同时该模组放到另一款DPI接口的主板上也可以照样使用。
另一个补充问题,关于显示位数,由于嵌入式WINDOWS系统的GUI是16位的,不同于桌面WINDOWS的32位,所以24位的位图在WIN CE中,只能以16位色显示,一定会丢掉某些颜色。这个缺陷还在于,就算是18(RGB666)位的LCM数据位显式,最终软件中接受的GUI颜色还是16位,要把RGB565转成RGB666才能当18位色显示,相当于插值了。
(4)DSI接口
- 符合MIPI协定的串列显示器界面协议,主机与显示器之间用差分信号线连接。
- 一对clock信号和1~4对data信号
- 一般情况下data0可以配置成双向传输
- 一个主机端可以允许同时与多个从属端进行通信
DSI,是一种串行传输方式,包括数据、指令、其他信息。连接方式如下图:
DSI的数据传输过程如下:
由于DSI的数据是封包处理的,不像DBI接口那样可以明显知道原始的传输内容,所以在一些问题的解决方法是不同的。在调试OTM8009A的DIS接口LCM时,发现LCD在按电源键睡眠后必须按两次才能唤醒,一开始无论如何都没有想到是屏的问题,最后是修改LCM的DSI驱动公共函数解决的,也就是把dsi_enable_power中的DSI_lane0_ULP_mode形参都置0,以避免DSI处于极度睡眠中。
关于CABC,是一种通过屏参来控制LCM自身背光的一种方式,跟之前采用独立GPIO或PWM控制背光的方式最大的区别在于:背光的亮灭和调节均跟LCM的使用有关。在碰到开机白屏或者会有雪花点,均是在初始化中使能了CABC功能,而SHOW画面显然都是在屏初始化之后,背光亮了而屏没有数据,这样很难避免白屏和雪花点。解决方法是:在LCM驱动的对应设置背光的函数中,先设置亮度等级,再使能CABC,这样就可以避免问题。
(5) DCS(Display Command Set)
规范中规定了显示命令设置的一些规范,它并没有说明它具体的硬件连接方式,规定了液晶传输中各个命令的值和意义以及命令说明,主要是为了配合DBI规范、DSI规范来使用的。