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 层:描述高层编码和解析数据流。
在这里插入图片描述
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)也是低字节低位先传。

在这里插入图片描述

• 状态转换关系图
在这里插入图片描述
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)。
在这里插入图片描述
在这里插入图片描述

• 数据标识(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 TypeDescription
0x00Frane Start Code
0x01Frane End Code
0x02Line Start Code(Optional)
0x03Line EndCode(Optional)
0x04~007Reserved
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)也是低字节低位先传。
在这里插入图片描述
表2:主机发送命令中DT物理意义
在这里插入图片描述
表3:从机返回命令中DT物理意义
在这里插入图片描述
4. 包传输方式
在这里插入图片描述
具体数据流传输举例:
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 。

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

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

基于MIPI-DSI协议的LCD驱动接口设计是一种在嵌入式系统中使用的显示技术。MIPI-DSI(Mobile Industry Processor Interface - Display Serial Interface)是一种面向移动设备的高速串行接口协议,用于处理显示和触摸数据传输。 在基于MIPI-DSI协议的LCD驱动接口设计中,LCD控制器与主处理器之间通过MIPI-DSI接口进行通信。该接口使用差分信号传输,其中包括一个差分对作为时钟线和多个差分对作为数据线。通过这种方式,可以实现高速数据传输和抗干扰能力。 接口设计中的关键组件包括显示控制器、MIPI D-PHY、MIPI DSI TX、以及液晶显示屏。显示控制器负责生成图形数据和控制信号,将它们转换为MIPI-DSI协议所需的格式。MIPI D-PHY负责处理差分信号的物理层转换,以及时钟和数据的发送与接收。MIPI DSI TX是将数据流编码为MIPI-DSI协议的转换器。液晶显示屏是接收和解码来自DSI TX的协议,并将数据转换为相应的像素信息并显示出来。 这种接口设计的实现具有以下优点: 1. 高速传输:基于差分信号的传输,使得数据的传输速度更快。 2. 灵活性:可以通过配置和协议选项支持不同分辨率和颜色位深的LCD屏幕。 3. 低功耗:接口设计能够提供较低的功耗和电压等级。 4. 抗干扰能力:MIPI-DSI接口提供了抗干扰的特性,能够有效减少干扰对显示效果的影响。 总结而言,基于MIPI-DSI协议的LCD驱动接口设计使得显示系统在嵌入式领域中有更好的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值