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.mzph.cn/news/169621.shtml

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

相关文章

秋招如何准备?有什么建议?

秋招,是毕业生最好的求职渠道,没有之一。尽管还有春招,社招......都不如秋招重要,因为秋招的机会更多..... 如何准备秋招? 1、简历很重要 一个好的简历,就是敲门砖,这是你跟企业HR的第一次亲…

什么是测试系统工程师(TSE)

TSE(TestSystemEngineer)简称测试系统工程师,作为系统工程(SE)团队的一员,很多公司目前还没有这样的角色,导致测试部分往往处理弱势,第一,不能进行端到端开发流程的测试,第二,不能对产品最终的测…

Vue + Element UI 实现复制当前行数据功能及解决复制到新增页面组件值不更新的问题

文章目录 引言第一部分:复制当前行数据功能的实现1.1 环境准备1.2 创建表格并渲染数据1.3 解决复制的数据不更新问题 第二部分:拓展知识2.1 Vue的响应性原理2.2 Element UI的更多用法 结语 Vue Element UI 实现复制当前行数据功能及解决复制到新增页面组…

王者荣耀——Java

代码如下: sxt Background package sxt;import java.awt.*; //背景类 public class Background extends GameObject{public Background(GameFrame gameFrame) {super(gameFrame);}Image bg Toolkit.getDefaultToolkit().getImage("C:\\Users\\24465\\Desk…

软件测试 | 解决‘pip‘ 不是内部或外部命令,也不是可运行的程序或批处理文件

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

基于springBoot+Vue的停车管理系统

开发环境 IDEA JDK1.8 MySQL8.0Node 系统简介 本项目为前后端分离项目,前端使用vue,后端使用SpringBoot开发,主要的功能有用户管理,停车场管理,充值收费,用户可以注册登录系统,自主充值和预…

【数据结构】用C语言实现顺序栈(附完整运行代码)

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个顺序栈: 该顺序栈使用动态内存分配空间,可以用来存储任意数量的同类型数据. 顺序栈结构体需要包含三个要素:存放数据的数组…

软件测试 | MySQL 主键约束详解:保障数据完整性与性能优化

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

Maven总结

文章目录 为什么学习Maven?一、Maven项目架构管理工具二、Maven的下载安装及配置1.maven的下载2.maven目录结构3.配置阿里云镜像和本地仓库:4.maven配置环境变量。5.阿里云镜像和本地仓库说明 三、idea中maven的操作1.以模板的形式创建maven项目2.其他配置maven的方式3.不勾模…

基础C语言编程题

int i,j; int a[3][3]; for(i0;i<3;i){for(j0;j<3;j){scanf("%d",&a[i][j]);a[i][j]a[i][j]*2;}} 6.功能&#xff1a;把20个随机数存入一个数组&#xff0c;然后输出该数组中的最大值。 int main(){int p[20];int i,max0;for(i0;i<20;i){scanf("…

浅谈现代化城市建设中智慧消防的研究与应用

安科瑞 华楠 【摘要】随着城市现代化发展&#xff0c;城市居住密度愈来愈大&#xff0c;城市建筑结构复杂多样化&#xff0c;高层建筑火灾发生率在不断地升高。对现代化城市面临的消防问题展开讨论&#xff0c;针对智慧消防在现代化城市建设中的现状进行了分析&#xff0c;并提…

python cv2.imread()和Image.open()的区别和联系

文章目录 1. cv2.imread()1.1 cv2.imread参数说明1.2 注意事项 2. Image.open()3. cv2.imread()与Image.open()相互转化3.1 cv2.imread()转成Image.open()&#xff1a;Image.fromarray()3.2 Image.open()转成cv2.imread()&#xff1a;np.array() 1. cv2.imread() cv2.imread()…

每日一题--删除链表的倒数第 N 个结点

破阵子-晏殊 燕子欲归时节&#xff0c;高楼昨夜西风。 求得人间成小会&#xff0c;试把金尊傍菊丛。歌长粉面红。 斜日更穿帘幕&#xff0c;微凉渐入梧桐。 多少襟情言不尽&#xff0c;写向蛮笺曲调中。此情千万重。 目录 题目描述&#xff1a; 思路分析&#xff1a; 方法及…

RK3568驱动指南|第八篇 设备树插件-第72章 设备树插件语法和编译实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

【Python百宝箱】Python轻松操控邮件:SMTP、POP3和IMAP的魅力

前言 在数字时代&#xff0c;电子邮件作为信息传递的主要手段&#xff0c;对个人和企业的日常工作至关重要。Python提供了多个强大的库&#xff0c;使得电子邮件的发送和接收变得轻松而灵活。本文将深入介绍Python中与电子邮件相关的主要库&#xff0c;为读者提供从基础到高级…

Diffusion Model: DDIM

本文相关内容只记录看论文过程中一些难点问题&#xff0c;内容间逻辑性不强&#xff0c;甚至有点混乱&#xff0c;因此只作为本人“备忘”&#xff0c;不建议其他人阅读。 DENOISING DIFFUSION IMPLICIT MODELS: https://arxiv.org/abs/2010.02502 前序知识 DDPM&#xff1a;…

零基础学python第一天||数和四则运算

数和四则运算 一提到计算机&#xff0c;当然现在更多人把她叫做电脑&#xff0c;这两个词都是指computer。不管什么&#xff0c;只要提到她&#xff0c;普遍都会想到她能够比较快地做加减乘除&#xff0c;甚至乘方开方等。乃至于&#xff0c;有的人在口语中区分不开计算机和计…

OSG粒子系统与阴影-雨效、雪效模拟(2)

雪效模拟示例 雪效模拟示例的代码如程序清单11-2所示&#xff1a; 1. /* 雪效模拟示例 */ 2. void snow_11_2(const string &strDataFolder) 3. { 4. osg::ref_ptr<osgViewer::Viewer> viewer new osgViewer::Viewer(); 5. osg::ref_ptr<osg::G…

如何学习VBA:3.2.8 OnTime方法与OnKey方法

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的劳动效率&#xff0c;而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册&#xff0c;现在已经全部完成&#xff0c;希望大家利用、学习。 如果…

System-V共享内存和基于管道通信实现的进程池

文章目录 一.进程间通信:进程间通信的本质: 二.Linux管道通信匿名管道:关于管道通信的要点:基于匿名管道构建进程池: 三.System-V共享内存共享内存和命名管道协同通信 参考Linux内核源码版本------linux-2.4.3 一.进程间通信: 操作系统中,为了保证安全性,进程之间具有严格的独…