MIPI包含很多通信协议,本章只讲述mipi用于显示接口的dsi(显示串行接口)。
MIPI-DSI分四层:应用层,协议层,通道管理层,物理层。如下图:
1、物理层功能
将通道管理层并行数据转换成串行数据发送,将接收到的串行数据转换成并行数据,传输给通道管理层。
2、物理信号
数据lane电平:
数据通道状态(数据lane状态):
可以看出数据通道,有6个状态:HS-0,HS-1,LP00,LP01,LP10,LP11.
其中HS-0表示高速模式下数据lane的Dp为低,Dn位高,LP01表示低速模式数据lane的Dp为低,Dn为高。
在系统上电开机后,LP11保持100us左右(硬件初始化),然后进入stop状态,模式是间的转换都要回到这个状态,一般控制状态也是LP11状态。模式之间的转换,将在后面描述。
电平识别
控制模式下电平识别:
Dp,Dn为0V就是逻辑0,为1.2V时,是逻辑1。LP10表示的就是Dp为1(1.2V),Dn为0(0V)
低速模式下电平识别:
Dp,Dn采取异或运算,如Dp是1.2V,表示1,Dn是0V,表示0,同时刻Dp,Dn异或等于1;当Dp是1.2V,表示1,Dn是1.2V,表示1,同时刻Dp,Dn异或等于0;
高速模式下电平识别:
高速模式下Dp,Dn是差分输出,在同时刻Dp比Dn高表示为1,Dp比Dn低表示为0(电压值对比)
3、物理层组织结构(架构)
物理层,简单来说,由时钟通道模块和数据通道模块组成。
物理层工作模式,有控制模式,ESCAPE模式,高速模式,TA模式。
4、时序
物理层一个很重要的,是对时序的处理,如下图(先把图放在这里,搞很清楚的时候再来写):
通道管理层,主要的功能就是,将要发送的数据,按照字节为单位(MIPI-DSI是按照字节传输的,从低位到高位),分配个各个数据lane上;将接收到的数据lane上的数据,恢复成原来的字节顺序。
看如下图,就很清除:
1、协议层功能
协议层主要功能是打包数据和解包数据,将数据通道管理层传输来的数据包,解包,传输到应用成;将应用层送来的数据,打包成数据包的形式传输到通道管理层。
2、数据包格式
短包大小4个byte,长包大小是6~65541 bytes(看WC的值)
数据标识:其中[5:0]表示数据类型,物理层会根据这个类型,发起模式间的转换。
3、ESCAPE模式
当进入ESCAPE模式后,还需要跟着发送1byte的命令,来进入ESCAPE下的不同模式。这个1byte是物理层,根据数据类型来自动发送的,协议层不管。
ULPS超低功耗模式,在进入ESCAPE后,发送00011110后,才能进入。(超低功耗模式时钟lane,数据lane都处于0V电平状态)
Trigger模式,是些控制作用,如发送01100010,是通知显示模块复位,当然还有其他的。如果显示模组有TE信号,应用层,会将TE信号转换成trigger命令形式返回给主机。
从主机到从设备的部分数据类型如下(以下数据类型都将触发,先发送11100001,后再发送表中的指令):
有带DCS的,DCS表示数据包中data0是命令(寄存器),后面可以有参数,或者没参数,根据要发送的命令或者寄存器情况,选择不同的命令。
不带DCS的,为一般读写命令,数据包中只有数据,没有命令和参数之分。
是DCS还是一般读写数据,都是有这6位的数据类型决定。
6位表示什么数据类型,都是MIPI-DSI协议规定的,不能改变。
4、高速模式下视频数据
高速模式下可分成三种模式:
上图顶部有圆弧的代表数据包,长方形的代表时序的状态。
如上图:
HSS表示行同步的起始点,HSE表示行同步结束点,HSS,HSE是协议层中一特殊数据
VSS表示帧同步起始点,VSE表示帧同步结束点,VSS,VSE是协议层中一特殊数据
HSA就是HSPW,BLLP就是VSPW,空数据(无效数据),只为同步
HBP就是HBPD,HFP就是HFPD,空数据(无效数据),只为同步
RGB就是就是有效显示区域的一行数据。
对于显示模组,协议层是将来自协议层的数据转化成DPI或者DBI供给显示模组,如果读,就是把来自显示模组DBI的数据,解析成一个数据,送到协议层。如下图:
图中SPI模块可以不管,在这里是配置时序的。
MIPI-DSI对于软件驱动工程师来说,重点是物理层和协议层。
参考资料:
基于MIPI_DSI协议的LCD驱动接口设计(很好的一篇论文)
mipi 调试经验
MIPI_DSI_Introduction
MIPI DSI协议介绍
MIPI及DSI协议介绍
MIPI-DSI 三种 Video Mode 理解
Mipi LP模式下数据通信协议详解-2014-12-20