MIPI 打怪升级之DSI篇

目录

1 Overview

DSI 全称 Display Serial Interface,是由 MIPI 联盟定义的处理器与外设之间的移动设备接口规范。该规范建立在现有标准的基础上,并采用了 MIPI 联盟 DBI、DPI 和 DCS 标准中定义的像素格式和命令集。DSI是主要用于显示传输的接口。
一般而言,完整的DSI传输结构如下图所示,从上到下依次为(本文主要关注第二层与第三层):

  1. Application:描述了数据流中包含的数据的更高层的编码和解释。 根据显示子系统架构,它可能由具有规定格式的像素组成,或者由显示模块的命令组成。 可以参考DCS、DPI、DBI Spec。
  2. Low Level Protocol:该协议规定了通过接口的位和字节的顺序和值,它定义如何将字节组织成定义的组,即数据包。该协议以数据包为最小集合,并为每个数据包定义了所需的包头,以及如何生成和解释包头信息。后续发送端将包头和错误检查信息附加到正在传输的数据中。
  3. Lane Managment:通道管理,DSI 可进行通道扩展以提高性能。 根据应用的带宽要求,Data Lane的数量可以是 1、2、3 或 4。
    接口的发送端将输出数据流分配到一个或多个通道。有相应的通道数据分配机制。
  4. PHY Layer:物理层。

DSI LayerMIPI 的协议庞大且版本众多,本文主要基于如下Spec版本:

  • MIPI Alliance Standard for D-PHY, version 0.65, November 2005
  • MIPI Alliance Standard for Display Bus Interface, version 2.00, November 2005
  • MIPI Alliance Standard for Display Parallel Interface, version 2.00, September 2005
  • MIPI Alliance Standard for Display Command Set, version 1.00, April 2006
  • MIPI Alliance Standard for Display Serial Interface V1.0

2 DSI Mode

DSI定义了两种基本操作模式,Video模式与Command 模式。使用哪种模式取决于外设的架构、功能与应用的目标。

2.1 Video 模式

Video模式是指从主机处理器到外围设备的传输采用实时像素流形式的操作。一般而言,显示模块依靠主机处理器以足够的带宽提供图像数据,以避免显示图像中的闪烁或其他可见伪影。而一些视频模式架构可能包括一个简单的时序控制器和部分帧缓冲区,用于在待机或低功耗模式下保持部分屏幕或较低分辨率的图像。 这允许关闭接口以降低功耗。当然为了降低复杂性和成本,仅在Video模式下运行的系统可以使用单向Data Lane。

视频信息只能使用高速模式传输。

2.2 Command 模式

Command模式是指其中事务主要采取将命令和数据发送到外设(例如显示模块)的形式的操作。显示控制器需要有本地寄存器和帧缓冲器。处理器通过向显示控制器发送命令、参数和数据来间接控制其显示行为,同时还可以读取显示模块状态信息或帧存储器的内容。 故Command模式操作需要一个双向Data Lane。

某些显示器仅能在LP模式下初始化

3 DSI Physical Layer

本节简要概述 DSI 中使用的物理层。 有关详细信息可以参考之前的D-PHY篇——MIPI 打怪升级之D-PHY篇
DSI使用一个或多个串行数据信号和一个串行时钟在主机处理器和外围设备之间传输信息。 **通过总线发送高速串行数据的动作称为 HS 传输或Burst。**在高速传输之间,差分数据信号或通道进入低功耗状态 (LPS),且接口在不主动发送或接收高速数据时也应处于低功耗状态 LPS。
下图为HS模式下的数据传输:
Basic HS Transmission Structure> 协议规定了一个字节即最小数据单元,一次传输包含整数个字节。

3.1 数据流控

由前面的结构图可知,底层为协议层将数据发给PHY层,但是协议层和 PHY 层之间没有握手,一旦传输开始,协议层就可以限制进出 PHY 层的数据传输。而数据包应完整无间断地发送和接收, 则需要链路两端的协议层和数据缓冲应始终具有等于或大于 PHY 层电路的带宽。 一个实际的结果是系统实现者应该确保接收器的带宽能力等于或大于发射器的带宽能力。

