全部博文(478)
分类: Android平台
2016-11-03 15:22:19
(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。MCU借口通过并行接口传输控制命令和数据,并通过往LCM模组自带的GRAM(graphic RAM)更新数据实现屏幕的刷新。
DBI接口分为串行和并行两种,模型如下:
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接口
也就是通常所说的RGB接口,采用普通的同步、时钟、信号线来传输特定数据,采用SPI等控制线完成命令控制。某种程度上,DPI与DBI的最大差别是,DPI的数据线和控制线分离,而DBI是复用的。
它的模型如下:
它的信号时序图如下(注意DE模式跟SYNC模式的区别):
其中,backporch和syncwidth应尽量分配大些,因为靠它决定有效区域的起始位置,而frontporch则可以分配小点(该方法可用在sync模式的屏参驱动DE的屏,需注意backporch+syncwidth+frontporch才等于DE模式下的blanking值)。
曾经在调试一个DPI接口LCM时碰到一个奇怪现象,RGB的接口用一个LVDS转换芯片跟一款LVDS模组相连。重烧程序完后可以显示图像,断电再上电就没有图像,后来发现是上电屏参初始化中没有配置一个CS拉高的使能信号脚。烧完程序后该脚为高所以可以显示,重断电再上电默认为低所以没有图像。
DPI接口的CLOCK计算方法:
其实ref为0,其他的三个参数以屏参中设定为准。
就DPI接口的CLOCK极性选择,作如下说明:
A、首先看数据线,当开始传输第一个数据时,如果EN为下降沿,即传输Valid data 时EN低有效。则:Params->dpi.de_pol=LCM_POLARITY_FALLING; 反之亦然;
B、VSYNC和HSYNC分别代表一帧数据和一行数据的开始,当一帧以下降沿开始时,设置:Params->dpi.vsync_pol=LCM_POLARITY_FALLING; 反之亦然;当一行以下降沿开始时,设置:Params->dpi.hsync_pol=LCM_POLARITY_FALLING; 反之亦然。
C、PCLK的极性没有固定的要求,主要是看其与data的关系,即保证latch到正确的数据,这一点和sensor的PCLK设置相同。当开始传输第一个数据时,如果PCLK为下降沿,即在下降沿latch数据时,最好设置:Params->dpi.clk_pol=LCM_POLARITY_FALLING; 反之亦然。
(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接口
DSI,是一种串行传输方式,包括数据、指令、其他信息。连接方式如下图:
DSI的数据传输过程如下:
由于DSI的数据是封包处理的,不像DBI接口那样可以明显知道原始的传输内容,所以在一些问题的解决方法是不同的。在调试OTM8009A的DSI接口LCM时,发现LCD在按电源键睡眠后必须按两次才能唤醒,一开始无论如何都没有想到是屏的问题,最后是修改LCM的DSI驱动公共函数解决的,也就是把dsi_enable_power中的DSI_lane0_ULP_mode形参都置0,以避免DSI处于极度睡眠中。
DSI的三种格式分类说明如下:
(2)关于CABC的调节还有另一种问题,就是DSI调节亮度跟DSI VIDEO MODE的冲突。CABC是设定最大亮度,LCD的亮度填充会随着画面内容的变化来自动调节,达到省电的目的。当然,菜单的亮度调节是另外一回事,这就导致出现开机图像异常和睡眠后唤醒的图像异常,根本原因在于在RGB数据中穿插DSI控制命令,如果芯片发送端无法做到在RGB帧之间发送CABC命令,导致RGB图像断裂连接不上,就会出现异常。
(3)在调节DSI屏有时会出现“DSI waite”的问题,原因还是在屏的供电没有。如果屏没有在UB阶段供电,会导致系统开机一直卡在这个地方循环。
(4)MIPI时钟的波形,正常都应为正弦波,P跟N的幅值应相当
如果有区分连续时钟和非连续时钟,后者的时钟会周期性的有个上拉的电平,如下图。
为什么此人转载居然写着个原创 Re: Driver_E 2014-08-23 13:41发表 [回复] 回复suwenqiang2011:你傻啊,你注意下发表时间。明明是你给的地址是copy的 10楼 DQLUYANSHU 2013-06-14 11:54发表 [回复] 你好,看到你的博客,会让很多人收益,但我比较关心你一开始的工作历程,因为我现在也是这种瓶颈,工作两三年,还没有一个稳定的擅长的方面,我想听听你一个过来人的想法,所以想跟你聊聊,我的QQ号372414865,不知道你的联系方式,你可以发过来验证消息CSDN或者你回复我 我加你也可以 9楼 zhoubotong2012 2013-06-06 14:03发表 [回复] DVI/HDMI怎么转为DSI信号,目前有什么芯片? 8楼 阿龍 2013-05-08 11:20发表 [回复] 博主,你好,我是做的MTK平台的,我有个疑问就是DBI的并口屏,为什么时钟线都没有接?但是我看datasheet中也有时钟信号的。 Re: DBOY 2013-05-09 09:16发表 [回复] 回复ylarm:DBI的刷新率,这些都是初始化程序设定的,发送跟接收两边一致就可以了。数据本身就是按照这个速率传输的,不需要额外的CLOCK。 7楼 xiaoli0315 2013-04-15 19:11发表 [回复] 最后一段CABC的调节还有另一种问题,就是DSI调节亮度跟DSI VIDEO MODE冲突,确实如此。我现在就碰到这个问题了,博主是大牛,这么早就提前预判到了,这个在MTK平台上有没有解决办法? Re: DBOY 2013-04-16 11:51发表 [回复] 回复xiaoli0315:后期应该有解决方法了 6楼 fish1006 2013-03-23 09:25发表 [回复] 博主,想请教你一个问题:就是你提到的这些DSI,DBI,DPI接口跟LCD接口类型(如DVI,HDMI,D-sub)之间是什么关系?有什么区别?前者是后者的原理么? Re: DBOY 2013-03-24 19:23发表 [回复] 回复fish1006:D-SUB是VGA接口,是模拟信号,这是最大的差别。HDMI是DVI的带音频后的数据格式。如果硬说他们之间有联系的话,DSI跟DVI(HDMI)有个共同点,都是差分信号。 5楼 goodtalent 2013-03-05 22:37发表 [回复] 你好!我现在调试一个LVDS的屏(当中用到一个LVDS的转换芯片),屏的接口是dpi的。现在碰到如下问题:屏可以显示线条,不知是什么问题!希望得到你的回复,谢谢。 Re: lzmxiang 2013-04-27 13:10发表 [回复] 回复goodtalent:你好,我也碰到同样的问题,你的屏现在调通了吗? Re: goodtalent 2013-04-29 15:01发表 [回复] 回复lzmxiang:我们改板了,不过思路很明确。
你飞线确认rgb输入的屏要亮。多飞两个 Re: DBOY 2013-03-06 22:07发表 [回复] 回复goodtalent:如果确定LVDS芯片工作正常的话,可能是屏参的问题导致 4楼 atlandis 2012-02-18 10:19发表 [回复] 请问,图中标明 driver controller 的模块具体做了哪些事情? Re: DBOY 2013-03-06 22:06发表 [回复] 回复atlandis_alex:这个可以去参照LCD的显示原理,或者PDF就说明的很清楚 3楼 lixc2008 2011-12-22 21:01发表 [回复] 博主,收录了你的这篇文章。
看你都是又问必会,所以有点疑问,想问问:
对与你说的“DBI接口也就是通常所讲的MCU借口”有点疑问,DBI接口分很多类的。你所说的MCU接口应该是我们常说的并行CPU模式。DBI类型分为好几类的,有:
DBI Type B 18BIT;
DBI Type B 9BIT;
DBI Type B 16BIT;
DBI Type C 9BIT;
DBI Type C 8BIT;
DBI type B 9Bit我没有用过,不知道是那类接口,但是DBI Type C 8 BIt我们通常叫做串行RGB模式(又有分12位色,16位色,18位色,24位色)。另外对于LCD的一些数据类型,如LVDS,MiniLVDS,TTL,不知博主有不有更详细资料共享一下或者交流下:lixc2008@163.com Re: DBOY 2012-02-15 14:06发表 [回复] 回复lixc2008:你说的对,我所用过的DBI一般是18位和16位,都是并行接口,8位和9位的我就不清楚了。对TTL/LVDS,如果你可以找到液晶电视上用的LCD规格书,就可以知晓其内容。MiniLVDS我也没用过。 Re: DBOY 2011-12-23 10:21发表 [回复] 回复lixc2008:HI,DBI Type B 18BIT、DBI Type B 16BIT这些是我接触较多的类型;DBI Type C 9BIT、DBI Type C 8BIT、DBI Type B 9BIT这些我倒是没有实际接触过。 LVDS、TTL这些是在大屏中用的较多,比如用于液晶显示器和液晶电视的12寸以上的屏幕多见,MiniLVDS我也不是很清楚。TTL和LVDS都是编码后的信号,传输时有特定的编码和解码模块,之所以这样做是因为大尺寸屏的数据传输距离较长,为了避免出现错误所以采用。 2楼 qq69696698 2011-08-03 18:12发表 [回复] 不好意思,问下博主,MIPI中的DBI,DPI,DCS,DSI的关系和区别是什么啊? Re: DBOY 2011-08-04 10:27发表 [回复] 回复qq69696698:DBI,DPI的说明我的文章中已经列举了。DCS,DSI我倒不是很清楚,没用过MIPI Re: qq69696698 2011-08-04 14:56发表 [回复] 回复zhandoushi1982:博主,从你文章的示意图上可以看到:DBI和DPI的区别主要在FrameBuffer是在LCM panel上还是在Host端,那至于他们的数据线和控制线我从文章中并不能很清楚的了解到,按照我的理解,DPI是可以传送数据的,而DBI的数据已经由其他总线传到了Framebuffer中,而DBI只管下控制,不知道我的理解是否正确。 Re: mostmark 2012-02-09 00:15发表 [回复] DBI,DPI 是并行口
DSI是串行口
DCS 是 display command set,一系列命令集
回复qq69696698:回复qq69696698: Re: DBOY 2011-08-05 09:24发表 [回复] 回复qq69696698:我这样给你答复。DBI跟DPI除了framebuffer的差别之外,在数据线类型上是不同的。DPI=命令控制线+图像数据线;DBI=命令线数据线二合一。你说的DPI是可以传送数据,这个没错,DPI其中的数据线是可以传图像数据。DBI的命令和图像数据全都是复用线完成的。 Re: qq69696698 2011-08-05 13:43发表 [回复] 回复zhandoushi1982:好的,有点理解了,谢谢答复。 1楼 strive1987916 2011-05-06 22:07发表 [回复] [e03]
MCU(CPU,MPU,i80), RGB,SPI,VSYNC,MDDI,MIPI(DBI,DPI,DCS,DSI),LVDS?都晕了 Re: DBOY 2011-05-07 18:52发表 [回复] 回复 strive1987916:做视频方面的话,这些都会接触到