DBI接口和DPI接口的区别
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的DIS接口LCM时,发现LCD在按电源键睡眠后必须按两次才能唤醒,一开始无论如何都没有想到是屏的问题,最后是修改LCM的DSI驱动公共函数解决的,也就是把dsi_enable_power中的DSI_lane0_ULP_mode形参都置0,以避免DSI处于极度睡眠中。
DSI的三种格式分类说明如下:
关于CABC,是一种通过屏参来控制LCM自身背光的一种方式,跟之前采用独立GPIO或PWM控制背光的方式最大的区别在于:背光的亮灭和调节均跟LCM的使用有关。在碰到开机白屏或者会有雪花点,均是在初始化中使能了CABC功能,而SHOW画面显然都是在屏初始化之后,背光亮了而屏没有数据,这样很难避免白屏和雪花点。解决方法是:在LCM驱动的对应设置背光的函数中,先设置亮度等级,再使能CABC,也就是不要在初始化中设置CABC,这样就可以避免问题。
关于CABC的调节还有另一种问题,就是DSI调节亮度跟DSI VIDEO MODE的冲突。CABC是设定最大亮度,LCD的亮度填充会随着画面内容的变化来自动调节,达到省电的目的。当然,菜单的亮度调节是另外一回事,这就导致出现开机图像异常和睡眠后唤醒的图像异常,根本原因在于在RGB数据中穿插DSI控制命令,如果芯片发送端无法做到在RGB帧之间发送CABC命令,导致RGB图像断裂连接不上,就会出现异常。
DBI接口和DPI接口的区别的更多相关文章
- 液晶屏MIPI接口与LVDS接口区别(总结)
液晶屏接口类型有LVDS接口.MIPI DSIDSI接口(下文只讨论液晶屏LVDS接口,不讨论其它应用的LVDS接口,因此说到LVDS接口时无特殊说明都是指液晶屏LVDS接口),它们的主要信号成分都是 ...
- [转]Serializable接口与Externalizable接口区别
被Serializable接口声明的类的对象的内容都将被序列化,如果现在用户希望自己指定序列化的内容,则可以让一个类实现Externalizable接口,此接口定义如下: public interfa ...
- 使用.Net访问Office编程接口(PIA和IA的区别)
在这篇文章里面,我将向大家介绍如何在.Net中访问Office所公开的编程接口.其实,不管是使用哪种具体的技术来针对Office进行开发(比如VSTO,或者用C#编写一个Office Add-in,或 ...
- Comparatable接口和Comparator接口的使用与区别
这篇博文可以为你解决的问题如下: 什么是自然排序 Collections.sort()与Arrays.sort()的异同点 Comparatable接口和Comparator接口各自的排序依据(理论讲 ...
- Java 多线程实现接口Runnable和继承Thread区别(转)
Java 多线程实现接口Runnable和继承Thread区别 Java中有两种实现多线程的方式.一是直接继承Thread类,二是实现Runnable接口.那么这两种实现多线程的方式在应用上有什么区别 ...
- Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?
Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09| 分类: JAVA | 标签:java |举报|字号 订阅 下面比较一下两者的 ...
- java中接口和抽象类有什么区别,举例!
2)接口和抽象类有什么区别?答:马克-to-win:抽象类里可以有实现的方法,接口里不能有,所以相对来讲各方面实现都简单(尤其动态方法调度).另外:类可以实现多个接口.反过来说,也正是抽象类一个致命伤 ...
- 比较器:Compare接口与Comparator接口区别与理解
一.实现Compare接口与Comparator接口的类,都是为了对象实例数组排序的方便,因为可以直接调用 java.util.Arrays.sort(对象数组名称),可以自定义排序规则. 不同之处: ...
- java中Comparatable接口和Comparator接口的区别
1.不同类型的排序规则 .自然排序是什么? 自然排序是一种升序排序.对于不同的数据类型,升序规则不一样: BigDecimal BigInteger Byte Double Float Int ...
随机推荐
- 1.RABBITMQ 入门 - WINDOWS - 获取,安装,配置
一. 背景: 公司项目有所改动,要求微信(移动端调用的接口),日志接口换位log4net,全部改成以rabbitMQ作为服务支持, 二.本地环境: windows 10 enterpr ...
- 收集SQLServer线程等待信息
要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_ ...
- gulp分享文档
Grunt--I/O操作: 读取A → A.a() → 写出A → 读取A → A.b() → 写出A; gulp--数据流:读取A → A.a() → A.b() → 写出A. Part① 构建gu ...
- 【转】Spring.NET学习笔记——目录
目录 前言 Spring.NET学习笔记——前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1——控制反转(基础篇) Level 200 Spring.NET学习笔 ...
- win7下装ubuntu
需要的东西有: 1,ubuntu系统镜像,下载地址:http://www.ubuntu.com/download/desktop 选64位吧,兼容性好些. 2,空闲的大于20G硬盘空间,这个大小根据个 ...
- PHP中的设计模式:单例模式(译)
原文链接:http://coderoncode.com/2014/01/27/design-patterns-php-singletons.html 单例模式用于限制类实例化到单个对象,当整个系统只需 ...
- 通过javascript实现页面的横竖屏固定
javascript是不能固定页面是横屏还是竖屏的,但是我们可以通过另外一种思路来监听window.orientation状态,假设我们要固定页面为横屏显示,则当window.orientation返 ...
- phpMyAdmin下载与安装
Part1 phpMyAdmin下载 浏览器输入网址 http://www.phpmyadmin.net 下载即可 我的下载是这样的 Part2 phpMyAdmin安装 解压下载的压缩包到apach ...
- iOS: 神奇的addSubView
看着addSubView, 本以为是添加多个对象, 但通过测试代码, 发现同一个对象在addSubView中只会添加一次. 想想, 视图对象是通过引用得到的. 在视图的子视图集中, 只保存一个相应的对 ...
- iOS: 学习笔记, Swift与Objective-C混用简明教程(转载)
Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很 ...