3.2 双向性

DSI 实现的物理层由一到四个数据通道和一个时钟通道组成。其中:

  • Command Mode:Data Lane0 应是双向的; 额外的Data Lane应是单向的。
  • Video Mode: Data Lane0 可以是双向的或单向的; 额外的Data Lane应是单向的。

Note:
Clock Lane应仅由Master驱动,而不能由外设驱动。
LP传输应仅使用Data Lane0。

PHY 和协议层之间的接口有几个控制总线方向的信号。当Master需要外设的响应使用。例如 返回 READ 数据或状态信息,它有如下流程:

  1. Master在传输的最后一个数据包期间向其 PHY 断言 TurnRequest;
  2. PHY 层拿到TurnRequest后在 EoT序列之后发送 BTA 命令;
  3. 当外设接收到 BTA 命令时,其 PHY 层将 TurnRequest 置为协议层的输入;
  4. 外设拿到TurnRequest 通知其接收协议层准备向Master发送响应;
  5. 外设发送响应后,外设同样使用 TurnRequest将总线控制权交还给Master。

BTA机制是需要在LP下实现的。

下图为测试过程抓的一个BTA波形:
BTA

3.3 Video Mode Interfaces

在 Video 模式下运行的 DSI TX 的最低 PHY 要求是:

  • • Data Lane Module:CIL-MUNN(HS-TX、LP-TX)
  • • Clock Lane Module:CIL-MCNN(HS-TX、LP-TX)
    在 Video 模式下运行的 DSI RX 的最低 PHY 要求是:
  • • Data Lane Module: CIL-SUNN (HS-RX, LP-RX)
  • • Clock Lane Module: CIL-SCNN (HS-RX, LP-RX)

3.4 Command Mode Interfaces

在 Command 模式下运行的 DSI TX 的最低 PHY 要求是:

  • • Data Lane Module: CIL-MUYY (HS-TX, LP-TX, LP-RX, and LP-CD)
  • •Clock Lane Module: CIL-MCNN (HS-TX, LP-TX)
    在 Command 模式下运行的 DSI RX 的最低PHY要求是:
  • • Data Lane Module: CIL-SUYY (HS-RX, LP-RX, LP-TX, and LP-CD)
  • •Clock Lane Module: CIL-SCNN (HS-RX, LP-RX)

3.5 Clock

DSI 时钟是从Master 到 Slave的信号。 它可能具有多种功能:

  1. Bit Clock:在整个链路上,DSI 时钟用作源同步位时钟,用于捕获接收器 PHY 中的串行数据位。
  2. Byte Clock:分频后,DSI 时钟用于在协议层和应用层之间的概念接口处生成Lane Byte Clock。
  3. Esc Clock: 分频后,DSI时钟用于LP模式。
  4. Application Clock(s):DSI 位时钟的分频版本可用于其他时钟功能。

所有 DSI TX/RX都应支持时钟通道上的连续时钟行为,并且可以选择支持非连续时钟行为(可降低功耗)。

Note: 在低功耗信号模式下,LP 时钟在功能上嵌入在数据信号中。当 LP 数据传输结束时,时钟有效停止,后续的 LP 时钟对外设不可用。如果外设需要额外的时钟来推进其逻辑状态,通过顺序缓冲区移动数据,或类似的,可能需要在 LP 传输中添加“虚拟”数据字节以实现状态机的前向进程或推进数据通过时序逻辑。
BTA 的握手过程只允许 Master 和 Slave 之间的 Escape Mode 时钟频率存在有限的不匹配。 Master 和 Slave 之间的 Escape Mode 频率比不得超过 3:2。Master 负责控制自己的时钟频率以匹配外设。Master 的 LP 时钟频率应在外围 LP 时钟频率的 67% 到 150% 范围内。因此,外设实现者应指定外设的标称 LP 时钟频率和保证的精度。

4 多通道管理

