文章目录

  • 前言
  • 一、DSI-2 简单介绍
    • 1.1 DSI 层次定义
    • 1.2 Command和Video模式
      • 1.2.1 Command模式
      • 1.2.2 Video 模式
      • 1.2.3 Virtual Channel Capability 虚拟通道特性
  • 二、DSI Physical物理层
    • 2.1 DSI 物理层D Option
      • 2.1.1 D-PHY 数据流向
      • 2.1.2 D-PHY Command模式接口
      • 2.1.3 D-PHY Video 模式接口
      • 2.1.4 D-PHY 时钟管理
    • 2.2 Multi-Lane数据合并与分发
      • 2.2.1 D-PHY 多条lane 互操作和Lane number 匹配性
      • 2.2.2 SoT 和EoT in multi-Lanes
    • 2.3 Multi-DSI Receiver 配置与DSI子链路
      • 2.3.1 Multi-DSI 接收器配置结构
      • 2.3.2 D Option Lane mapping
  • 三、DSI Protocal协议层
    • 3.1 Multiple Packets per Transmission
    • 3.2 Packet Composition & Packet 结构
    • 3.3 Endian Policy
    • 3.4 处理器到外设接口的Packet Data Types
  • 参考资料

前言

  • MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。是MIPI联盟发起的为移动应用处理器定制的开放标准,常用到的是DSI和CSI接口,其中DSI是显示接口,CSI是摄像接口。主要用于手机行业,比如手机处理器与摄像头、显示屏幕的连接,采用的都是MIPI接口。
  • DSI 它是一种显示技术的串行接口,兼容DPI(显示像素接口Display Pixel Interface), DBI(显示总线接口Display Bus Interface)和DCS(显示命令集中Display Command Set), 以串行的方式发送像素信息和指令外设,并且从外设中读取状态信息或像素信息。
  • DSI在传输过程中享有独立的通信协议,包括数据包格式和纠错检错机制。它有两种工作模式:一是高速模式(HS),而是低速模式(LS)。
  • DSI共有两种类型通道,一个是Data Lane数据通道,一个是Clock Lane时钟通道。
  • DSI 包类型有两种,长包和短保。其中Data ID表示由虚拟通常ID和数据类型组成,数据类型信息是指应用层所需要的数据格式;Data表示命令或者数据或者0;ECC表示可以纠正一位错误,可以检测两位错误;CheckSum 表示真的payload数据的校验和,起到检错的作用。
  • DSI数据通道:数据通道最多为4个,并且全部的数据通道都可以用于单向的高速传输,但是只有第一个数据通道才可以用于低速双向传输,从属端的状态信息、像素等格式通过该通道返回。
  • DSI时钟通道:专用于在高速传输数据的过程中传输同步时钟信号。此外一个主机端可以与多个丛机端进行通信。
  1. DSI-2 定义了两个高速串行数据传输接口。第一个高速数据传输接口是指的D-Option (The implementation of DSI-2 using D-PHY as the physical layer), 它一个高速差分接口,具有一个双线时钟通道和一个或多个双线数据通道。该物理层接口由MIPI联盟规范为D-PHY [MIPI04] 或[MIPI08]。图1说明了Host设备和外围设备之间D Option的连接。

    2.第二种是C Option(The implementation of DSI-2 using C-PHY as the physical layer)。包含了一个或者多个3线串行数据通道,每一个数据通道都有内嵌的时钟,图二表示的是Host设备和外围设备之间的C Option连接。外围设备通常是一个应用程序处理器和一个显示模块,这是移动电话引擎的一部分。当Lane 0处于LP模式时,Data0_B将被正在驱动Data0_A 和Data0_C的链路的同一端驱动为LP状态。

    本文将以D Option为例,做简单介绍。C Option请参考对应的Spec。

一、DSI-2 简单介绍

1.1 DSI 层次定义

