MIPI

您所在的位置:网站首页 mipi协议详细介绍 MIPI

MIPI

2024-06-24 09:39| 来源: 网络整理| 查看: 265

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。 img img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Escape模式进入:LP-11=>LP-10=>LP-00=>LP-01=>LP-00; 在Escape模式下低功耗数据传输命令是:1110_0001(LSB); 加载数据:一个或多个8bit数据,当数据通道在字节之间停止(两通道都是低的)时,数据通道处于暂停状态; 退出Escape模式:LP-00=>LP-10=>LP-11; 结束:LP-11。 其时序如下图所示:

超低功耗状态(ULPS): 当数据lane进入Escape模式时,主机可以强制数据通道进入超低功率状态(ULPS)。 进入超低功耗状态(ULPS)使用以下序列: 开始:LP-11状态; 进入Escape模式:LP-11=>LP-10=>LP-00=>LP-01=>LP-00; 超低功耗进入命令:0001_1110; 超低功耗(ULPS)时主机保持数据通道为低; 退出:LP-00=>LP-10=>LP-11; 结束:LP-11。 详细序列如下图所示:

图. 进入超低功耗状态

远程复位详细介绍: 当数据通道进入Escape模式时,在远程复位触发模式下,主机可以通知显示模块进行复位操作。 远程复位重置(RAR)使用以下序列: 开始:LP-11状态; 进入Escape模式:LP-11=>LP-10=>LP-00=>LP-01=>LP-00; 远程复位命令:0110_0010; 退出:LP-00=>LP-10=>LP-11; 结束:LP-11。 操作序列如下图所示:

图. 远程复位操作序列

应答操作(ACK): 当用错误被确认时,显示模块可以通过使用ACK通知主机。 应答操作(ACK)使用以下序列: 开始:LP-11状态; 进入Escape模式:LP-11=>LP-10=>LP-00=>LP-01=>LP-00; ACK命令:0010_0001; 退出:LP-00=>LP-10=>LP-11; 结束:LP-11。 操作序列如下图所示:

图. ACK操作序列

高速数据传输(HSDT)操作: 进入高速数据传输操作: 当时钟通道DSI-CLK+/-已经由主机设置进入高速时钟模式(HSCM)后,显示模块可以进入高速数据传输(HSDT)模式。 显示模块的数据lane进入高速数据传输模式使用如下的操作序列: 开始:LP-11状态; HS请求:LP-01; HS决定:LP-00=>HS-0(接收端lane终端使能); 接收端同步:011101,发送端同步:0001_1101; 结束:高速数据传输(HSDT)——准备好接收高速加载的数据。 进入高速数据传输的序列如下图所示:

图. 进入高速数据传输序列

离开高速数据传输操作: 当时钟通道DSI-CLK+/-在主机的高速时钟模式(HSCM)中时,显示模块离开高速数据传输(HSOT),并保持该HSCM直到数据通道处于LP-11模式。显示模块的数据通道离开高速数据传输模式使用如下的操作序列: 开始:高速数据传输模式; 停止:如果最后的加载位是HS-0,则主机更改为HS-1;如果最后一个加载位是HS-1,主机更改为HS-0。 结束:LP-11。 离开高速数据参数操作序列:

图. 离开高速数据传输模式序列

高速数据传输的突发操作: 高速数据传输(HSDT)的突发操作可以由一个数据包或几个数据包组成。这些数据包可以是长或短数据包。 不同的高速数据传输突发情况如下图所示:

总线反转操作: 正在控制DSI-D0+/-数据通道的主机或显示模块可以在接收到请求信息时进行总线反转过程。 主机或显示模块可以使用相同的操作序列,使总线控制权发生反转。 如果主机想要对显示模块执行总线控制权反转操作,则按照下面的操作序列进行: 开始(主机): LP-11; 总线控制权反转请求:LP-11=>LP-10=>LP-00=>LP-10=>LP-00; 主机等待显示模块开始控制DSI-D0+/-数据lane,主机停止控制DSI-D0+/-数据lane,并设置为高阻状态; 显示模块更改到停止模式:LP-00=>LP-10=>LP-11。

总线控制权反转操作序列如下图所示:

图. 总线控制权反转过程

