MIPI DSI屏幕驱动实验
MIPI DSI屏幕目前广泛应用于手机、平板产品中,尤其是高清屏幕目前都是采用MIPI DSI接口,比如1080P、2K级的屏幕。MIPI DSI接口使用更少的线数,驱动更高分辨率的屏幕。
MIPI联盟简介
MIPI即移动产业处理器接口,是Mobile Industry Processor Interface缩写。
MIPI官方网址:Interface Specifications for Mobile Products | MIPI Allliance
MIPI联盟主要是为了移动处理器定制标准接口和规范,开发的接口广泛用于处理器、相机、显示屏、基带调制解调器等设备。比如:
MIPI DSI(显示屏接口)
MIPI CSI(摄像头接口)
MIPI I3C
MIPI RFFE(射频前端控制接口)
MIPI SPMI(系统电源管理接口)
等等。
屏幕,应用层有DSC, 协议层主要有DSI, 物理层有A-PHY/C-PHY/D-PHY。
摄像头,应用层有CCS, 协议层主要有CSI-2/CSI-3, 物理层有A-PHY/C-PHY/D-PHY。
D-PHY: 目前最多的使用接口,不管是摄像头还是屏幕,D-PHY接口为1/2/4lane(lane可以理解为通道,即1/2/4通道,每个通道2条差分线),外加一对时钟线,数据线和时钟线都是差分线,为电流驱动型,不同版本的D-PHY速度不同,其中V1.2版本的D-PHY单lane的速率最高可达2.5Gbps(使用deskew标准)。
C-PHY: 随着屏幕和摄像头的分辨率和帧率越来越高,D-PHY的带宽越来越不够用。C-PHY就应用而生,C-PHY接口是1/2/3 Trio, 每个Trio有3根线,最高9根线,没有专用的时钟线。
A-PHY: 主要是为自动驾驶汽车而生,汽车的屏幕和摄像头等分布分散,到主控的距离一般比较长。但是D-PHY和C-PHY的距离太短,最多不超过15CM,显示不适合车载领域。A-PHY用于长距离、超高速的汽车应用中,比如ADAS/自动驾驶系统(ADS)/车载信息娱乐系统(IVI)和其他环绕传感器。
M-PHY: 目前主要用于USF存储中。
MIPI DSI概述
DSI全称是Display Serial Interface, 是主控和显示器之间的串行连接接口。
MIPI DSI 分层
应用层:将要显示的数据打包进数据流中,下层会处理并发送应用层的数据流。
协议层:在原始数据的基础上添加ECC和校验和等数据。选择要发送的数据格式并给原始数据添加包头和包尾。
通道管理层:将打包好的数据分配到具体的通道上。
物理层:完成MIPI DSI数据在具体电路上的发送和接收。
MIPI DSI 物理层和D-PHY
D-PHY是一个源同步、高速、低功耗、低开销的PHY,特别适合移动领域。
D-PHY提供了一个同步通信接口来连接主机和外设,在实际使用中提供一对时钟线以及一对或多对信号线。时钟线是单向的,由主控产生,发送给设备。数据线根据配置可以有1~4lane,只有Data0这组数据线可以单向也可以双向,其它组都是单向的。
数据链路分为HS模式和LP模式。HS模式用来输出高速数据,比如屏幕像素数据。LP模式用来传输低俗的异步信号,一般是配置指令,屏幕的配置参数等。HS模式下每个数据通道速率为80~1500Mbps, 如果使用deskew标准,可以到2500Mbps, 最新版本的D-PHY支持的速率更高!LP模式下最高10Mbps。
D-PHY信号电平
Lane分为HS和LP两种模式,其中HS采用低压差分信号,传输速度高,但功耗大,信号电压幅度100mv~300mv, 中心电平200mv。LP模式下采用单端驱动,功耗小,速率低(<10Mbps), 信号电压幅度0~1.2v。在LP模式下只使用Lane0也就是数据通道0,不需要时钟信号,通信过程的时钟信号通过Lane0两个差分线异或得到,而且是双向通信。
数据Lane三种工作模式
D-PHY协议规定,通过Lane的不同状态转换有三种模式:控制模式、高速模式和Escape模式。
高速模式
高速模式用于传输实际的屏幕像素数据,采用Bursts传输方式。高速数据传输起始于STOP状态(LP-11),结束于STOP状态(LP-11)。
当数据传输请求发出后,数据Lane退出STOP模式进入到高速模式,顺序是:LP-11->LP-01->LP-00。然后发出一个SOT序列,SOT后跟着实际的负载数据,当负载数据传输结束后会紧跟一个EOT序列,数据线直接进入到STOP模式。
Escape模式
Escape模式是运行在LP状态下的特殊模式,在此模式下可以实现一些特殊的功能,我们给屏幕发送配置信息就需要运行在Escape模式下。数据线进入Escape模式的方式为:LP11->LP10->LP-00->LP01->LP00。退出Escape模式的方式为:LP00->LP10->LP11, 也就是最后会进入到STOP模式。
对于数据Lanes, 进入Escape模式以后,应该紧接着发送一个8bit的命令来表示接下来要做的操作。
在Escape模式下有3个可选指令:LPDT(Low-Power Data Trasmission)、ULPS(Ultra-Low Power State)和Remote-Trigger(主要做复位操作)。
LPDT命令
LPDT命令序列为:11100001,注意低bit先发送,所以对应十六进制就是0x87。我们在初始化MIPI屏幕的时候发送的初始化序列就需要用LPDT命令,LPDT命令序列后紧跟着就是要发送的数据。
ULPS命令
ULPS命令就是让Lane进入超低功耗模式。序列为:00011110,注意先发送低bit,所以对应十六进制就是0x78。
Remote-Trigger命令
此命令主要用于远程复位。序列为:01100010,注意低bit先发送,所以对应十六进制是0x46。
video和command模式
command模式
command模式一般针对屏端含有buffer的MCU屏幕,当画面有变化的时候,DSI Host端将数据发给屏幕,主控只有在画面需要更改的时候发送像素数据,画面不变化的时候屏幕驱动芯片从自己内部buffer里面提取数据显示,command模式下需要双向数据接口,一般此种模式的屏幕尺寸和分辨率不大,一般用于低端屏领域。
video模式
video模式屏端没有framebuffer, 需要主控一直发送数据给屏幕,和RGB接口屏类似。但是MIPI DSI没有专用的信号线发送同步信息,比如VSYNC、HSYNC等,所以这些控制信号和RGB图像数据已报文的形式在MIPI数据线上传输。
长短数据包
短数据包
固定4个字节,包括ECC。断包一般用于Command模式下发送命令和参数,但在实际中,video模式也用短包发送命令参数信息。
1个字节DI + 2字节数据 + 1字节ECC
长数据包
通过2个字节的WC指定负载长度,具体负载长度是0~65535字节,因此一个长数据包最多有65541个字节。
1个字节DI + 2个字节的WC + 1个字节的ECC + 65535个字节负载 + 2个字节校验和 = 65541字节
DI字节组成
bit7:6 这2bit表示虚拟通道
bit5:0 这6bit表示后面发送的负载数据类型