1.物理层Physical Layer: PHY层指定了传输介质(电导体),以及串行bit流0/1机制。信号的电器参数、时钟和数据通路的时序关系等。
  在接收到低速发送请求时,逻辑电路将待发送的指令或数据串行化,并控制输出高摆幅低功耗点评进行低功耗传送,随后将指令或者数据串行的加载到通道,接收端则识别传送模式完成串并转换。
  在接收到高速请求后,电路发送高摆幅低功耗电平进行高速传送请求,然后将待发送数据经过串行转换之后驱动差分驱动模块,以低摆幅信号在通道上传送,接收端识别高速模式后正确地检测其同步信号完成串并转换。
  除此之外,总线控制权可在主机端与从属端之间交换,发送端发送放弃总线请求,接收端接收请求之后控制总线发起应答,总的过程为TA(turn around)操作。当主机端需要获取从属端接收数据的状况或者读取显示模块的参数或显示数据的时候,主机端发起TA操作,在从属端发送数据完毕之后自动发起TA操作,归还总线控制权。
2.通道管理层Lane Management: Lane是指一对差分对,数据线可以有1~4个Lane, 所以发送端需要把上层打包好的数据按照顺序一次发送到不同的Lane上,而在接收端要从不同的Lane上依次接收不同的数据并拼接起来,恢复原始数据。
3.协议层Protocal Layer: 采用数据包的形式进行传送,分为短数据包和长数据包两种格式,发送数据时,将数据按照信息类型和内容进行压包,完成ECC码生成和CRC添加,接收数据时,依据ECC和CRC码将整个数据包解析进行检错和纠错,完成对包头和数据内容的译码然后传送到应用层。
4.应用层: 描述了高层协议中对数据流进行编码和解码,其格式和内容主要按照显示子系统类型决定。可以由规定格式的像素组成或者是显示控制器发送的控制指令。

1.2 Command和Video模式

兼容DSI接口的外围设备至少要支持两种模式:command 模式和Video模式。至于实际使用的是哪种模式是外围设备来决定的。通常,外围设备兼容Command和Video模式,一些支持Video模式的显示模式也包含一个Command模式,从而可以用低分辨率图像来刷新屏幕和屏幕部分显示,关闭MIPI接口等。

1.2.1 Command模式

  • 主控制器和外围显示设备交换数据主要是通过发送命令和数据到外围设备的显示模块,该模块包含一个显示控制器,显示控制器包含本地寄存器和帧存储器,系统通过Command模式来读写本地寄存器和帧存储器。这样主控制器通过发送命令,参数和数据到显示控制器从而间接的来控制外围设备的显示。
  • 主控制器也可以读取显示模块的状态信息以及帧存储器的内容。所以Command模式下需要一个双向的数据接口。
  • 既可以是HS 模式也可以是LS传输模式,数据Lane_0是双向的,其他数据Lane是单向的。

1.2.2 Video 模式

  • 主控制器到外围设备的数据传输是以实时像素流的方式进行的。在正常操作模式下,主控制器必须以足够的带宽发送图像数据给显示模块,否则会出现闪屏,花屏等不良现象。video信息只能以高速HS模式进行发送。
  • 数据Lane0既可以是单向也可以是双向,其他Lane为单向的。
  • 在支持Video 模式的一些设备结构中,有的有一个简单的时序控制器和部分帧缓存器。有了这两个模块就可以使显示设备能维持部分屏幕显示或在待机时显示低分辨率图像以及处于Low Power Mode (低功耗模式)。这样就可以关闭MIPI接口以节约能耗。
  • 为了降低成本以及接口复杂度,系统只在Video 模式使用时,数据接口或许会被做成单向接口。

1.2.3 Virtual Channel Capability 虚拟通道特性

用来使一个主控制器可以同时连接多个物理显示模块。

二、DSI Physical物理层

2.1 DSI 物理层D Option

