大家好,又见面了,我是你们的朋友全栈君。
本文主要从四个方面来介绍MIPI DSI协议
1、MIPI协议简介、DSI简介
2、DSI协议的D-PHY(物理层)简介
3、DSI协议的DSI(传输接口层)简介
4、DSI协议的DCS(DisplayCommandSet)(指令集)简介
MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。
已经完成和正在计划中的规范如下:
常用的两个标准为csi(camera)与dsi(diaplay),这里主要介绍dsi标准(被用于智能设备LCD上)
MIPI联盟的MIPI DSI规范简介(按照下图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物理分析
左半部分为输入通道,包括clock、data和ctrl信号,通过logic转换到右边输出相应的配置。
右半部分为输出通道,包括HS功能, LP功能,LP-CD检测
HS用于高速传输/接收数据
LP用于低功耗传输/接收数据
LP-CD为低功耗竞争检测器,当传输状态改变时进行检测(用于双向数据的传输)
下图为D-PHY与上层控制器的连接图:
外部时钟单元提供了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码的不同进入不同的模式)
具体的各种转换状态如下图:
完整的D-PHY层配置,配置如下: •单个或多个数据lane通道 •双向或单向数据传输
•接收数据支持的类型(一般只有第一个lane0可以接收数据)
•是否支持escape模式 •数据传输——8位原始数据(默认)/使用8b9b编码的符号
DSI(协议层)简介
DSI指定了一个主处理器和外围器件(LCD)的接口。它基于DPI,DBI和DCS标准规定了像素格式和指令集。
下图显示了一个简化的DSI接口。一个DSI兼容DBI和DPI标准接口。它发送像素或命令到外设,并可以读回状态或像素信息
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),效果如下图
DSI初始化状态,如图:
主设备上电需要一段时间(T-POR),然后保持LP-11(TX-Stop state),然后主设备初始化(T-INIT_SLAVE),然后有一段从设备初始化时间(T-INTERNAL_DELAY)。在主从设备初始化期间,D-PHY应该一直保持LP-11状态。因此初始化时间(INTER_MASTER)应该大于主/从设备初始化时间之和。
当DSI设置为多个数据lane时,传输过程大致如下(图为4个数据lane的情况):
DSI的传输可以为分隔传输和统一传输,下面是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
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139785.html原文链接:https://javaforall.cn