如果总线控制权反转请求是从显示模块发到主机,则主机和显示模块位置在上图中交换。

数据包级通信协议: 短数据包和长数据包的结构详细介绍: 在低功耗数据传输(LPDT)或高速数据传输(HSDT)模式下完成数据传输时,始终使用短数据包(SPa)和长数据包(LPa)。 数据包的长度分别是: 短包:4字节; 长包:6~65541字节;

数据包的类型(SPa或LPa)可以从它们的包头(PH)中被识别。

注释: 上图中短分包(SPa)结构和长包(LPa)结构是呈现单个包发送(包括用于每个分组发送的LP-11,SoT和EoT)。 另一种可能性是,如果数据包以多个数据包格式发送,则在数据包之间不需要SoT,EoT和LP-11。 LP-11=>SoT=>SPa=>LPa=>SPa=>SPa=>EoT=>LP-11 LP-11=>SoT=>SPa=>SPa=>SPa=>EoT =>LP-11

LP-11=>SoT=>LPa=>LPa=>LPa=>EoT=>LP-11

数据包中字节的位顺序: 字节的位顺序(即数据包使用的内容)是字节的最低有效位(LSB)先发送,并且字节的最高有效位(MSB)在最后发送。 具体发送顺序如下图所示:

图. 数据包中字节的位顺序

数据包的多个字节信息的位顺序: 多字节信息的字节顺序是在数据包上使用的信息的最低有效字节(LS)在第一个字节中发送,而信息的最高有效字节(MS)字节在最后发送。字数(WC)由2个字节(16位)组成,而LS字节在第一个字节发送,MS字节在最后一个字节发送。 发送顺序如下图所示:

包头详细介绍: 数据包的包头是由4个字节组成。如果用于短数据包(SPa)或长数据包(LPa),这4个字节的内容是不同的。 短包: 1st:数据ID,用于表示此数据包是短包; 2st和3st:Data0和Data1;         4st:错误校验代码(ECC)。

图. 短包中的包头结构

长包: 1st:数据ID,用于表示此数据包是长包; 2st和3st:字节数量(WC); 4st:错误校验代码(ECC)。

图. 长包中的包头结构

数据标识(Data Identification)详细介绍: 数据标识(DI)是数据包标题(PH)的一部分,它由两部分组成: 虚拟通道(VC),2位,DI[7.6]; 数据类型(DT),6位,DI[5.0];

数据标识(DI)结构如下表所示:

数据标识(DI)在数据包包头(PH)上的说明,以供参考:

虚拟通道(VC)在这里不做详细介绍。

数据类型(Data Type )介绍: 数据类型(DT)是数据标识(DI[5…0])结构的一部分,它用于定义数据包中使用的数据的类型。 数据类型(DT)的在位信息如下图所示:

图. 数据包头(PH)上的数据类型(DT)表示

数据类型(DT)还定义了使用的数据包是什么:短数据包(SPa)或长数据包(LPa)。从主机到显示器发送的数据类型是和显示器到主机发送的数据类型不同的。

从主机到显示模块的数据类型(DT)在下表中定义:

注释: 1.当主机希望确保在高速数据传输(HSDT)模式下有传输结束时,可以使用此功能。 2.当希望数据通道保持高速数据传输(HSDT)模式时,可以使用此功能。 3.接收方使用与数据类型(DCS写/读)相同的方式处理数据类型(通用写/读)的数据包。 4.具有1个参数的通用写入/读取:有效负载字节=命令+00h。 5.带2参数的通用写入/读取:有效负载字节=命令+参数。

6.接收方将忽略数据包,这些数据类型既未在表中列出,也未在MIPI_DSI规范中列出。

从显示模块(或其他设备)到主机的数据类型(DT):

短数据包中的数据介绍: 短数据包中的数据是在DI之后,表示需要发送的数据。 字数(WC)表示包头之后发送的字节数据(PD)的个数。 短数据包中的数据字节有2byte,Data0和Data1。发送顺序是先发送第一个字节,再发送第二个字节。如果信息长度是1个字节,则Data1的位被设置为’0’。 当虚信道(VC)为0时,短信息包(SPa)中的数据(PD),当信息长度为1或2字节时,可以参考下面的组成信息。 数据包数据信息: Data0:带一个参数的显示命令,DI(15h);