该部分主要介绍DSI物理层发送数据包格式,主控制器和外设之间的数据交换是用一个或多个串行数据信号和一个随路时钟进行传输,通过总线发送高速串行数据方式叫 HS transmission 或 burst。
当数据Lane没有收到数据时,接口进入LPS(Low Power State)状态。如下图数据结构,N代表发送数据的字节个数,每帧起始都有一个SoT, 随后发送N个字节数据,数据发完后发送EoT表示数据发送完成。

2.1.1 D-PHY 数据流向

DSI的物理链路层由1~4个数据lane和1个时钟lane组成。

  • Command模式系统中,数据lane0 是双向的,其它的数据lane是单向的;
  • Video 模式的系统中,数据lane0 既可以是双向的也可是是单向的,其它的数据lane是单向的。

不管是Command模式 还是Video 模式,时钟lane都是由主控制器驱动的,不能由外围设备驱动。正向由主控制器到外围设备Low Power 数据传输只用lane0,反相在数据lane0上的传输只能在Low Power 模式。外围设备必须能在Low Power和high speed下接收数据。

2.1.2 D-PHY Command模式接口

主控制器在command 模式下,物理层最低要求:

  • Data Lane Module: CIL-MFAA(HS-TX, LP-TX, LP-RX, and LP-CD)
  • Clock Lane Module: CIL-MCNN (HS-TX, LP-TX)

DSI外设操作在Command模式下,物理层最低要求:

  • Data Lane Module: CIL-SFAA (HS-RX, LP-RX, LP-TX, and LP-CD)
  • Clock Lane Module: CIL-SCNN (HS-RX, LP-RX)

双向链路应支持数据通道Lane_0的 Escape 模式,以支持读取数据的LPDT,以及外设发出的ACK和TE触发消息。在正向方向上,数据通道Lane_0应支持[MIPI04]或[MIPI08]中所述的LPDT。所有触发消息应通过数据通道Lane_0进行通信。

2.1.3 D-PHY Video 模式接口

主控制器在Video Mode,物理层最低要求是:

  • Data Lane Module: CIL-MFAN(HS-TX,LP-TX)
  • Clock Lane Module: CIL-MCNN(HS-TX,LP-TX)

外围主控制器在Video Mode,物理层最低要求是:

  • Data Lane Module: CIL-SFAN(HS-RX,LP-RX)
  • Clock Lane Module: CIL-SCNN(HS-RX,LP-RX)

2.1.4 D-PHY 时钟管理

DSI的时钟是由主控制器产生并发送到外围设备的,在某些系统中,它可以有多个用处:

  • DSI Bit Clock: 在数据接收侧,PHY Layer用该时钟来作为捕获串行数据的源同步时钟。在传输数据的时候,该时钟有效。
  • Byte Clock: 字节时钟,由DSI Bit Clock分频得到,用作协议层和应用层间数据交换时的字节时钟。在HS transmission,每个字节的数据都伴随有一个字节时钟。
  • Application Clock: 应用层时钟,同样由DSI Bit Clock分频得到,可以用来作为外围设备某些模块的时钟。

2.2 Multi-Lane数据合并与分发

Multi-Lane Distribution and Merging N条数据lane时,数据的分发与合并。为了传输不同带宽数据,最多有4条Lane可以分发数据,这样当有多条数据lane时,就涉及到把上层low level protocol中打包好的数据 怎么分发到多条lane进行传输,而DSI层级中的Lane Management就是做这个数据分发到不同lane的工作的。
发送端:
数据通过该模块分发到各lane的操作如下图所示:

接收端:
Lane分发器接受一个任意字节长度的HS传输,缓冲N字节(其中N是接口中实现的Lanes),并在N个Lanes上并行发送一组N个字节的分组。所有的lane并行执行SoT序列,以便向它们对应的接收单元指示数据包的第一个字节开始。在SoT之后,Lanes从开始并行发送第一个包(N个字节),遵循一个循环过程。例如,在双通道系统中,0字节进入0通道,1字节进入1通道,2字节进入0通道,3字节进入1通道,以此类推。

