MIPI-DSI 协议深度解析-简单易懂协议详解

1. MIPI
MIPI(移动行业处理器接口)是 Mobile Industry Processor Interface 的缩写。MIPI(移动行
业处理器接口)是 MIPI 联盟发起的为移动应用处理器制定的开放标准。
• DCS (DisplayCommandSet):DCS 是一个标准化的命令集,用于命令模式的显示模组。
• DSI, CSI (DisplaySerialInterface, CameraSerialInterface • DSI 定义了一个位于处理器和显示模组之间的高速串行接口。
• CSI 定义了一个位于处理器和摄像模组之间的高速串行接口。
• D-PHY:提供 DSI 和 CSI 的物理层定义

DSI 分四层,对应 D-PHY、DSI、DCS 规范、分层结构图如下:
• PHY 定义了传输媒介,输入/输出电路和和时钟和信号机制。
• Lane Management 层:发送和收集数据流到每条 lane。 • Low Level Protocol 层:定义了如何组帧和解析以及错误检测等。
• Application 层:描述高层编码和解析数据流。
MIPI-DSI 协议深度解析-简单易懂协议详解_第1张图片
2. 操作模式
数据Lane有三种操作模式: Escape mode, High-Speed(Burst) mode,及 Control mode。
• MIPI的HS模式(0.2V),传送图像数据,速度为80Mbps ~ 1000Mbps;
• MIPI的LP模式(1.2V),可以用于传送控制命令,最高速度为10Mbps;
• MIPI规定,任一个MIPI设备必须具有Escape Mode,此为LP模式(低功耗模式)中的一种,此模式下可低速传输图像或其他数据。
2.1 从控制模式的停止状态开始的可能事件有:
• Escape mode request (LP-11→LP-10→LP-00→LP-01→LP-00)
• High-Speed mode request (LP-11→LP-01→LP-00)
• Turnaround request (LP-11→LP-10→LP-00→LP-10→LP-00)
2.2 Escape mode是数据Lane在LP状态下的一种特殊操作
• 在这种模式下,可以进入一些额外的功能:LPDT, ULPS, Trigger
• 数据Lane进入Escape mode模式通过LP-11→LP-10→LP-00→LP-01→LP-00
• 一旦进入Escape mode模式,发送端必须发送1个8-bit的命令来响应请求的动作,0x87(LPDT),0x78(ULPS), 0x45(Trigger)。
• Escape mode 使用Spaced-One-Hot Encoding
2.3 超低功耗状态(ULPS, Ultra-Low Power State)
•这个状态下,lines处于空状态 (LP-00)
• 时钟Lane的超低功耗状态
•时钟Lane通过LP-11→LP-10→LP-00进入ULPS状态
•通过LP-10 → TWAKEUP →LP-11退出这种状态,最小TWAKEUP时间为1ms
2.4 高速数据传输 (High-Speed(Burst) mode)
•发送高速串行数据的行为称为高速数据传输或触发(burst)
•全部Lanes门同步开始,结束的时间可能不同。
•时钟应该处于高速模式
2. 5 各模操作式下的传输过程

•进入Escape模式的过程 :LP-11→LP-10→LP-00→LP-01→LP-00→Entry Code → LPD (10MHz)
•退出Escape模式的过程:LP-10→LP-11

•进入高速模式的过程:LP-11→LP-01→LP-00→SoT(00011101) → HSD (80Mbps ~ 1Gbps)
•退出高速模式的过程:EoT→LP-11

•控制模式 - BTA 传输过程:LP-11→LP-10→LP-00→LP-10→LP-00
•控制模式 - BTA 接收过程:LP-00→LP-10→LP-11
PS:(1)BTA:总线控制权可在主机端与从机端之间交换,发送端发送放弃总线请求,接收端接收请求之后
控制总线发起应答,总的过程为BTA(turn around)操作。(2)Escape mode 和 High-Speed(Burst) 
mode之间的状态转换,必须通过BTA模式,不可直接转换。(3)每个字节都是低位先传,多字节元素(16位计
数值、 16位CRC)也是低字节低位先传。

MIPI-DSI 协议深度解析-简单易懂协议详解_第2张图片

• 状态转换关系图
MIPI-DSI 协议深度解析-简单易懂协议详解_第3张图片
3. 帧结构
MIPI帧分为短帧(固定长度:4 bytes)和长帧(可变长度:6~65541 bytes)两种.
3.1 短帧
• 短帧只包含一个32位(4Byte)包头;
• 包头格式:包头由8位数据标志符(DI)+ 16位Data(或称为计数值 Data/WC) + 8位错误检测(ECC)构成;
• 可作为帧同步短包:每帧图象必须开始于帧开始包(SoF, FRAME START PACKET),结束于帧结束包(EoF, FRAME END PACKET)。
MIPI-DSI 协议深度解析-简单易懂协议详解_第4张图片
MIPI-DSI 协议深度解析-简单易懂协议详解_第5张图片

• 数据标识(DI,1byte):
DI[7:6]:2bits定义数据通道数. DI[5:0]:低6位定义数据类型。
• 错误检测(ECC,8bit):允许包头中前24位(8位数据标志符+16位计数值)在传输过程中两位出错被发现、一位错误被纠正;

//check
U8 Helpers::CalculateECC(U8 *ptr)
{
    U8 D[24] = { 0 };
    U8 count = 0;
    U8 ECC[8] = { 0 };
    for (U8 i = 0; i < 3; i++) {
        for (U8 j = 0; j < 8; j++) {
            D[count] = *ptr & 0x01;
            U8 data = *ptr;
            *ptr = data >> 1;
            count++;
        }
        ptr++;
    }
    ECC[7] = 0;
    ECC[6] = 0;
    ECC[5] = D[10] ^ D[11] ^ D[12] ^ D[13] ^ D[14] ^ D[15] ^ D[16] ^ D[17] ^ D[18] ^ D[19] ^ D[21] ^ D[22] ^ D[23];
    ECC[4] = D[4] ^ D[5] ^ D[6] ^ D[7] ^ D[8] ^ D[9] ^ D[16] ^ D[17] ^ D[18] ^ D[19] ^ D[20] ^ D[22] ^ D[23];
    ECC[3] = D[1] ^ D[2] ^ D[3] ^ D[7] ^ D[8] ^ D[9] ^ D[13] ^ D[14] ^ D[15] ^ D[19] ^ D[20] ^ D[21] ^ D[23];
    ECC[2] = D[0] ^ D[2] ^ D[3] ^ D[5] ^ D[6] ^ D[9] ^ D[11] ^ D[12] ^ D[15] ^ D[18] ^ D[20] ^ D[21] ^ D[22];
    ECC[1] = D[0] ^ D[1] ^ D[3] ^ D[4] ^ D[6] ^ D[8] ^ D[10] ^ D[12] ^ D[14] ^ D[17] ^ D[20] ^ D[21] ^ D[22] ^ D[23];
    ECC[0] = D[0] ^ D[1] ^ D[2] ^ D[4] ^ D[5] ^ D[7] ^ D[10] ^ D[11] ^ D[13] ^ D[16] ^ D[20] ^ D[21] ^ D[22] ^ D[23];

    return ECC[7] << 7 | ECC[6] << 6 | ECC[5] << 5 | ECC[4] << 4 | ECC[3] << 3 | ECC[2] << 2 | ECC[1] << 1 | ECC[0];
}

表1 Data Type(DT)数据类型表示

Data Type Description
0x00 Frane Start Code
0x01 Frane End Code
0x02 Line Start Code(Optional)
0x03 Line EndCode(Optional)
0x04~007 Reserved
3.2 长帧

• 长包格式:一个长包由32位(4Byte)的包头,N字节的数据域,和16位的CRC构
• 包头格式:包头由8位数据标志符(DI)+ 16位计数值(WC)+ 8位错误检测(ECC)构成;
• 数据标志符DI:由2位虚拟通道号+6位数据类型构成,CSI2可以通过不同的虚拟通道
号和数据类型来标志不同的数据流,比如JPEG数据流中穿插着YUV
缩略图数据流;
• 16位计数值WC:为长包里面数据域(图像数据)的字节数N;
• 8位ECC:允许包头中前24位(8位数据标志符+16位计数值)在传输过程中两位出错
被发现、一位错误被纠正;
• 16位CRC:16bit的循环沉余校验码,可以指示收到的该包数据在传输过程中是否出错;
• 每个字节都是低位先传,多字节元素(16位计数值、 16位CRC)也是低字节低位先传。
MIPI-DSI 协议深度解析-简单易懂协议详解_第6张图片
表2:主机发送命令中DT物理意义
MIPI-DSI 协议深度解析-简单易懂协议详解_第7张图片
表3:从机返回命令中DT物理意义
MIPI-DSI 协议深度解析-简单易懂协议详解_第8张图片
4. 包传输方式
MIPI-DSI 协议深度解析-简单易懂协议详解_第9张图片
具体数据流传输举例:
EntryES => LPDT(0x87) => SP(0x03:设置返回包长度))=> SP(0x06:DCS读命令) => ExitES => EntryTA => EntryES => LPDT(0x87) => LgP(0x1C:DCS长读命令,应答) => ExitES => EntryTA => EntryES => LPDT(0x87) => SP(0x23:普通写命令)=> ExitES => EntryES => LPDT(0x87) => LgP(0x29:普通长写命命) => ExitES。