在PHY层之上有一个通道管理层,在发送端,负责数据的分发到每个 Lane,而在接收端,负责将多个 Lane 的数据合成。
如下图所示,即发送端分别在单Lane与4Lane的情况下数据的Lane上分布。
在这里插入图片描述接收端就正好相反,如下图所示,即发送端分别在单Lane与4Lane的情况下数据的Lane上分布。
在这里插入图片描述

4.1 通道数匹配

当Slave通道数与Master不匹配时,可以通过调整D-PHY的通道数来匹配对方。如下图所示:当Receiver PHY只有两条Data Lane,而Transmitter PHY有四条Data Lane。这是可以调整Transmitter PHY输出使用两条Data Lane,同理也可以将两边都调整为使用一条lane。而在这种情况下并不影响DSI与D-PHY之间的连接。
在这里插入图片描述

4.2 线上数据分布

我们知道DSI的数据是以Byte为最小单位的,使用的Data Lane的条数是可以调整。而一次传输包含了SOT、Data、EOT等。排布规则也比较简单:每条Lane都有自己的SOT与EOT,数据在SoT之后从Lane0~Lane3依次排布。
那么在线上则存在不同情况:
1,数据为Lane数的整数倍
在这里插入图片描述2,数据非Lane数的整数倍
在这里插入图片描述

5 DSI 协议

在 DSI 链路的发送端,并行数据、信号事件和命令会在协议层中转换为数据包。协议层附加数据包协议信息和包头,然后通过Lane管理层将所有字节发送到 PHY。 数据包由 PHY 序列化并通过串行链路发送。 DSI 链路的接收端执行与发送端相反的操作,将数据包分解为并行数据、信号事件和命令。

数据包协议和格式与使用的通道数无关。

DSI支持一次传输一个包活着多个包,每次传输包含一个SOT代表开始,一个EoT代表结束。要传 3 个包,那么如下所示两种方式:
在这里插入图片描述

5.1 包格式

DSI定义了两种数据包结构:长数据包和短数据包。 对于这两种数据包结构,数据标识符始终是数据包的第一个字节。

5.1.1 短包

一个短数据包包含一个 8 位数据 ID,后跟 2 个字节数据和一个 8 位 ECC。 短数据包的长度为 4 个字节。主要用于传输命令、参数、读写寄存器,也可以传输一些时序信息,比如Hsync、Vsync等。
在这里插入图片描述

5.1.2 长包

长数据包应由三个元素组成:32 位数据包头(PH)、具有可变字节数(0-65535)的特定应用数据有效负载和 16 位数据包尾(PF)。 包头进一步由三个元素组成:8 位数据标识符、16 位字数和 8 位 ECC。 包尾有一个元素,一个 16 位校验和。 长数据包的长度可以是 6 到 65,541 个字节。主要用于传输图像、视频等数据。
在这里插入图片描述> Word Count 仅指数据的长度,以Byte为单位,而不包含后续的Checksum。

5.2 Data ID

任何数据包的第一个字节是 DI(数据标识符)字节。 下图即数据标识符 (DI) 字节的组成。 DI[7:6]:这两位将数据标识为定向到四个虚拟通道之一。 DI[5:0]:这六个位指定数据类型。
在这里插入图片描述

5.3 ECC

ECC可以纠正单比特错误并在数据包报头中检测 2 比特错误。

外设应支持正向和反向通信中的 ECC。

5.4 Data Type(Processor -> Peripheral)

DSI的传输都是基于包传输的(分短包与长包),而每个包的第一个Byte一定是Data ID。由前面我们可知,Data ID由Virtual ID 与 Data Type组成。Virtual ID很好理解,代表当前虚拟通道号。Data Type 即知名我们传输的包是干什么的,这样对端接收到包,第一时间解析除Data Type,它就知道怎么准备接收了。

Data Type 是分方向的,即Processor -> Peripheral 与 Peripheral -> Processor。

在这里插入图片描述在这里插入图片描述

5.4.1 Sync Event (H Start, H End, V Start, V End), Data Type = XX 0001 (0xX1)