2.2.1 D-PHY 多条lane 互操作和Lane number 匹配性

所使用的Lanes的数量应该是一个静态参数。在系统设计或初始配置时确定,不得动态更改。通常,外围设备的带宽需求及其相应的Lane配置决定了系统中使用的Lane的数量。主机处理器应配置为支持外设所需的相同数量的通道。具体来说,具有N通道能力的主机处理器(N >1)应能够使用较少的Lanes,以确保与拥有M个Lanes的外围设备的互操作性,其中N > M。图9说明了对于双通道接收端要求。

2.2.2 SoT 和EoT in multi-Lanes

因为HS transmission 的长度是任意多个字节,所以长度有可能不是lane的整数倍,某些lane可能会先发送完数据。因此,在Lane Management Layer这一层,它会把数据填充到长度为Lane的整数倍长度,同时把valid拉低,表示此时发送的数据无效。比如: HS发送长度178字节的包,3条数据lane, 这样lane management Layer就会填充两个字节的数据,使Lane的长度是lane条数的整数倍。

尽管所有的Lane都是同时发送SoT并行发送数据,因为每条Lane都是独立的发送数据,这样就有可能有一些Lane是先发送完数据。早一个周期发送EoT,下图是2个Lane不同HS transmission 方式:

2.3 Multi-DSI Receiver 配置与DSI子链路

2.3.1 Multi-DSI 接收器配置结构

通过D选项或C选项的DSI子链路拆分DSI链路(split Link)。这个配置选项允许一个DSI发射器分裂成两个、三个或四个子链路,共享一个共同的逻辑时钟。使用一个通用的逻辑时钟通常可以使单独的子链路和一个DSI 发射器之间的偏差最小化,并增加一个DSI发射器支持的DSI链路连接的数量。在一个应用程序处理器中,分割DSI链路可以增加连接到一个DSI发射器的DSI接收器的数量。随着面板分辨率的增加,需要多个DSI链路,以便在不添加单独的DSI链路的情况下将显示流路由到面板的单独的部分。不同于第4节,图1中DSI发射器和DSI接收器之间有一对一的关联,多接收器配置通常用于连接一个DSI发射器到一个显示面板,面板模块包含多个DSI接收器,由于扇出原因,将显示数据路由到面板的不同部分。实施者可以持这样一个面板,既可以在发射器中使用多个单独的DSI链路,也可以更灵活地使用一个 DSI发射器块创建DSI子链路(见图18)。

多接收器的配置如图19、图20、图21和图22所示。

  1. 具有两个lane的DSI链路可以只分裂成两个DSI子链路;每个子链路有一个DSI Lane,共享公共逻辑DSI时钟。图19演示了这个带有两个DSI Receiver的多个DSI Receiver配置。请注意,图19中显示的Lane号引用了DSIReceiver。如果子链路中的DSI发射器和DSI接收器包括LP模式Lane reversal,则该子链路的Lane0 也支持Lane reversal。

  1. 4个Lane的DSI link 可能分成并行的两个lane,每一个lane共用同一个DSI Clock

2.3.2 D Option Lane mapping

字节到lane映射适用于子链路。单Lane子链路以字节顺序传输字节流,双Lane子链路以与双Lane DSI链路相同的方式,将奇字节和偶数字节交替传输到 Lanes 0和1。

在子链接上映射bit流遵循相同的准则,就像DSI链接。应用程序处理器将未压缩的像素数据或压缩的bit流发送到适当的DSI 发送器或配置了DSI子链路的DSI发送器。DSI发送器上游应用处理器内的消息和控制信号不在本规范的范围之内。

三、DSI Protocal协议层

在DSI接口的发送端,并行图像数据都是在Protocol Layer被转换成数据包形式的。同时,会添加上包协议信息,包头。然后通过Lane Management Layer 层把它发送到PHY Layer。然后PHY Layer把数据串行化,通过lane发送到外围设备。外围设备采样跟发送端相反的方式把数据解析出来。如果用多条lane传输数据,Lane Management Layer 会把数据包分发到多个PHY Layers,一个PHY Layer对应一条数据lane。图像数据打包的协议和格式跟使用几条lane传输是没有关系的。lane只是一个物理传输介质而已。

