MIPI DSI协议简介与要点备忘
MIPI DSI(Display Serial Interface)协议简述
简述
MIPI 主要应用( DSI 应用于屏幕,CSI 用于摄像头 ):
摄像头,应用层有 CCS,协议层主要有 CSI-2、CSI-3,物理层有 A-PHY、C-PHY、D-PHY和 M-PHY。
屏幕,应用层有 DCS,协议层主要有 DSI,物理层有 A-PHY、C-PHY、D-PHY。
D-PHY:当前摄像头和屏幕用的最多的接口。D-PHY 接口为 1 – 4lane(lane 可以理解为通道,也就是 1/2/3/4 通道,每个通道 2 条差分线),外加一对时钟线,数据线和时钟线都是差分线,为电流驱动型,不同版本的 D-PHY 速度不同。D-PHY 最多 10 根线,有专门的时钟线来进行同步。
C-PHY:随着屏幕和摄像头的分辨率以及帧率越来越高,D-PHY 的带宽越来越不够用。C-PHY 应运而生,C-PHY 接口是 1/2/3 Trio,每个 Trio 有 3 根线,最高 9 根线,没有专用的时钟线。C-PHY 目前手机芯片可能使用到。
A-PHY:主要为汽车自动驾驶而生,由于C-PHY 和 D-PHY 的距离太短。A-PHY 于 2020 年 9 月发布,用于长距离、超高速的汽车应用中。
M-PHY:目前主要用在 USF 存储中。
正题开始,MIPI DSI协议简单的备忘笔记:
MIPI DSI接口分为数据线和时钟线,均为差分信号。数据线可选 1 – 4 对,时钟线只有 1 对,常用的 MIPI 接口有 2 Lane 和 4 Lane 。( Lane 数量越多所支持的分辨率和帧率越高,带宽越大;反之亦然。)
1. D-PHY
1.1. D-PHY 电平
Lane 分为 HS 和 LP 两种模式,其中 HS 采用低压差分信号,传输速度高,但是功耗大,信号电压幅度 100mv~300mV,中心电平 200mV。LP 模式下采用采用单端驱动,功耗小,速率低(<10Mbps),信号电压幅度 0~1.2V。在 LP 模式下只使用 Lane0(也就是数据通道 0),不需要时钟信号,通信过程的时钟信号通过 Lane0 两个差分线异或得到,而且是双向通信。(注:4 对 Lanes 中只有 Data0 可以双向传输,只有 Lane0 可以 LP 模式)。
1.2. 不同模式的通道状态
HS 模式下是单向差分信号,主控发送(HS_TX),外设接收(HS_RX)。而 LP 是双向单端信号,接收和发送端都有 LP_TX 和 LP_RX。
HS 采用差分信号,只有两种状态:
- HS-0:高速模式下 Dp 信号低电平,Dn 信号高电平的时候
- HS-1:高速模式下 Dp 信号高电平,Dn 信号低电平的时候
LP 模式下有两根独立的信号线驱动,有 4 个状态:
- LP-00:“ 00 ”代表两个信号线的电平状态。(因此还有 LP-01、LP-10、LP-11 )
以上6中状态转换,D-PHY就可以切换不同工作状态,如下表:
1.3. 数据Lane的工作模式
首先,Lane 分为 HS 和 LP 模式,但根据不同工作状态 Lane 有三种工作模式:控制模式、高速模式和 Escape 模式。其中 控制模式和 Escape 属于 LP 模式,高速模式属于 HS 模式。一般情况下,数据 Lane 工作在控制模式和高速模式下。
1.3.1. 高速模式
高速模式用于传输实际的屏幕像素数据,采用突发(Bursts)传输方式。为了帮助接收端同步,需要在数据头尾添加一些序列,接收端在接收到数据以后要把头尾去掉。高速数据传输起始于STOP 状态(LP-11),也终于 STOP 状态(LP-11)。在高速模式下传输数据的时候Lane始终 工作在 HS 模式,提供 DDR 时钟,也就是双边沿时钟,在时钟频率不变的情况下,传输速率提高一倍,这样可以有效利用带宽。
当数据传输请求发出以后,数据 Lane 退出 STOP 模式进入到高速模式,顺序是:LP-11→
LP-01→LP-00。然后发出一个 SOT 序列(Start-of-Transmission),SOT 后面跟着的就是实际的负
载数据。当负载数据传输结束以后会紧跟一个 EOT 序列(End-of-Transmission)序列,数据线直接
进入到 STOP 模式。示意图如下:
完整的高速模式数据传输时序如图:
左侧蓝色部分是进入 HS 模式,要从 LP-11→LP01→LP-00,然后数据线进入到 HS 模式,也就是中间红色部分,传输实际的数据。传输完成以后重新进入到 LP-11(STOP)模式,也就是右边的蓝色部分。
1.3.2. Escape 模式
Escape 是运行在 LP 状态下的一个特殊模式,该模式下可以给屏幕发送配置信息。进入 Escape 模式的方式为:LP-11→LP-10→LP-00→LP-01→LP-00。退出 Escape 模式的方式为:LP-00→LP-10→LP-11,也就是最后会进入到 STOP 模式。时序如下:
Code便是对应的操作(8bit),有三种命令LPDT(低功耗数据传输)、ULPS(超低功耗数据传输) 和 Reset-Trigger(远程复位) ,命令如下表(注:低bit先发送,例 LPDT命令序列为11100001,对应的十六进制为0x87(0x10000111)初始化 MIPI屏幕的时候发送的初始化序列就需要用 LPDT 命令) :
2. video 和 command 模式( 链路层 )
MIPI DSI 的链路层有两种模式:video(视频)和 command(命令)模式,属于 HOST 端。
command 模式
ommand 模式针对那些含有 buffer 的 MCU 屏幕,当画面有变化的时候,DSI Host 端将数据发给屏幕,主控只有在画面需要更改的时候发送像素数据,画面不变化的时候屏幕驱动芯片从自己内部 buffer 里面提取数据显示,command 模式下需要双向数据接口。一般此种模式的屏幕尺寸和分辨率不大。
video 模式
video 模式没有 framebuffer,需要主控一直发送数据给屏幕,和 RGB 接口屏幕类似。但是 MIPI DSI 没有专用的信号线发送同步信息,比如 VSYNC、HSYNC 等,所以这些控制信号和 RGB 图像数据以报文的形式在 MIPI 数据线上传输。
3. 数据包
在 MIPI DSI 的数据传输中,不管是并行数据、信号事件还是命令,都需要按照协议打包成数据包。按照规定的协议添加头尾等信息,然后通过数据 Lane 将打包好的数据发送出去。如一次传输只发送一个数据包,那么在传输多个数据包就会花费大量的开销在 LPS 和 HS切换上,这样会严重的浪费带宽。为此,MIPI DSI 协议允许在一次传输中可以串行的发送多个数据包,这样就可以大幅的提高带宽利用率,这对于像外设初始化这种操作非常有益,比如我们在初始化屏幕的时候会发送大量的初始化命令。
数据包第一个字节是 DI(Data Identifier),用来指定当前数据包的含义,数据包 一共有两种数据包:
LPDT 命令+具体的配置参数来完成向 MIPI 屏幕发送初始化参数的操作。但是并不是直接在 LPDT 命令后面跟着发送想要的时序参数就行了,而是要按照上面说的 MIPI DSI 格式将时序参数打包成长短数据包发送出去。
作者:Fearlessness