同步事件是短数据包,以准确地表示同步脉冲的开始和结束等事件 ==》“开始”和“结束”是独立且不同的事件,因此同步脉冲的长度以及相对于活动像素数据的位置,例如 前肩、后肩、SYNC等显示时序,可准确传达。

  • Data Type = 00 0001 (0x01) V Sync Start
  • Data Type = 01 0001 (0x11) V Sync End
  • Data Type = 10 0001 (0x21) H Sync Start
  • Data Type = 11 0001 (0x31) H Sync End
    事实上,一个表达 Sync Event 的 Packet,不可能只有 Data Type 撒,前面说了它是一个 Short Packet,那么作为一个 Short Packet ,就要有 Short Packet 的样子,即:DI + Data 0 + Data 1 + ECC。在解析DI之后,如果Data 0 的值为 0x00,那么 Data 0 和 Data 1 都会被直接无视,如果 Data 0 的值不为 0x00,那么对端就要去解析 Data 1 的内容。
    在这里插入图片描述在这里插入图片描述

5.4.2 EoTp, Data Type = 00 1000 (0x08)

它EoTp用于在链路层指示一个 High-Speed 传输结束;引入它的目的主要是增强 DSI 系统在高速传输时候的可靠性。早期的 DSI 协议并不支持这个,所以为了兼容旧的 DSI 协议,这个 EoTp 是一个可配置的。EoTp 的主要目标是在 HS 传输模式下增强系统的整体鲁棒性,在 Low-Power 的时候,不应该出现 EoTp。
一个支持 EoTp 的包,应该是下面这个样子:

  • Data Type = DI [5:0] = 0b001000
  • Virtual Channel = DI [7:6] = 0b00
  • Payload Data [15:0] = 0x0F0F
  • ECC [7:0] = 0x01

对于多通道系统,EoTp 字节分布在多个通道中。

5.4.3 Color Mode Cmd, Data Type = 00 0010 (0x02)、01 0010 (0x12)

Color Mode Off (0x02)是短数据包命令,它将Vide模式显示模块从low-color模式返回到正常显示。
Color Mode On (0x12)是短数据包命令,它将Vide模式显示模块从正常显示操作切到low-color模式。

5.4.4 Peripheral On/Off Cmd, Data Type = 10 0010 (0x22)、11 0010 (0x32)

Shutdown Peripheral(0x22)是短数据包命令,关闭视频模式显示模块中的显示以节省电力。但接口应保持通电以便接收开启命令。
Turn On Peripheral (0x32) 是短数据包命令,打开视频模式显示模块中的显示以进行正常显示操作。

5.4.5 Generic Write/Read Packet

Generic WRITE 有 4 种类型,3种Short Write Packet 与 1种 Long Write Packet:
它们目的是用于向显示设备发送通用数据;支持 0 ~ 2 个 Parameters。

  1. Data Types = 00 0011 (0x03):Short Write whit 0 个 parameter;
  2. Data Types = 01 0011 (0x13):Short Write whit 1 个 parameter;
  3. Data Types = 10 0011 (0x23):Short Write whit 2 个 parameters;
  4. Data Types = 10 1001 (0x29):Long Write;
    Generic READ 有 3 种 Read Packet:
    它们的主要目的是读取显示设备的寄存器与状态交互。
  5. Data Types = 00 0100 (0x04):Read whit 0 个 parameter;
  6. Data Types = 01 0100 (0x14):Read whit 1 个 parameter;
  7. Data Types = 10 0100 (0x24):Read whit 2 个 parameters;

BTA 应在该请求之后由主机端发送。
返回的数据,可能是 Short 也可能是 Long。
Set Max Return Packet Size 命令限制返回数据包的大小,以便主机端在从外设接收数据时防止缓冲区溢出。
完整的 Generic READ Request 包,和 WRITE 一样,当不传送 parameter 的时候,Data 0 和 Data 1 的内容设置为 0x00;当传输 1 个字节的 parameter 的时候,Data 0 就是这个 parameter,Data 1 需要被设置为 0x00;当传输 2 个字节的时候,直接往 Data 0 和 Data 1 里面写。
外设通过以下 2 种方式来回应主机的 READ :
1,如果外设监测到 Error,那么它会发送 Acknowledge and Error Report;如果是 ECC 错误被监测到,那么外设将按照主机的 READ 要求,返回需要读取的内容,同时在后面跟一个 Acknowledge and Error Report(在同一个传输中);
2,如果没有错误被监测到,那么外设就按照主机的要求返回数据(可能是 Short 和 Long 的 Packet)

