一、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)的更多相关文章

  1. LCD之mipi DSI接口驱动调试流程【转】

    转自:http://blog.csdn.net/liwei16611/article/details/68146912 1.LCD MIPI DSI协议 MIPI-DSI是一种应用于显示技术的串行接口 ...

  2. MIPI DSI 和 D-PHY 初始化序列

    MIPI DSI 和 D-PHY 初始化序列 -- 深圳 南山平山村 曾剑锋 参考文档: i.MX 6Dual/6Quad Multimedia Applications Processor Refe ...

  3. MIPI DSI协议介绍

    此文根据网上的资料翻译和整理而来 一.MIPI MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写.MIPI(移动行业处理器接口)是MIPI联 ...

  4. 【完整资料】TC358779XBG:HDMI转MIPI DSI芯片方案

    TC358779XBG是一颗HDMI1.4转MIPI  DSI带缩放功能的芯片,分辨率1920*1080,封装BGA80.通信方式:IIC,电源3.3/1.8/2.2,应用领域:平板,广告机,VR,显 ...

  5. 【详细资料】ICN6211:MIPI DSI转RGB芯片简介

    ICN6211功能MIPI DSI转RGB,分辨率1920*1200,封装QFN48

  6. 【详细资料】ICN6202:MIPI DSI转LVDS芯片简介

    ICN6202功能MIPI DSI转LVDS,分辨率1920*1200,封装QFN40

  7. TC358775XBG:MIPI DSI转双路LVDS芯片简介

    TC358775XBG是一颗MIPI DSI转双路LVDS芯片,通信方式:IIC/MIPI command mode,分辨率1920*1200,封装形式:BGA64.

  8. 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 ...

  9. HDMI转MIPI DSI芯片方案TC358779XBG

    型号:TC358779XBG功能:HDMI1.4转MIPI DSI通信方式:IIC分辨率:1920*1080电源:3.3/1.8/1.2封装形式:BGA80深圳长期现货 ,提供技术支持,样品申请及规格 ...

随机推荐

  1. C++中的内联函数和C中的宏定义的区别

    在C++中内联函数: 内联函数即是在函数的声明和和定义前面加上“inline”关键字,内联函数和常规函数一样,都是按照值来传递参数的,如果参数为表达式,如4.5+7.5,则函数将传递表达式的值(这里为 ...

  2. 关于linux下部署JavaWeb项目,nginx负责静态资源访问,tomcat负责处理动态请求的nginx配置

    1.项目的运行环境 linux版本 [root@localhost ~]# cat /proc/version Linux version -.el6.x86_64 (mockbuild@x86-.b ...

  3. CentOS7防火墙管理firewalld

    学习apache安装的时候需要打开80端口,由于centos 7版本以后默认使用firewalld后,网上关于iptables的设置方法已经不管用了,想着反正iptable也不太熟悉,索性直接搬官方文 ...

  4. Redis详解(二)------ redis的配置文件介绍

    上一篇博客我们介绍了如何安装Redis,在Redis的解压目录下有个很重要的配置文件 redis.conf (/opt/redis-4.0.9目录下),关于Redis的很多功能的配置都在此文件中完成的 ...

  5. 再谈ERP选型

    这几天收到老友的消息,谈及他们公司ERP选型的结果,基本上确定了使用Oracle EBS,因此闹了接近一年的选SAP还是选Oracle的纷争落下帷幕. 这家企业我去年曾去交流过,跟他们聊了一下ERP行 ...

  6. 使用Java实现二叉树的添加,删除,获取以及遍历

    一段来自百度百科的对二叉树的解释: 在计算机科学中,二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用 ...

  7. typecho设置文章密码保护

    在别人博客看到了一个需要输入密码才能访问文章的功能,像下图一样 typecho也是有这个功能,不需要插件就可以实现.在编辑文章时,右边高级选项,公开度里有个密码保护可以选择 效果图 不过这样的界面不是 ...

  8. Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!

    python3爬虫遇到了反爬 当你兴冲冲的打开一个网页,发现里面的资源好棒,能批量下载就好了,然后感谢写个爬虫down一下,结果,一顿操作之后,发现网站竟然有反爬措施,尴尬了. 接下来的几篇文章,我们 ...

  9. 景观指数分析 - 初识FragStats4.2

    引 言 FragStats景观格局分析软件 ,简单扼要地说就是景观指数的集成分析环境,不用自己编写相关的算法和读/取文件的开发.根据了解,FragStats(Fragment Statistic)官方 ...

  10. 一起学Android之Http访问

    概述 在Android开发中,一般通过网络进行访问服务器端的信息(存储和检索网络中的数据),如API接口,WebService,网络图片等.今天主要讲解Http访问的常用方法,仅供学习分享使用. 涉及 ...