3.1 Multiple Packets per Transmission

最简单的传输模式是 一个Transmission 只包含一个数据包,但当有多个数据包要发送时,还是一个Transmission 发送一个包,这样发送时,在LPS和HS 模式频繁地切换会严重地限制发送带宽。

DSI Protocol 允许把多个数据包连接起来放在一个Transmission中发送,这样就会显著地提升有限带宽。PHY Layer有HS和LP两种数据传输模式,在一个HS Transmission开始前,PHY Layer先发送一个SoT序列到接收端,之后,数据或命令包才能在HS mode下传输。在一个Transmission 发送中有可能有多个数据包,这时,在结束传输时,PHY Layer发送一个专用的EoT结束信号,表示传输结束。

为了增强整个系统的健壮性,DSI在Protocol Layer中定义了一个专用的EoT包(EoTp),用来表示一个Transmission的结束。为了兼容早起的DSI系统,产生和解释EoTp的功能可以使能和不使能。下图是EoTp不使能的情况,上半部分是3个数据包被分开发送的情况,下半部分是3个数据包在一个Transmission发送的情况。下图为EoTp disable情况:

下图是EoTp使能的情况,上半部分是3个数据包被分开发送的情况,下半部分是3个数据包在一个Transmission发送的情况。红色圈出来的就是EoTp包。

3.2 Packet Composition & Packet 结构

数据包分为短数据包和长数据包两种类型。
1.短数据包:长度为4个字节,主要用于传输命令、读写寄存器,结构如下图所示。

  • DI: 数据标识符,1个字节,[B7:B6]表示虚拟通道(0-3),由于一个主控制器可以外接多个外围设备(最多4个),所以用虚拟通道来表示外接的不同的外围设备。
  • Data0,Data1:2个字节,表示要传输的数据
  • ECC: 1个字节,误差校正码

2.长数据包,有效负载长度为0-65535个字节,主要用用于传输大量图象数据或部分控制命令,结构如下图所示。

  • DI:数据标识符,1个字节,[7:6]表示虚拟通道对应数据lane编号(0-3),[5:0]表示数据类型。
  • WC:word count ,2个字节,包中有效负载长度,由于位宽是16位,所以,最大可以表示65535个字节长度,接收方就是通过该数据长度进行计数,判断一个包是否接收完成。
  • Data 0,1……: 有效负载。
  • ECC:1个字节,误差校正码。
  • CHECKSUM:2个字节,校验码
    所以帧长度为4+(0-65535)+2=6~65541字节

3.3 Endian Policy

所有数据包数据都以字节的形式遍历接口。发送器依次先发送数据LSB,后发送msb。对于具有多字节字段的数据包,最低有效字节应首先传输,除非另有规定。图32显示了一个完整的长数据包数据传输。注意,该图以标准位置表示法显示字节值,而bit则按时间顺序显示,LSB在左边,MSB在右边,时间从左到右递增。

3.4 处理器到外设接口的Packet Data Types

下面是给出的6位宽的data type含义,用来表示该包传输的数据类型或命令等,比如data type=0x01,发送该类型的包,就表示场同步信号开始标志。


下图中的(0x1E)Packed Pixel Stream 18-Bit Format (Packed)是一个长数据包。用于将RGB像素格式的图像数据传输到显示18位像素的Video Mode显示模块。该数据包由DI字节、两个字节的WC字节、一个ECC字节、一个长度为WC字节的Payload字节和一个两个字节的Checksum组成。像素格式按此顺序是红色(6位)、绿色(6位)和蓝色(6位)。在颜色组件中,LSB先发送,MSB最后发送。

参考资料