5.4.6 DCS 命令

DCS 是用于命令模式显示模块的标准化命令集,在 MIPI 的 DCS 文档中专门进行描述。对于 DCS 命令,DI字节之后的第一个字节是 DCS 命令字节, 如果 DCS 命令不需要参数,则第二个有效载荷字节应为 0x00。

DCS命令共有 4 种:
1.Data Types = 00 0101 (0x05):Write whit 0 个 parameter;
2.Data Types = 01 0101 (0x15):Write whit 1 个 parameter;
3.Data Types = 11 1001 (0x39):Long Write;
4.Data Types = 00 0110 (0x06):DCS Read Request;

5.4.7 Set Maximum Return Packet Size, Data Type = 11 0111 (0x37)

Set Maximum Return Packet Size 是一个 Short Packet,用于指定外设发送给主机的 Long Packet 最多包含多少 payload,主要是怕主机的 buffer 爆掉,值得注意的是,当主机和外设 Power-on 或者 Reset 之后,在两者通信之前,这个值最好是先被设置好.

5.4.8 Null Packet (Long), Data Type = 00 1001 (0x09)

Null Packet 是一种在发送虚拟数据时将串行数据通道保持在高速模式的机制。 这是一个长数据包。 与所有数据包一样,其内容应为整数字节。Null 数据包由 DI 字节、两字节 WC、ECC 字节和 WC 字节的“空”有效载荷组成,以两字节校验和结束。 发送的实际数据值无关紧要,因为外围设备不捕获或存储数据。 但是,应生成 ECC 和校验和并将其传输到外设。

5.4.9 Blanking Packet (Long), Data Type = 01 1001 (0x19)

消隐数据包用于在长数据包中传送消隐时间信息。 通常,数据包代表Video模式显示器的有效扫描线之间的周期,其中传统的显示时序是从主机提供给显示模块的。 消隐期可能具有散布在消隐段之间的同步事件包。 与所有数据包一样,消隐数据包内容应为整数字节。 消隐数据包可能包含任意数据作为有效载荷。

5.4.10 YCbCr Packed Pixel Stream

YCbCr 格式的像素流主要有以下四种格式:
1. Loosely Packed Pixel Stream, 20-bit YCbCr 4:2:2 Format, Data Type = 00 1100 (0x0C)
在这里插入图片描述
2. Packed Pixel Stream, 24-bit YCbCr 4:2:2 Format, Data Type = 01 1100 (0x1C)
在这里插入图片描述
3. Packed Pixel Stream, 16-bit YCbCr 4:2:2 Format, Data Type = 10 1100 (0x2C)
在这里插入图片描述

  • Packed Pixel Stream, 12-bit YCbCr 4:2:0 Format, Data Type = 11 1101 (0x3D)
    在这里插入图片描述

5.4.11 RGB Packed Pixel Stream

RGB 格式的像素流主要有以下六种格式:

  • 1. Packed Pixel Stream, 30-bit Format, Long Packet, Data Type = 00 1101 (0x0D)
    在这里插入图片描述
    2. Packed Pixel Stream, 36-bit Format, Long Packet, Data Type = 01 1101 (0x1D)
    在这里插入图片描述
    3. Packed Pixel Stream, 16-bit Format, Long Packet, Data Type 00 1110 (0x0E)
    在这里插入图片描述
    4. Packed Pixel Stream, 18-bit Format, Long Packet, Data Type = 01 1110 (0x1E)
    在这里插入图片描述
    5. Pixel Stream, 18-bit Format in Three Bytes, Long Packet, Data Type = 10 1110 (0x2E)
    在这里插入图片描述
    6. Packed Pixel Stream, 24-bit Format, Long Packet, Data Type = 11 1110 (0x3E)
    在这里插入图片描述