Data1:01h(显示命令集参数);

数据包数据信息: Data0:10h(不带参数的显示命令集,DI(05h));

Data1:00h(NULL);

长数据包中的字节数: 长数据包中的字节数(WC)是定义在数据类型(DT)之后,用来表示长数据包要发送多少个字节的数据。字节数使用两个字节表示。字节数中的两个字节发送顺序是LSB先发送,MSB后发送。长数据包中的WC格式如下图所示。

错误校验码(ECC): 错误校验码是包头的一部分,其目的用于识别包头中的错误。 错误校验码保护下面的区域: 短包:数据识别字节(8bits,D[0…7])、数据两个字节(16bits,D[8…23])和ECC(8bits:P[0…7])。 长包:数据识别字节(8bits,D[0…7])、字节数两个字节(16bits:D[8…23])和ECC(8bits:P[0…7])。

D[23…0]位和P[7…0]位的分布如下图所示:

错误校验码(ECC)可以识别一个错误或多个错误,并在某一位错误的情况下进行纠正。 错误校验码中的位(P[7…0])定义如下图所示,其中,“^”符号表示异或运算;如果存在偶数个“1”,则Pn等于1;如果存在奇数个1,则Pn等于0。计算方式如下所示。 • P7 = 0 • P6 = 0 • P5 = D10D11D12D13D14D15D16D17D18D19D21D22D23 • P4 = D4D5D6D7D8D9D16D17D18D19D20D22D23 • P3 = D1D2D3D7D8D9D13D14D15D19D20D21D23 • P2 = D0D2D3D5D6D9D11D12D15D18D20D21D22 • P1 = D0D1D3D4D6D8D10D12D14D17D20D21D22^D23 • P0 = D0D1D2D4D5D7D10D11D13D16D20D21D22^D23 P7和P6被设置为“0”,因为错误校验码(ECC)是基于64位值。但是这个实现是基于24位值的。因此,错误校验码(ECC)只需要6位(P [5 … 0])。

详细的计算方式如下图所示:

发送方(主机或显示模块)发送数据位D[23…0]和校验码(ECC)P[7…0]。接收方(显示模块或主机)根据接收到的数据位D[23…0]计算出一个内部校验码(IECC),并将接收到的校验码(ECC)和内部校验码(IECC)进行比较。当ECC和IECC的每个功能位已完成XOR功能时,完成此比较。该XOR计算的结果是PO[7…0]。以下为参考图片说明了这种功能,其中发送方是主机,接收方是显示模块。

图. 显示模块(接收方)上的内部纠错码(IECC)

如果PO[7…0]的值为00h,发送的数据位(D[23…0])和校验码ECC(P[7…0])说明被正确的接收。如果PO[7…0]的值不为00h,发送的数据位(D[23…0])和校验码ECC(P[7…0])说明未被正确的接收。

当校验码(ECC)功能不用于发送方侧的数据值D[23…0]时,接收到的纠错码(ECC)可以是00h。 当PO[7 … 0]的值与下表中的值进行比较时,可以定义错误的数量(一个或多个)。

校验码(ECC)中的一位错误值比照表格:

如果PO[7…0]的值打开,则检测到一个错误:校验码(ECC)的一位错误值,接收方可以纠正这一位错误,因为该找到的值还定义了是那个位出现错误位置。例如: • PO[7…0] = 0Eh;

• 数据的位(D[23…0]),不正确的是D[3]位。

长数据包中的数据部分详细介绍: 长数据包中的数据部分是定义在包头之后的。数据部分的长度是在包头中的(数据字节数)WC部分定义的。 长数据包中的包脚部分详细介绍: 长数据包中的包脚部分是定义在数据部分之后;包脚(PF)是从长数据包(LPa)的数据部分计算出的校验和(checksum)的值。校验和使用16位循环冗余码校验(CRC)值,该值由多项式X16+X12+X5+X0生成,如下所示。

图. 16位循环冗余校验(CRC)计算