5. MIPI通信实例实测
本实例使用 Kingst LA5016 usb 逻辑分析仪侦测MIPI的数据通讯。LA5016的MIPI解析模块,不仅可以解析CAN FD协议,同时也兼容CAN协议解析,以下几图是一个完整的数据包分析截图。从图中可以看到,CAN FD协议可以区分CAN FD及CAN协议,CAN FD协议将协议数据分析为 ID(协议id号), ExternId(扩展id), DLC(数据长度),Data(传输数据), StuffCount,CRC, ACK/NAK 。

协议解析参数设置:
MIPI-DSI 协议深度解析-简单易懂协议详解_第10张图片
下图是一个完整的数据包解析,首先发起进入Escape请求,然后发送8bitsCode数据,标识当前状态,然后发送短帧数据,8bits ID, 16bits Data,及 8bits ECC,最后发送退出Escape请求,至此数据包传送完毕。
PN:10, 代表逻辑1,
PN:01, 代表逻辑0,
PN:00 或 11, 无效。
MIPI-DSI 协议深度解析-简单易懂协议详解_第11张图片
如下图所示,根据DI的低6位(Data Type,DT),可以解析出本次命令的物理意义。
MIPI-DSI 协议深度解析-简单易懂协议详解_第12张图片
MIPI-DSI 协议深度解析-简单易懂协议详解_第13张图片
参考资料:
(1) MIPI-D-PHY-Specification-v01-00-00.pdf
(2) Mipi-DSI-specification-v1-3.pdf
(3) MIPI-DSI协议归纳整理.pdf

链接:百度网盘
提取码:zg2a
或者:CSDN资源下载

你可能感兴趣的:(协议解析,mipi,数字通信,c++)