MIPI协议DSI分析[通俗易懂]

MIPI协议DSI分析[通俗易懂]本文主要从四个方面来介绍MIPIDSI协议       1、MIPI协议简介、DSI简介       2、DSI协议的D-PHY(物理层)简介       3、DSI协议的DSI(传输接口层)简介     4、DSI协议的DCS(DisplayCommandSet)(指令集)简介       MIPI(移动行业处理器接口)是MobileIndustryPro

大家好,又见面了,我是你们的朋友全栈君。

        本文主要从四个方面来介绍MIPI DSI协议

        1、MIPI协议简介、DSI简介

        2、DSI协议的D-PHY(物理层)简介

        3、DSI协议的DSI(传输接口层)简介

        4、DSI协议的DCS(DisplayCommandSet)(指令集)简介

        MIPI移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。

已经完成和正在计划中的规范如下:

MIPI协议DSI分析[通俗易懂]

常用的两个标准为csi(camera)与dsi(diaplay),这里主要介绍dsi标准(被用于智能设备LCD上)

MIPI联盟的MIPI DSI规范简介(按照下图DSI的功能分为三层)

MIPI协议DSI分析[通俗易懂]

• DCS:DCS是一个标准化的命令集,用于命令模式的显示模组。

• DSI :定义了一个位于处理器和显示模组之间的高速串行接口。

• D-PHY:提供DSI和CSI的物理层定义

 2、DSI物理分层结构

DSI物理分层为四层,对应D-PHY、DSI、DCS规范,如下:
• PHY 定义了传输媒介,输入/输出电路和时钟、信号机制。
• Lane Management层:发送和收集数据流到每条lane
• Low Level Protocol层:定义了如何组帧和解析以及错误检测等
• Application层:描述高层编码和解析数据流,通过DCS指令进行配置与传输

                                                                D-PHY层

D-PHY描述了同步,高速,低功耗,低成本的物理层。主从双方的传送/接收速率可以是不对称的,不对称设计显著降低了链路的复杂性。

在D-PHY提供主机和从机之间的同步连接。D-PHY配置由一组时钟lane和一组或多组数据lane组成。时钟信号是单向的。数据信号是单向或双向取决于所选择的模式。

对D-PHY的分析分为两部分——物理分析、功能分析

1、D-PHY物理分析

MIPI协议DSI分析[通俗易懂]

左半部分为输入通道,包括clock、data和ctrl信号,通过logic转换到右边输出相应的配置。

右半部分为输出通道,包括HS功能, LP功能,LP-CD检测

HS用于高速传输/接收数据

LP用于低功耗传输/接收数据

LP-CD为低功耗竞争检测器,当传输状态改变时进行检测(用于双向数据的传输)

下图为D-PHY与上层控制器的连接图:

MIPI协议DSI分析[通俗易懂]

外部时钟单元提供了clock,PHY-Adapter进行适配控制(对每个lane通道进行配置)

2、D-PHY功能分析

主要有两种通信方式:双向通信(发送指令并接收)、单向通信(发送数据)

包括三种工作状态模式  High-Speed模式、Turnaround request模式、Low-Power Escape模式

High-Speed——高速数据传输模式

Turnaround request——控制模式

Low-Power Escape——提供escape状态,可以进入LPDT(低功耗数据传输), ULPS(超低功耗模式,不传输), reset-Trigger这三种状态

低功耗(Low-Power)信号模式(用于控制):10MHz (max)

高速(High-Speed)信号模式(用于高速数据传输):80Mbps ~ 1Gbps/Lane

LP :0-1.2V

HS:100-300mV (一般为200mV)

Escape mode是数据Lane在LP状态下的一种特殊操作,通过这种状态进入LPDT, ULPS, reset-Trigger这三种状态

High-Speedmode request  LP-11—>LP01—>LP00—>SOT码(11100001)

Turnaround request             LP-11—>LP10—>LP00—> LP10—> LP00(传输过程)      LP-00—>LP10—>LP11(接收过程)

Escapemode request          LP-11—>LP10—>LP00—> LP01—> LP00—>SOT码(根据SOT码的不同进入不同的模式)

具体的各种转换状态如下图:

MIPI协议DSI分析[通俗易懂]

完整的D-PHY层配置,配置如下:
•单个或多个数据lane通道
•双向或单向数据传输

•接收数据支持的类型(一般只有第一个lane0可以接收数据)

•是否支持escape模式
•数据传输——8位原始数据(默认)/使用8b9b编码的符号

                          DSI(协议层)简介


      DSI指定了一个主处理器和外围器件(LCD)的接口。它基于DPI,DBI和DCS标准规定了像素格式和指令集。

下图显示了一个简化的DSI接口。一个DSI兼容DBI和DPI标准接口。它发送像素或命令到外设,并可以读回状态或像素信息

MIPI协议DSI分析[通俗易懂]

DSI传输有command和 Video两种模式

    Command模式主要发送命令和数据到外围(双向传输),用于与外设双向通信

    Video模式是指以实时象素流的形式把数据从主处理器传输到外设,是单方向的传输。Vedio在D-PHY使用的是HS传输模式

       DSI如果有多个lane通道,在command模式,数据lane 0应是双向的;其他的数据lane应是单向的,在vedio模式,数据lane0可以是双向或单向的;其他的数据通道必须是单向的。Master低功率传输仅采用lane0,外设接收在数据lane0只能使用低功耗模式。由于HS传输是任意数量,不是lane通道个数的整数倍,发送EOT一个周期(字节)补齐。(注意:每一组lane传输结束都需要EOT),效果如下图

MIPI协议DSI分析[通俗易懂]

DSI初始化状态,如图:

MIPI协议DSI分析[通俗易懂]

        主设备上电需要一段时间(T-POR),然后保持LP-11(TX-Stop state),然后主设备初始化(T-INIT_SLAVE),然后有一段从设备初始化时间(T-INTERNAL_DELAY)。在主从设备初始化期间,D-PHY应该一直保持LP-11状态。因此初始化时间(INTER_MASTER)应该大于主/从设备初始化时间之和。

当DSI设置为多个数据lane时,传输过程大致如下(图为4个数据lane的情况):

MIPI协议DSI分析[通俗易懂]
MIPI协议DSI分析[通俗易懂]

DSI的传输可以为分隔传输和统一传输,下面是DSI传输的过程:

MIPI协议DSI分析[通俗易懂]

短包(4 bytes长度)——命令设置或参数配置或同步信号传输,组成如下

                   标识(DI)- 1个字节、帧数据- 2个字节、错误检测(ECC)1个字节

长包——长包用2个字节定义数据长度,最多传输数据为65535,组成如下

                   帧头部(4个字节):

                            标识(DI) 1个字节(数据传输类型与lane通道个数)

                            数据计数- 2个字节 

                            错误检测(ECC) 1个字节

                   帧数据   0-65525不定数据

                   帧尾:校验和(2个字节)

因此长包长度为——帧头(4)+数据(0-65535)+帧尾(2) =6-65541个字节

数据标识(DI)是由8个字节组成,高两个bit定义了数据lane个数,后六个bit定义了执行类型(见附录1)

                     DCS(DisplayCommandSet)(指令集)简介

DCS支持以下的几种外设状态:

在正常模式下,显示模块显示全部的图像数据。

在局部模式下,显示模块显示部分的图像数据

在待机模式下,显示模块使用有限数量的颜色显示图像。

在睡眠模式下,显示模块不显示任何图像数据。显示接口将保持供电,维持在帧存储器和寄存器中的数据。其余的功能块被置于低功率模式。

其他:Gamma曲线:Gamma灰度校正补偿

DCS命令设置:DCS分为两个功能区:用户命令集和制造商命令集。每个命令是00h至AFH的8位码

所有的操作都由DCS指令集来实现(见附录2)

附录1

Data Type,hex       DataType,binary    Description                Packet Size

0x01                           000001              SyncEvent, V Sync Start          Short

0x11                           010001              SyncEvent, V Sync End       Short

0x21                          100001                    SyncEvent, H Sync Start        Short

0x31                          110001                    SyncEvent, H Sync End           Short

0x08                          001000                    Endof Transmission packet (EoTp)  Short

0x02                          000010                    ColorMode (CM) Off Command  Short

