MIPI DSI协议分析
MIPI DSI的协议分为:应用层、协议层、链路层、物理层。如下图所示:
MIPI协议
协议层和链路层属于MIPI DSI Host范畴,物理层属于D-PHY范畴。在kernel代码中,对应驱动代码如下所示:
./drivers/gpu/drm/rockchip/dw-mipi-dsi.c
./drivers/gpu/drm/i915/intel_dsi.c
./drivers/gpu/drm/tegra/dsi.c
./drivers/gpu/drm/drm_mipi_dsi.c
./drivers/gpu/drm/exynos/exynos_drm_dsi.c
./drivers/gpu/drm/gma500/mdfld_dsi_dpi.c
./drivers/gpu/drm/msm/dsi/dsi_host.c
./drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
基于DRM的图显系统中,MIPI DSI子系统主要由DSI CORE与PANEL CORE组成,二者内建连接关系及数据流传递,而后注册到DRM CORE系统。
为了厘清上图中MIPI DSI的软件代码功能,我们应该清楚MIPI DSI的工作流程和工作模式。
对于MIPI DSI控制器而言,通常支持Video模式和command模式,而这两种模式又离不开HS和LP模式。
Video和command模式更多的属于Host范畴,HS、LP模式更多的属于D-PHY范畴,因此,后面以此作为区分进行分析。
数据包传输模式
MIPI DSI Host工作于哪种模式,取决于MIPI DSI显示系统的硬件架构。需要注意的是,此处所述的模式是针对数据包传输而言。
Video模式
若CPU中集成了图显控制器,可配置为video和command模式。当然,这也符合大多数的应用场景。
Video mode架构
在这种硬件架构下集成了Host和D-PHY,基于HS模式进行图像数据的传输。Panel端被动的接收数据以实时显示图像。
在Video模式下又有2个子模式,分别是:
1. Burst Mode
burst下单行的像素数据构成一个数据包填充进发送FIFO,Host将FIFO内的数据包单次发送。
burst mode需要满足下面2个条件:
1)Host及接收端内部的FIFO可存储单行的像素数据。
2)DPI输入带宽要小于DSI输出端带宽。
2. Non-Burst ModeNon-Burst下单行像素数据被拆分成多个数据包,分多次进行发送。> Non-Burst Mode with Sync Pulses> Non-Burst Mode with Sync Events
对于Non-burst下的两种子模式的区别在于是否发送HSE,如下图所示:
通常来说,burst mode是video模式下的首选,因为在该种模式下,Host可以以很短的时间发送完数据包,以使得链路可以有更多的时间处于LP模式,达到了降低系统功耗的目的,如下图红色虚线框内所示:
burst mod
command模式
假设CPU内部没有集成图显控制器,那么Host是工作于command mode的,因为这种模式下需要一个双向的数据通信接口,所以,在这种模式下只能使用lane0。假设Host支持video mode,可能也会支持command mode。但这不是此章节所述重点。
command mode架构
在这种模式下,CPU端负责发送更新图像数据的命令。在这种模式下基于DBI接口,在MCU领域可能会见到这种架构。如下图所示:
Command mode架构举例
物理层lane模式
lane模式属于物理层D-PHY范畴的概念,当lane处于不同模式下时,其功耗是不一样的。HS mode功耗高,但此时传输的是图像像素数据,需要快速性、实时性。当处于LP mode时功耗低,但同样因为其时钟受限,它能传输的数据速率也低。
下文中会涉及到lane模式切换时各状态机的含义,因此,先将状态机编码贴出来。
各状态含义
HS模式
在HS模式下,信号采用差分结构,差分信号电压摆幅约为 200mV。
当工作于HS mode时数据以burst模式进行发送,数据传输的开始和结束均为控制模式,每个lane通道同时发送数据,但可能不同时结束。
HS模式下时钟和数据lane的状态机
LP模式
LP是MIPI DSI的一种低功耗模式,在该模式下可以基于很低的时钟速率发送数据和指令,也可以增加一些额外的命令码以触发特定的行为动作。
LP模式包括控制和脱离两种子模式。当初始化结束后,D-PHY工作于默认的控制模式,因此,这部分不做细讲。
通过发送特定的命令码使数据通道进入到Escape模式,当检测到最后一个编码00之后则进入Escape模式;而在之前收到11则退出当前Escape进入流程。进入到Escape模式的序列码如下:
# LP(Lower Power)
LP-11, LP-10, LP-00, LP-01, LP-00
进入到Escape模式后,通常会伴随1个8bit的命令。常用的命令码如下表所示:
命令码
基于Escape模式进入序列码以及Escape模式下的复位操作,其时序图概况如下:
Escape模式下的复位操作
基于以上介绍,数据lane模式切换的状态机如下图所示:
HS/LP模式状态机