5.4.12 Execute Queue (0x16)

Execute Queue (0x16)是发送到一个显示驱动的短数据包,它控制和同步显示模块中的其他显示驱动以执行存储在执行队列中的帧同步命令 (FSC)。显示模块内的每个显示驱动可能已将一个或多个命令存储在Execute Queue中。
显示驱动接收执行队列:

  1. 如果使用Video模式,同步显示驱动以执行排队的 FSC 与下一个垂直同步脉冲或事件一致。
  2. 如果使用Cmd模式,同步显示驱动以在命令模式下执行排队的 FSC 与显示驱动程序内部处理的下一个撕裂效果一致。
    接收执行队列的显示驱动程序包含一种机制,用于同步每个显示驱动程序以启动排队命令的处理。
    短包数据字节 0 和 1 的值未指定,被外设忽略。 允许发送到除主 DDIC 以外的 DDIC 的执行队列,但被忽略。

5.4.13 DO NOT USE and Reserved Data Types

不应使用具有四个 LSB = 0000 或 1111 的数据类型代码。 保留所有其他未指定的数据类型代码。

5.5 Data Type(Peripheral -> Processor)

与5.4对应的,也有Peripheral -> Processor方向的Data Type。
在这里插入图片描述在这里插入图片描述

5.5.1 Acknowledge and Error Report, Data Type 00 0010 (0x02)

外设检测到主机端发送的包有错误,但是主机一直没有发BTA,则外设就没有机会将错误报给主机。所以当主机发送BTA时,如果外设之前检测到了错误,外设就会第一时间发送Acknowledge and Error Report 来告诉主机。但是这里弊端也很明显,如果主机不是每次传输都发送BTA来接收外设的回复,则主机接收到错误报告之后无法判断时哪次传输有错。
在可纠正的 ECC 错误被监测到后,这个 Acknowledge and Error Report 会跟随被读到的 data 数据,在同一个 LP 传输下传送给 Host。

5.5.2 End of Transmission packet (EoTp), Data Type 00 1000(0x08)

5.5.3 Generic Read Response, 1 or 2 or long Bytes

这个 packet 是为了响应来自 主机 的 Generic READ Request,共有三种方式:
1.Data Types = 01 0001 (0x11):即返回一个Byte Data0;
2.Data Types = 01 0010 (0x12):即返回两个Bytes Data0 与 Data1;
3.Data Types = 01 1010 (0x1A):即返回N个Bytes payload data;

如果命令本身可能由于不可纠正的 ECC 错误、SoT 或 SoT 同步错误而损坏,则不应发送请求的 READ 数据包,而应仅发送确认和错误报告包

5.5.4 DCS Read Response, 1 or 2 or long Bytes

这个 packet 是为了响应来自 主机 的 DCS READ Request,共有三种方式:
1.Data Types = 10 0001 (0x21):即返回一个Byte Data0;
2.Data Types = 10 0010 (0x22):即返回两个Bytes Data0 与 Data1;
3.Data Types = 01 1100 (0x1C):即返回N个Bytes payload data;

5.6 Video Mode Interface Timing

Video模式外设需要实时传送像素数据。 DSI有三种模式支持:
1,Non-Burst Mode with Sync Pulses:使外设能够精确地重建原始视频时序,包括同步脉冲宽度;
2,Non-Burst Mode with Sync Events:与上述类似,但不需要精确重建同步脉冲宽度,因此会使用单个 Sync Event;
3,Burst mode:RGB 像素数据 Packet 经过时间压缩,在扫描线期间留出更多时间用于 LP 模式(节省功耗)或将其他传输多路复用到DSI 链路上;

这里,定义了一个叫做 BLLP(Blanking or Low-Power Interval) 的东西:视频数据包未传输到外设的时间段;

为了能够正常的进行 PHY 的同步,host processor 需要周期性的关闭 High-Speed 传输,让 Data Lane 进入 LP 模式;至少每一帧开始都会做一次这样的操作;同时,Host Processor 应该在每次水平扫描消隐的时候,切换到 LP 模式;

