MIPI DSI之DBI DPI含义和区别(3-1)
一、MIPI
MIPI(Mobile Industry Processor Interface/移动工业处理器接口)是2003年由ARM、Nokia、ST 等公司成立联盟并为移动应用处理器制定的一个开放标准, 旨在将各个模块标准化以降低设计的复杂度和兼容性。 由于定义的范围太广,所以在针对具体的模块有自己一套协议,已经完成和正在计划中的规范如下:

本文主要介绍用于显示的协议 -- MIPI DSI, 以及同样用于显示的DBI/DPI各自的差异和特点。
=============================== 以下分析以ST7789V芯片为例 =================================================
二、DBI
DBI(Display Bus Interface), 显示总线接口, 也称MCU接口或者80/8080接口, 整个框架如下:

DBI接口最大的特点就是LCM自带framebuffer, 存储Host端发过来的数据, 并由内部的控制IC不断重复的刷到LCD上, 也就是说其内部实现了自刷新, Host只要发送一次数据即可, 这帧数据会一直显示在屏幕上。
由于不需要Host端自刷新,对Host处理器的要求很低, 没有时钟线,Host和LCM可以是简单的GPIO相连, 这也是叫MCU接口的原因, 典型的可以和51单片机相连, 只要满足时序要求即可。
ST7789V芯片支持DBI接口, 根据数据传输又可分为并口和串口传输(主要体现在数据线上,其他时序要求都是一样的)
1. 并口传输:

CSX: 片选信号,图中低电平有效; D/CX:数据/命令信号; WRX: 写使能, 上升沿锁存; RDX:读使能, 上升沿锁存; D[17:0]: 数据, 具体使用多少根数据线可配置
根据M0~3四根引脚配置有如下:

已0001为例, 数据使用16根线D[15:0](针对RGB565格式),可以看出当D/CX=0,RDX=1, WRX上升沿时为写命令, 有效长度为一个byte位于D[7:0], 而D/CX=1是写数据, 根据前面的命令决定后面数据长度, 如果是帧数据就占16根, 如果是配置参数也是一个byte, 以此类推!
具体的写、读操作时序如下:

以RGB565刚好在D[15:0]的实际分布如下((2Ch): Memory Write, 写命令0x2c, 接着开始写帧数据 ):

除了上述GPIO引脚外, 一般还有TE(tearing effect)引脚, Host可以通过该引脚得知LCM一帧数据是否刷完(也可配置LCM每刷多少帧产生一个信号告知Host), 以做同步。
2. 串口传输
ST7789V串口传输有3线制和4线制, 主要区别在于识别数据线的数据是显示数据还是命令, 如下:

3线制每传输一个字节需要9bit, 多出一个bit来表示该字节是命令还是数据, 4线制每byte就是8bit,通过这根多出的引脚告知LCM这个byte是命令还是数据。
注意: 如果3线制采用MCU GPIO实现将非常简单, 如果采用SPI传输就会有个问题, SPI主控器一般发送单位是8bit, 无法生成图上每9bit构成一个字节, 设置在SPI传输时是可以设置的 “spi->bits_per_word = 9;”也不行, 因为在SPI主控器
会设置成两个字节为单位进行传输, 可以理解为short类型, 举个例子: 假设现在传输4个字节,可以设置“spi->len = 4;” “spi->bits_per_word = 8;” CPU 会从内存读取4次丢到SPI寄存器 readb()/writeb(), 如果 “spi->bits_per_word = 9;”
SPI主控器会设置步进2byte, CPU从内存读取两次每次两个字节丢到SPI寄存器, 当然最后在线上的波形都是4个字节, 不同的是: a. 时序可能不同, CPU大端 两次char丢和一次short丢位置是相反的!; b. short只丢两次效率更高
三、DPI
DPI(Display Pixel Interface) 显示像素接口, 也称RGB接口, 之所以叫像素接口, 是因为数据采用并口在一个时钟周期就传输一个像素的数据, 所以时钟一般设置像素时钟而不是bit时钟, 整个框架如下:

与DBI不同的是, LCM端没有framebuffer, 转移到Host端, 所以为了维持画面能够持续显示在屏幕上, Host要持续发送数据过去, 并且为保证数据的同步, 引入VSYNC/HSYNC等功能(更准确说是继承了以前的叫法), 如下:

解释如下:
Vsync:帧同步信号, 告知LCM移到帧起始位置,从上图Figure25可以知道水平就是低电平有效(不是高电平), 极性就是下降沿有效(看一个周期的开始)
vbp: 帧同步信号的后肩(在Vsyc后面),单位为1行的时间。
vfp: 帧同步信号的前肩(在Vsyc前面),单位为1行的时间。
Hsync:行同步信号, 告知LCM移到下一行的起始位置, 从上图Figure25可以知道水平就是低电平有效(不是高电平), 极性就是下降沿有效(看一个周期的开始)
hbp:行同步信号的后肩(在Hsyc后面),单位为1像素的时间。
hfp:行同步信号的前肩(在Hsyc前面),单位为1像素的时间。
Dotclk:点时钟或称像素时钟
DE: 数据有效信号(重点,后面会详解)
对于DBI接口, 每次发送帧数据时会先发送个命令(上文提到0x2c), 而RGB接口不同发送命令, 可通过Vsync、Hsync告知LCM接收新一帧数据。那vbp/vfp/hbp/hfp又是干嘛的呢? 对于我们这种TFT屏来说可以不用, 主要是兼容早期的显示屏:
以前显示技术是CRT(阴极射线显像管), 尾部是电子枪, 靠电子撞击玻璃产生亮度(所以只有黑白两种颜色), 由于电子枪扫射是机械行为, 所以当换行尤其是最后一行最后一个像素点要移到第一行第一个像素换帧的时候, 机械运动需要时间, 因此
要加延迟操作,这期间时钟还是一直在跑, 使得主控和显示模块保持同步, 当电池抢移到位置且稳定时, 主控器就可以读取数据并传输到数据线就上, 问题是显示模块如何知道此时数据线上的数据是有效数据了? 就是DE线告知的, 这个是主控器
“自动”操作DE线的, 其时机就是根据vbp/vfp/hbp/hfp参数控制的,当Vsync/Hsync有效后, 主控器并不会立即读取帧数据放到数据线, 而是disable DE, 让显示模块ready, 然后经过Vsync/vbp/vfp/后开始读取帧数据并使能DE引脚, 这时显示模块
就接收帧数据了! 而TFT屏本可以不用这四个参数, V/Hsync有效后直接发送帧数据, 但为了兼容CRT所以还是保留下来了, 其实除了这四个参数, 连V/Hsync都可以不要, 因为DPI的数据线只是传输帧数据, 初始化参数命令还是要通过其他比如SPI发送的
那这个同步信号完全可以通过SPI发送过去, 然后帧数据就发送到数据线(即除了上面的Dotclk,其余都可以不用), 当然目前还是继承并使用这些参数, 所以一个典型的BPI接口电路如下:

没错, 最大的缺点就是 浪费线! 控制部分一般是SPI接口, 数据部分就是一堆的RGB线, 那相比DBI 中3线制有什么优势呢? 没错, 就是传输快! 尤其V/Hsync代替发送帧同步命令, 可以无间隔存粹传输帧数据! 一般用于屏幕大(像素高)的LCM产品。
还有关于极性的设置, V/Hsync、Dotclk和DE都可以可以设置的, 以ST7789V为例:

如果LCM实际时序跟Figure25一致的话, 可以反推LCM硬件电路设置VSPL/HSPL 接VCC, DPL/EPL接地
注意: 这些极性是由LCM设定的(不是显示芯片, 它只是提供这个能力, 取决模组厂家硬件电路设置), Host要根据其要求设置极性, 比如我现在调试某家LCM模组厂家, 显示芯片采用ST7272A, 其手册极性描述如下:

从LCM厂家给的原理图,这四个引脚模组厂直接接VCC,

可以知道其波形为下图红色圈圈, 也就是极性为下降沿有效, 电平是高电平有效:

而我的主控器是博通5892, 设置极性是电平不是极性, 也即设置低电平有效(=1):


