MIPI 打怪升级之DSI篇

MIPI 打怪升级之DSI篇

目录

  • 1 Overview
  • 2 DSI Mode
    • 2.1 Video 模式
    • 2.2 Command 模式
  • 3 DSI Physical Layer
    • 3.1 数据流控
    • 3.2 双向性
    • 3.3 Video Mode Interfaces
    • 3.4 Command Mode Interfaces
    • 3.5 Clock
  • 4 多通道管理
    • 4.1 通道数匹配
    • 4.2 线上数据分布
  • 5 DSI 协议
    • 5.1 包格式
      • 5.1.1 短包
      • 5.1.2 长包
    • 5.2 Data ID
    • 5.3 ECC
    • 5.4 Data Type(Processor -> Peripheral)
      • 5.4.1 Sync Event (H Start, H End, V Start, V End), Data Type = XX 0001 (0xX1)
      • 5.4.2 EoTp, Data Type = 00 1000 (0x08)
      • 5.4.3 Color Mode Cmd, Data Type = 00 0010 (0x02)、01 0010 (0x12)
      • 5.4.4 Peripheral On/Off Cmd, Data Type = 10 0010 (0x22)、11 0010 (0x32)
      • 5.4.5 Generic Write/Read Packet
      • 5.4.6 DCS 命令
      • 5.4.7 Set Maximum Return Packet Size, Data Type = 11 0111 (0x37)
      • 5.4.8 Null Packet (Long), Data Type = 00 1001 (0x09)
      • 5.4.9 Blanking Packet (Long), Data Type = 01 1001 (0x19)
      • 5.4.10 YCbCr Packed Pixel Stream
      • 5.4.11 RGB Packed Pixel Stream
      • 5.4.12 Execute Queue (0x16)
      • 5.4.13 DO NOT USE and Reserved Data Types
    • 5.5 Data Type(Peripheral -> Processor)
      • 5.5.1 Acknowledge and Error Report, Data Type 00 0010 (0x02)
      • 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
      • 5.5.4 DCS Read Response, 1 or 2 or long Bytes
    • 5.6 Video Mode Interface Timing
      • 5.6.1 Non-Burst Mode with Sync Pulses
      • 5.6.2 Non-Burst Mode with Sync Events
      • 5.6.3 Burst Mode
  • 6 DSI 错误检测
    • 6.1 Low-Level Protocol Errors
    • 6.2 Contention Detection and Recovery
      • 6.2.1 Contention Detection in LP Mode
      • 6.2.2 Contention Recovery Using Timers
    • 6.3 Additional Timers

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:物理层。

MIPI 的协议庞大且版本众多,本文主要基于如下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模式下的数据传输:

> 协议规定了一个字节即最小数据单元,一次传输包含整数个字节。

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波形:

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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217557.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟退火算法应用——求解一元函数的最小值

仅作自己学习使用 一、问题 需求: 计算函数 的极小值,其中个体x的维数n10,即x(x1,x2,…,x10),其中每一个分量xi均需在[-20,20]内。因此可以知道,这个函数只有一个极小值点x (0,0,…,0),且其极小值是0&…

Spring - Mybatis-设计模式总结

Mybatis-设计模式总结 1、Builder模式 2、工厂模式 3、单例模式 4、代理模式 5、组合模式 6、模板方法模式 7、适配器模式 8、装饰者模式 9、迭代器模式 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,…

流量分析-PhishingEmail_WriteUp

一、题目问题 问题1:黑客的email名称 问题2:黑客向几人发送了钓鱼邮件 问题3:黑客传输的木马文件名 问题4:下载并运行了木马文件的人的email名称和ip地址,用“-”连接 问题5:黑客用于反弹shell的主机i…

YOLOv8 训练自己的分割数据集

之前写过一篇 使用YOLOv8训练自己的【目标检测】数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】,里面带大家整个流程走过一遍了, 这篇文章我们来介绍如何使用 YOLOv8 训练分割数据集&a…

JAVA小游戏“简易版王者荣耀”

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im…

Leetcode—55.跳跃游戏【中等】

2023每日刷题&#xff08;四十&#xff09; Leetcode—55.跳跃游戏 贪心法实现代码 #define MAX(a, b) ((a > b)? (a): (b))bool canJump(int* nums, int numsSize) {int k 0;for(int i 0; i < numsSize; i) {if(i > k) {return false;}k MAX(k, i nums[i]);}r…

借助 XEOS V6, 农牧龙头企业实现原有存储的高效在线替换

面对旧有存储系统的应用不足&#xff0c;某大型现代农牧龙头企业采用了星辰天合的对象存储 XEOS V6 方案&#xff0c; 该方案以其卓越的技术架构和同城双活异地灾备的解决方案完整性&#xff0c;在无缝高效完成系统替换的同时&#xff0c;可以极大地提升系统的灵活性和业务的连…

自定义精美商品分类列表组件 侧边栏商品分类组件 category组件(适配vue3)

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。通过组件化开发&#xff0c;可以有效实现单…

AT89S52单片机智能寻迹小车自动红外避障趋光检测发声发光设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;寻迹 获取完整说明报告源程序数据 小车具有以下几个功能&#xff1a;自动避障功能&#xff1b;寻迹功能&#xff08;按路面的黑色轨道行驶&#xff09;&#xff1b;趋光功能&#xff08;寻找前方的点光源并行驶到位&…

枚举与应用

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 枚举简介 枚举是一种特…

ZKP11.4 Use CI to instantiate Fiat-Shamir

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 11: From Practice to Theory (Guest Lecturer: Alex Lombardi) 11.4 Use CI to instantiate Fiat-Shamir Avoid Bad Challenges Def: Given false claim x x x and a first message α \alpha α, a challenge β \beta …

YOLO目标检测——二维码检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;二维码识别、追踪与管理系统数据集说明&#xff1a;二维码检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo…