MIPI DSI(三) MIPI DSI 物理层和 D-PHY
MIPI DSI 的物理层也叫 PHY 层,前面说了 MIPI 有 C-PHY、D-PHY 等,只是在 MIPI
DSI 领域 D-PHY 用的最多,所以这里可以简单的认为 MIPI DSI 物理层说的就是 D-PHY,本
文后面统一用 D-PHY 来表示 MIPI DSI 的物理层。
D-PHY 是一个源同步、高速、低功耗、低开销的 PHY,特别适合移动领域。D-PHY 主要
用于主处理器的摄像头和显示器外设,比如 MIPI 摄像头和屏幕。D-PHY 提供了一个同步通信
接口来连接主机和外设,在实际使用中提供一对时钟线以及一对或多对信号线。时钟线是单向
的,由主控产生,发送给设备。数据线根据实际配置,可以有 1~4 Lane,只有 Data0 这一组数
据线可以是单向也可以是双向的,其他组的数据线都是单向的。
数据链路分为 High-Speed 模式和 Low-Power 模式,也就是常说的 HS 和 LP。HS 模式用
来传输高速数据,比如屏幕像素数据。LP 模式用来传输低速的异步信号,一般是配置指令,
屏幕的配置参数就是用 LP 模式传输的。HS 模式下每个数据通道速率为 80~1500Mbps,如果
使用 deskew 校准,可以到 2500Mbps,最新版本的 D-PHY 支持的速率更高!LP 模式下最高
10Mbps。
什么是 Lane
我们前面已经提了很多次“Lane”这个词,英文直译过来就是:航道、跑道。在这里就是
在主控与外设直接传输数据的通道,MIPI DSI 包括一个时钟 Lane 和多个数据 Lane,每条
Lane 使用 2 根差分线来连接主控和外设。收发端都有对应的 Lane 模块来处理相关的数据,一
个完整的 Lane 模块如图所示:

通用的 Lane 模块
从上图可以看出,一个通用的 Lane 模块,包括一个高速收发器和一个低速收发器, 其中高速收发器有 HS-TX、HS-RX,低速收发器有 LP-RX 和 LP-TX,以及一个低速竞争检测 器 LP-CD。实际的 Lane 模块是在上图中简化而来的,比如对于高速单向数据通道,可能 只有 HS-TX 或者 HS-RX。
D-PHY 信号电平
Lane 分为 HS 和 LP 两种模式,其中 HS 采用低压差分信号,传输速度高,但是功耗大,
信号电压幅度 100mv~300mV,中心电平 200mV。LP 模式下采用采用单端驱动,功耗小,速
率低(<10Mbps),信号电压幅度 0~1.2V。在 LP 模式下只使用 Lane0(也就是数据通道 0),不需
要时钟信号,通信过程的时钟信号通过 Lane0 两个差分线异或得到,而且是双向通信。HS 和
LP 模式下的信号电平如下图所示

HS 和 LP 模式信号电平
图中蓝色实线是 LP 模式下的信号波形示例,电压为 0~1.2V。绿色虚线是 LP 模式下信号
的高低电平门限。红色实线是 HS 模式下的信号波形示例,中心电平 200mV。
通道状态
上面说了 HS 模式下是单向差分信号,主控发送(HS_TX),外设接收(HS_RX)。而 LP 是
双向单端信号,接收和发送端都有 LP_TX 和 LP_RX,注意只有 Lane0 能做 LP。
由于 HS 采用差分信号,所以只有两种状态:
HS-0:高速模式下 Dp 信号低电平,Dn 信号高电平的时候。
HS-1:高速模式下 Dp 信号高电平,Dn 信号低电平的时候。
LP 模式下有两根独立的信号线驱动,所以有 4 个状态:
LP-00:后面的“00”对应两根信号线的电平状态,第 1 个 0 表示 Dp 为低电平,第 2 个
0 表示 Dn 为低电平。如果是高电平,那么就为 1。因此 LP 模式剩下的三个状态就是 LP-01、
LP-10 和 LP-11。
这 6 种状态对应的功能如图所示:

6 种状态切换
通过这 6 个状态的转换,D-PHY 就能工作在不同的工作模式。
数据 Lane 三种工作模式
D-PHY 协议规定了,通过 Lane 的不同状态转换有三种工作模式:控制模式、高速模式和
Escape 模式。控制模式和 Escape 模式都属于 LP,高速模式属于 HS。正常情况下,数据 Lane
工作在控制模式或者高速模式下,
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 模式。下图是一个基础的高速传输结构示意图:

基础的高速数据传说结构体
上图只是展示了一条 Lane,负载数据前面是一个 SoT,传输完成以后紧跟一个
EoT,中间就是实际的负载数据。
一个完整的高速模式数据传输时序如下图所示:

高速数据传输时序
图中左侧蓝色部分是进入 HS 模式,要从 LP-11→LP01→LP-00,然后数据线进入到 HS 模式,也就是中间红色部分,传输实际的数据。传输完成以后重新进入到 LP-11(STOP)模式,也就是右边的蓝色部分。
2、Escape 模式
Escape 是运行在 LP 状态下的一个特殊模式,在此模式下可以实现一些特殊的功能,我们
给屏幕发送配置信息就需要运行在 Escape 模式下。数据线进入 Escape 模式的方式为:LP-11
→LP-10→LP-00→LP-01→LP-00。退出 Escape 模式的方式为:LP-00→LP-10→LP-11,也就是
最后会进入到 STOP 模式,进入和退出 Escape 模式的时序如下图所示:

Escape 模式进入和退出
对于数据 Lanes,进入 Escape 模式以后,应该紧接着发送一个 8bit 的命令来表示接下来要
做的操作,命令如图所示:

Escape 模式命令
从上图可以看出,有三个可选的命令:LPDT(Low-Power Data Transmission)、 ULPS(Ultra-Low Power State)和 Remote-Trigger(这里没有写错,因为这个命令大部分做复位操 作,所以有些资料将这个命令也叫做 Remote-Trigger)。
1)、LPDT 命令
图中第一个就是 LPDT 命令,命令序列为 11100001,注意低 bit 先发送,所以对
应的十六进制就是 0X87(0X10000111)!LPDT 直译过来就是低功耗数据传输,我们在初始化
MIPI 屏幕的时候发送的初始化序列就需要用 LPDT 命令,后面会给大家看逻辑分析仪采集到
的实际数据。LPDT 命令序列后面紧跟着就是要发送的数据,分为长包和短包两种,长短包结
构后面会详细讲解。
2)、ULPS 命令
ULPS 命令是让 Lane 进入超低功耗模式。
3)、Remote-Trigger 命令
注意,这里大家可能会疑惑,有的资料叫做 Remote-Trigger,有的叫做 Reset-Trigger,其
实都是一个东西。因为本质是 Remote Application,但是做的是 Reset 的工作,所以就产生了
两种叫法,目前此命令就是用于远程复位。
Escape 模式下发送这三个命令的时序图如图所示:

Escape 模式下各命令时序图