0x12                          010010                    ColorMode (CM) On Command  Short

0x22                          100010                    ShutDown Peripheral Command  Short

0x32                          110010                    TurnOn Peripheral Command  Short

0x03                          000011                    GenericShort WRITE, no parameters  Short

0x13                          010011                    GenericShort WRITE, 1 parameter  Short

0x23                          100011                    GenericShort WRITE, 2 parameters  Short

0x04                          000100                    GenericREAD, no parameters  Short

0x14                          010100                    GenericREAD, 1 parameter  Short

0x24                          100100                    GenericREAD, 2 parameters  Short

0x05                          000101                    DCSShort WRITE, no parameters  Short

0x15                          010101                    DCSShort WRITE, 1 parameter  Short

0x06                          000110                    DCSREAD, no parameters  Short

0x37                          110111                    SetMaximum Return Packet Size  Short

0x09                          001001                    NullPacket, no data  Long

0x19                          011001                    BlankingPacket, no data  Long

0x29                          101001                    GenericLong Write  Long

0x39                          111001                    DCSLong Write/write_LUT Command Packet  Long

0x0C                         001100          LooselyPacked Pixel Stream, 20-bit YCbCr, 4:2:2 Format Long

0x1C                         011100          PackedPixel Stream, 24-bit YCbCr, 4:2:2 Format Long

0x2C                         101100          PackedPixel Stream, 16-bit YCbCr, 4:2:2 Format Long

0x0D                         001101                    PackedPixel Stream, 30-bit RGB, 10-10-10 Format Long

0x1D                         011101                    PackedPixel Stream, 36-bit RGB, 12-12-12 Format Long

0x3D                         111101                    PackedPixel Stream, 12-bit YCbCr, 4:2:0 Format Long

0x0E                          001110                    PackedPixel Stream, 16-bit RGB, 5-6-5 Format Long

0x1E                          011110                    PackedPixel Stream, 18-bit RGB, 6-6-6 Format Long

0x2E                          101110          LooselyPacked Pixel Stream, 18-bit RGB, 6-6-6 Format Long

0x3E                          111110          PackedPixel Stream, 24-bit RGB, 8-8-8 Format Long

 附录2

Command                  Hex Code         Description          

enter_idle_mode         39h                  降低颜色深度                                              

enter_invert_mode       21h                  图像色彩被反转                                         

enter_normal_mode    13h                 显示全部的图片                                        

enter_partial_mode      12h                  显示部分图片                                              

enter_sleep_mode        10h                  不显示休眠                                                  

exit_idle_mode               38h                   

exit_invert_mode           20h 

exit_sleep_mode           11h 

get_address_mode       0Bh                  Get命令(获取数据)                                   

get_blue_channel          08h                  Get blue组成<像素 (0, 0)>                     

get_diagnostic_result   0Fh                   Get外围设备检测结果                            

get_display_mode         0Dh                  Get当前显示模式                                              

get_green_channel       07h                  Get green组成<像素 (0, 0)>                 

get_pixel_format             0Ch                  Get当前像素模式(调色板模式)          

get_power_mode          0Ah                  Get power模式                                           

get_red_channel           06h                    Get red组成<像素 (0, 0)>                       

get_scanline                    45h                  Get the current scanline.                        

get_signal_mode           0Eh                  Get显示模式                                                       

nop                                     00h                  NoOperation                                                        

read_DDB_continue      A8h                   从提供的位置读DDB信息

read_DDB_start              A1h                    从开始位置读DDB信息

read_memory_continue 3Eh                   从外设读取图像数据(指定位置)

read_memory_start      2Eh                  从外设读取图像数据(开始)

set_address_mode        36h                  Set指令                                                        

set_column_address     2Ah                   Set行范围                                                   

set_display_off               28h                  不显示关闭                                               

set_display_on                29h                  显示                                                               

set_gamma_curve          26h            设置 gamma曲线参数                            

set_page_address         2Bh                 Set页范围                                                  

set_partial_columns       31h                  Set局部行和列

set_partial_rows               30h

set_pixel_format               3Ah                  Set像素格式

soft_reset                         01h                  SoftwareReset  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139785.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号