计算前将16位循环冗余校验(CRC)发生器初始化为FFFFh。数据部分的数据字节的最低有效位(LSB)是输入到16位循环冗余校验(CRC)中的第一位。以下将逐步说明16位循环冗余校验(CRC)的示例,其中长数据包(LPa)的数据部分(PD)为01h。

在本例中,数据包脚(PF)的值为1E0Eh。 这个例子(发送命令01h)如下图所示。

接收方从接收到的数据部分中(PD)计算自己的校验和值。接收方比较自己的校验和和数据包脚(PF)发送方发送的校验和内容。

如果接收方和长包包脚(PF)的自身校验和相等,则接收到的数据部分(PD)和包脚(PF)是正确的,反之亦然,计算的包脚与接收方的数据包脚(PF)的自身校验和不相等。

数据包的发送过程详细介绍: 1.从主机到显示模块的数据包传输; 显示命令集详细介绍: 显示命令集(DCS)在章节"6.指令描述"中定义,用于主机到显示模块发送数据使用。 显示命令集(DCS)总是在数据部分(PD)的Data0上定义,它包含在短包(SPa)和长包(LPa)中,如下所示。

图. 短包(SPa)和长包(LPa)上的显示命令集(DCS)

通用写入,1个参数(GENW1-S),数据类型=00010011(13h): 此数据类型只使用于短包,是由数据类型(13h)定义的,2个有效发送字节的内容是"命令"和00h。 这些命令在下表格中定义。

短包的定义举例: 数据识别定义: 虚拟通道(VC):00b 数据类型(DT):010011b 包数据定义: Data0:休眠(10h),显示命令 Data1:00h 错误校验码(ECC);

这写数据在短包(SPa)上的定义如下:

图. 短包示例

通用写入,2参数(GENW2-S),数据类型=00100011(23h): 此数据类型只适用于短包,是由数据类型(23h)定义的,从主机往显示模块发送命令时使用;2个有效发送字节的内容分别是"命令"和"参数"。 这些命令在下表格中定义。

短包的定义举例: 数据识别定义: 虚拟通道(VC):00b 数据类型(DT):00100011b 包数据定义: Data0:PMCSET(3Ah),显示命令; Data1:01h,显示命令DCS的参数; 错误校验码(ECC);

这写数据在短包(SPa)上的定义如下:

通用长写(GENW-L),数据类型=00101001(29h): 此数据类型只适用于长包,是由数据类型(29h)定义的,从主机往显示模块发送命令时使用;命令(没有参数)和写(1个或多个参数), 这些命令在下表格中定义。

备注:

Note1:短数据包(Spa)也可以使用,请参阅通用写,1个参数(GENW1-S)。

Note2:短数据包(Spa)也可以使用,请参阅通用写,2个参数(GENW2-S)。

使用长数据包发送命令(无参数)的示例如下: 数据识别定义: 虚拟通道(VC):00b 数据类型(DT):00101001b 字节数(WC):0001h 错误校验码; 数据部分:Data0,休眠10h,显示命令; 包脚部分;

示例定义如下图所示:

使用长数据包发送命令(1个参数)的示例如下: 数据识别定义: 虚拟通道(VC):00b 数据类型(DT):00101001b 字节数(WC):0002h 错误校验码; 数据部分: Data0:伽玛设置((3Ah),显示命令; Data1:01h,命令的参数。 包脚部分;

此长包的定义示例如下:

通用读,1个参数(GENR1-S),数据类型=00010100(14h) 此数据类型只适用于短包,是由数据类型(14h)定义的,从主机往显示模块发送命令时使用;这些命令在下表格中定义。 第一个参数(虚拟数据)不返回,因为它在MeSSI-8/16情况下完成。第一个返回的参数是DSI情况下的第二个参数。

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

0180523195213485?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhaWhhaXRhbzIwMDA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

通用读,1个参数(GENR1-S),数据类型=00010100(14h) 此数据类型只适用于短包,是由数据类型(14h)定义的,从主机往显示模块发送命令时使用;这些命令在下表格中定义。 第一个参数(虚拟数据)不返回,因为它在MeSSI-8/16情况下完成。第一个返回的参数是DSI情况下的第二个参数。

[外链图片转存中…(img-vmeXXAxL-1715889162539)] [外链图片转存中…(img-m5awpBob-1715889162539)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3