四、DSI
DSI(Display Serial Interface) 显示串行接口, 帧数据/命令全使用串口方式传输(打成一个包), 1~4通道, 由于篇幅问题, 在下一篇博文再详细介绍。
MIPI DSI之DBI DPI含义和区别(3-1)的更多相关文章
- LCD之mipi DSI接口驱动调试流程【转】
转自:http://blog.csdn.net/liwei16611/article/details/68146912 1.LCD MIPI DSI协议 MIPI-DSI是一种应用于显示技术的串行接口 ...
- MIPI DSI 和 D-PHY 初始化序列
MIPI DSI 和 D-PHY 初始化序列 -- 深圳 南山平山村 曾剑锋 参考文档: i.MX 6Dual/6Quad Multimedia Applications Processor Refe ...
- MIPI DSI协议介绍
此文根据网上的资料翻译和整理而来 一.MIPI MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写.MIPI(移动行业处理器接口)是MIPI联 ...
- 【完整资料】TC358779XBG:HDMI转MIPI DSI芯片方案
TC358779XBG是一颗HDMI1.4转MIPI DSI带缩放功能的芯片,分辨率1920*1080,封装BGA80.通信方式:IIC,电源3.3/1.8/2.2,应用领域:平板,广告机,VR,显 ...
- 【详细资料】ICN6211:MIPI DSI转RGB芯片简介
ICN6211功能MIPI DSI转RGB,分辨率1920*1200,封装QFN48
- 【详细资料】ICN6202:MIPI DSI转LVDS芯片简介
ICN6202功能MIPI DSI转LVDS,分辨率1920*1200,封装QFN40
- TC358775XBG:MIPI DSI转双路LVDS芯片简介
TC358775XBG是一颗MIPI DSI转双路LVDS芯片,通信方式:IIC/MIPI command mode,分辨率1920*1200,封装形式:BGA64.
- HDMI转MIPI DSI芯片方案TC358870XBG
型号:TC358870XBG功能:HDMI1.4b转MIPI DSI通信方式:IIC分辨率:2560*1600@60fps/4k*2k@30fps电源:3.3/1.8/1.2/1.1封装形式:BGA8 ...
- HDMI转MIPI DSI芯片方案TC358779XBG
型号:TC358779XBG功能:HDMI1.4转MIPI DSI通信方式:IIC分辨率:1920*1080电源:3.3/1.8/1.2封装形式:BGA80深圳长期现货 ,提供技术支持,样品申请及规格 ...
随机推荐
- HEOI2018 游记
day0早上没有跑操,收拾了点东西,带了点吃的,老妈打电话说要给送点厚衣服,好像确实有点冷.上午有考试,说自愿考,然后开到一半就没了,根本没人打啊,打了一道小园丁和老司机,一个一个部分分打,最后T了一 ...
- bzoj 3759 Hungergame 博弈论+线性基
和nim游戏类似 易证必败状态为:当前打开的箱子中石子异或和为0,没打开的箱子中不存在一个子集满足异或和为0 因为先手无论是取石子还是开箱子,后手都可以通过取石子来使状态变回原状态 所以只需判定是否有 ...
- BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割
BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...
- Opencv(C++)实现二阶线性插值
#include<opencv2\opencv.hpp> #include<iostream> using namespace cv; using namespace std; ...
- APP界面设计与页面布局的23条基本原则
一个App的好与不好,很大部分取决于移动App页面布局的合理性,优秀的布局顾名思义就是对页面的文字.图形或表格等进行排版.设计. 优秀的布局,需要对页面信息进行完整的考虑,既要考虑用户需求.用户行为, ...
- Mysql 上亿级数据导入Hive思路分享
前提条件: 数据库容量上亿级别,索引只有id,没有创建时间索引 达到目标: 把阿里云RDS Mysql表数据同步到hive中,按照mysql表数据的创建时间日期格式分区,每天一个分区方便查询 每天运行 ...
- SAP S4系统创建Customer和Vendor的BAPI
对应的BAPI是:RFC_CVI_EI_INBOUND_MAIN SAP 又调皮了,又不安常理出牌!
- 开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门
1.简介 mapbox是一家非常牛的公司,比如像特斯拉.DJI大疆创新.孤独星球.Airbnb.GitHub.Cisco.Snap.飞猪.Keep.Bosch这些在国内外各自领域中响当当的企业都是它的 ...
- Android 7.0 存储系统—Vold与MountService分析(三)(转 Android 9.0 分析)
Android的存储系统(三) 回顾:前帖分析了Vold的main()函数和NetlinkManager的函数调用流程,截止到NetlinkHandler的创建和start()调用,本帖继续分析源码 ...
- WebP 在减少图片体积和流量上的效果如何?MIP技术实践分享
作者 | Jackson 编辑 | 尾尾 不论是 PC 还是移动端,图片一直占据着页面流量的大头,在图片的大小和质量之间如何权衡,成为了长期困扰开发者们的问题.而 WebP 技术的出现,为解决该问题提 ...