MIPI alliance Specification for Display Serial Interface 2 (DSI-2)
https://blog.csdn.net/caihaitao2000/article/details/80224976
https://blog.csdn.net/huan09900990/article/details/78269370

MIPI DSI-2 协议解析相关推荐

  1. MIPI DSI协议介绍

    原文地址:http://blog.csdn .NET/qq160816/article/details/19555957 一.MIPI MIPI(移动行业处理器接口)是Mobile Industry ...

  2. MIPI DSI之DBI DPI含义和区别(3-1)

    一.MIPI MIPI(Mobile Industry Processor Interface/移动工业处理器接口)是2003年由ARM.Nokia.ST 等公司成立联盟并为移动应用处理器制定的一个开 ...

  3. Linux的lcd的mipi接口,LCD MIPI DSI简析系列之二【转】

    MIPI DSI 协议标准支持两种模式:Command模式和Video模式. 1 Command 模式 只有当LCD面板带有显示控制器和帧缓冲区的时候才能使用Command模式.数据传送的格式一般是在 ...

  4. 全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853

    1 概述 编写目的 本文档将介绍sunxi 平台Display Engine 模块中LCD 的调试方法. LCD 调试方法,调试手段. LCD 驱动编写. lcd0 节点下各个属性的解释. 典型LCD ...

  5. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

  6. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  7. wireshark协议解析器 源码分析 封装调用

    源码分析 Wireshark启动时,所有解析器进行初始化和注册.要注册的信息包括协议名称.各个字段的信息.过滤用的关键字.要关联的下层协议与端口(handoff)等.在解析过程,每个解析器负责解析自己 ...

  8. wireshark协议解析器原理与插件编写

    工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...

  9. SGS 0.9.7 协议解析

    SGS as客户端发送数据规则: sgs 是0.9.7版 协议规则:  包头3个字节: 包大小(2个字节),命令(1个字节)  数据包  注意:包大小=命令+ 数据包 的大小 登陆命令:   命令是: ...

  10. 简易HTTP协议解析

    首先介绍一些必要的知识点. TCP协议为操作系统底层协议,能够保证应用层获取到完整的.顺序一直的包序列.但TCP不提供具体的分包,需要上层协议自己解决.TCP发送给上层协议的数据是一个没有意义的字符串 ...

最新文章

  1. 10分钟内基于gpu的目标检测
  2. Http和Socket连接区别(ZT)
  3. java事件处理模型_从零开始理解JAVA事件处理机制(3)
  4. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
  5. RRDTool原理简介
  6. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp
  7. mysql 单例模式好处_PHP单例模式的优点分析
  8. ASP.NET MVC学习之路由篇(2)
  9. 2022-03-22
  10. 图像处理之边缘检测概述
  11. Game with Telephone Numbers
  12. emmet使用(HTML)
  13. python中o_Python O
  14. request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别
  15. 鸿蒙os系统测评,鲁大师测试鸿蒙OS2:应用恢复率吊打iOS
  16. mysql innodb 缓存设置_数据库分享一: MySQL的Innodb缓存相关优化
  17. 第五十篇、OC中常用的第三插件
  18. 批处理计算n天前\后的日期
  19. 基于掷色子规则的c语言编程,掷骰子游戏-C语言
  20. 数据库原理及应用-李唯唯主编-实验3-3

热门文章

  1. Apache Flink 零基础入门(四):客户端操作的 5 种模式
  2. 西数trex自动版u盘版_当移动硬盘遇上它,改变生活:西数My Passport随行版
  3. 管理:重要性影响力方格
  4. (MATLAB)大家来找茬-简易的彩色图像找不同
  5. VUE 3文件上传 Change事件无效 和 unsupported media type 415
  6. ubuntu-20.04.3-详细安装教程(图文)附下载地址
  7. LVS负载均衡器的原理简单介绍
  8. uniapp 微信小程序 分片 断点续传 大文件上传
  9. java反向代理开源_树莓派反向代理方法大全
  10. 本地运行Flink-DIMAPP出现问题