在 BLLP 期间,DSI 链接可以做可以做下面的事情:

  1. Host Processor 保持在 Idle 状态(LP-11),外设处于 LP-RX;
  2. 在 Escape 模式下,向外设传输 1 个或者多个非 video packet;
  3. 在 High-Speed 模式下,向外设传输 1 个或者多个非 video packet;
  4. 如果前一个 processor-to-peripheral 的传输以 BTA 结尾,使用 Escape 模式,从外设传输 1 个或者多个 packets;
  5. 通过指定 Virtual Channel ID,Host 向多个不同的外设传输数据包;

在这里插入图片描述

5.6.1 Non-Burst Mode with Sync Pulses

使用这种格式,目标是通过 DSI 串行链路准确传送 DPI 类型的时序。 这包括匹配的 DPI 像素传输率,以及同步脉冲等定时事件的宽度。 因此,同步周期是使用发送同步脉冲的开始和结束的分组来定义的。
在这里插入图片描述

5.6.2 Non-Burst Mode with Sync Events

这个是上面那个的简化模式,只有每个同步脉冲的 Start 被传输,外设那边根据收到的 Sync Event 重新生成同步脉冲;像素按照和上面一样的速度传输。
在这里插入图片描述

5.6.3 Burst Mode

这种模式下,大量的像素数据能够在更短的时间内进行传输,使用 time-compressed burst 格式;这样可以有效降低 DSI 的功耗。
在这里插入图片描述

6 DSI 错误检测

对于 DSI 系统,EMI、ESD 或其他瞬态错误机制可能会导致链路的一端进入错误状态,或者链路传输损坏的数据。故错误检测机制对于系统的稳定性不言而喻。在DSI中,错误检测主要是分三个部分:

  1. Low-Level Protocol Errors
  2. Contention Detection and Recovery
  3. Additional Timers
    接下来分别进行介绍。

6.1 Low-Level Protocol Errors

PHY 中的逻辑可以检测某些类别的协议错误, 这些错误通过 PHY 协议接口传达给协议层。 外设识别以下错误并将其存储为状态位,以便后续向主机处理器报告:
• SoT Error
• SoT Sync Error
• EoT Sync Error
• Escape Mode Entry Command Error
• LP Transmission Sync Error
• False Control Error
在这里插入图片描述

6.2 Contention Detection and Recovery

Contention是十分严重的问题,虽然非常罕见,但可能会导致系统挂起并强制进行硬重置或断电/通电循环以恢复。DSI 定义了两种机制来最大限度地减少此问题并实现更轻松的恢复:
1,用于 LP 模式争用的 PHY 中的争用检测器;
2,以及用于其他形式的争用和共模故障的定时器;

6.2.1 Contention Detection in LP Mode

在双向链路中,PHY 中的争用检测器应检测两种类型的争用错误:LP High 错误和 LP Low错误。当检外设测到任一争用故障时,应在错误报告字节中设置检测到争用。
下面用一个流程举例:、
在这里插入图片描述

6.2.2 Contention Recovery Using Timers

PHY 无法检测所有形式的争用。 使用适当的定时器超时机制可确保发生的任何争用都是有限的持续时间。即在传输过程使用一个定时器计数,则可以通过超时机制来判断传输是否出问题。目前共有四种超时机制:

  1. HS RX Timeout (HRX_TO) in Peripheral
  2. HS TX Timeout (HTX_TO) in Host Processor
  3. LP TX-Peripheral Timeout (LTX-P_TO)
  4. LP-RX Host Processor Timeout (LRX-H_TO)

6.3 Additional Timers

上述两种方法也未必能检测出所有错误,故DSI补充了另外即定时器,对其他操作进行检测。主要是为一下操作提供超时机制:

  1. Turnaround Acknowledge Timeout (TA_TO)
  2. Peripheral Reset Timeout (PR_TO)
  3. Peripheral Response Timeout (PRESP_TO)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值