DBI接口与DPI接口与DSI接口
(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的三种格式分类说明如下:
关于CABC的调节还有另一种问题,就是DSI调节亮度跟DSI VIDEO MODE的冲突。CABC是设定最大亮度,LCD的亮度填充会随着画面内容的变化来自动调节,达到省电的目的。当然,菜单的亮度调节是另外一回事,这就导致出现开机图像异常和睡眠后唤醒的图像异常,根本原因在于在RGB数据中穿插DSI控制命令,如果芯片发送端无法做到在RGB帧之间发送CABC命令,导致RGB图像断裂连接不上,就会出现异常。
在调节DSI屏有时会出现“DSI waite”的问题,原因还是在屏的供电没有。如果屏没有在UB阶段供电,会导致系统开机一直卡在这个地方循环。
- 上一篇LoadLibrary函数和FreeLibrary函数
- 下一篇调试OTM4001A液晶驱动的一点心得
-
主题推荐
- interface 32位 嵌入式 硬件 异常
-
猜你在找
- MIPI video mode 和 command mode 的区别
- DBI接口与DPI接口
- mipi信号
- 浅谈I2C总线
- Android电容触摸屏驱动
- 高通平台android开发总结
- Camera显示之Hal层的适配(二)
- Linux I2C设备驱动编写(一)
- Android framework系统默认设置修改
- 12.log4j.properties例子:log4j.appender.file.Append
13楼 很大的虾米 2013-12-10 16:06发表 [回复] [引用] [举报]-
-
博主大牛,不知道有没有群?让我这种小白能随时看到你们交流学习学习.我是做模组的.
12楼 flyword2050 2013-09-09 09:29发表 [回复] [引用] [举报]-
-
MIPI最大传速速率是多少?
Re: DBOY 2013-09-09 11:39发表 [回复] [引用] [举报]-
-
回复flyword2050:网上说的“通过配置可伸缩的数据通道,该接口可以实现3Gb/s的数据传输速率”,真假就不知道了
11楼 suwenqiang2011 2013-06-26 15:10发表 [回复] [引用] [举报]-
-
http://blog.csdn.net/tommy_wxie/article/details/7892726
为什么此人转载居然写着个原创
Re: To_kill_Moon 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,不知博主有不有更详细资料共享一下或者交流下:[email protected]
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:做视频方面的话,这些都会接触到