MIPI CSI 接口定义与协议层介绍

news2024/11/19 13:25:39

文章目录

  • Definitions and Acronyms
  • CSI-2 Brief
  • D-PHY
  • C-PHY
  • M-PHY
  • CSI-2 Layer Definitions
  • Multi-Lane Distribution and Merging
  • Multi-Lane Interoperability
  • Protocol Layer
  • Low Level Protocol
  • Packet Format
  • Long Packet Format
  • What does D-PHY Long Packet look like?
  • What does C-PHY Long Packet look like?
  • Short Packet Format
  • What does D-PHY Short Packet look like?
  • What does C-PHY Short Packet look like?
  • Data Identifier (DI)
  • Virtual Chanel Identifier
  • Data Type(DT)
  • Error Correction Code (ECC) for D-PHY
    • Checksum Generation for C-PHY
  • Packet Spacing
    • Line and Frame Blanking
  • Frame and Line Synchronization Packets
  • Frame Format Examples
  • Data Interleaving
  • Data Type Interleaving
  • Virtual Channel Identifier Interleaving
  • Data Formats
  • Reference
  • 原文链接


在大数据早已普及的今日,尤其随着 5G 技术和移动设备的逐渐普及,各种有线或无线的传输技术也迎来了迅猛发展,内容日新月异、错综复杂,你又能窥探其中多少呢?本文将简单介绍高速影音传输技术 MIPI, 主要基于 CSI-2 。

MIPI(Mobile Industry Processor Interface, 移动产业处理器接口) Alliance, 即 MIPI 联盟发起并为移动应用处理器制定了开放标准和一种规范。主要是手机内部的接口(摄像头、显示屏接口、射频/基带接口)等标准化,从而减少手机内部接口的复杂程度及增加设计的灵活性。

MIPI 联盟下面有不同的工作组,分别定义的一系列接口标准,比如 CSI(Camera Serial Interface, 摄像头串行接口)DSI(Display Serial Interface,显示串行接口)DigRF(射频接口)、**SLIMBUS(麦克风、喇叭接口)**等,其优点是更低功耗,更高数据传输数量和更小的空间。

![](https://i-blog.csdnimg.cn/direct/59fe9ccb9531496596e047e81ec7e27f.png)

Definitions and Acronyms

NameDescription
LaneA unidirectional, point-to-point, 2- or 3-wire interface used for high-speed serial clock or data transmission
PacketA group of bytes organized in a specified way to transfer data across the interface
PayloadApplication data only – with all sync, header, ECC and checksum and other protocol-related information removed
SLM(Sleep Mode)a leakage level only power consumption mode
VC(Virtual Channel)Multiple independent data streams for up to four peripherals
BERBit Error Rate
CCICamera Control Interface
CILControl and Interface Logic
CRCCyclic Redundancy Check
CSICamera Serial Interface
CSPSChroma Shifted Pixel Sampling
DDRDual Data Rate
DIData Identifier
DTData Type
ECCError Correction Code
EoTEnd of Transmission
EXIFExchangeable Image File Format
FEFrame End
FSFrame Start
HSHigh Speed; identifier for operation mode
HS-RXHigh-Speed Receiver
HS-TXHigh-Speed Transmitter
I2CInter-Integrated Circuit
JFIFJPEG File Interchange Format
JPEGJoint Photographic Expert Group
LELine End
LLPLow Level Protocol
LSLine Start
LSBLeast Significant Bit
LSSLeast Significant Symbol
LPLow-Power; identifier for operation mode
LP-RXLow-Power Receiver (Large-Swing Single Ended)
LP-TXLow-Power Transmitter (Large-Swing Single Ended)
MSBMost Significant Bit
MSSMost Significant Symbol
PFPacket Footer
PHPacket Header
PIPacket Identifier
PTPacket Type
PHYPhysical Layer
PPIPHY Protocol Interface
RGBColor representation (Red, Green, Blue)
RXReceiver
SCLSerial Clock (for CCI)
SDASerial Data (for CCI)
SLMSleep Mode
SoTStart of Transmission
TXTransmitter
ULPSUltra low Power State
VGAVideo Graphics Array
YUVColor representation (Y for luminance, U & V for chrominance)

CSI-2 Brief

CSI-2 替 MIPI 定义了两种高速数据传输接口(物理层选项)和一组控制接口的标准。

  • D-PHY 物理层选项
  • C-PHY 物理层选项
  • CCI (Camera Control Interface)

D-PHY

MIPI 联盟定义的常见的 D-PHY 接口支持高速(HS)和低速(LP)模式,为 1 路单向差分接口,分为:

  • 2 组差分时钟(clk)
  • 1 或者多组差分数据通道(data lanes)

C-PHY

另一种常见的 C-PHY 接口,为 1 或多路单向 3-wire 串行数据通道, 每路有自己的时钟。

M-PHY

聊到了 C-PHY 和 D-PHY,也顺便提一下 M-PHY, M-PHY 目前接触比较少, 其在功耗和性能方面有更多的考量,三种 PHY 的特性如下:

CCI
参见如上两幅图片的 CCI 部分。D-PHY 和 C-PHY 的 CCI 接口是一组与 I2C 标准协议兼容的双向控制接口, 兼容 I2C 的高速模式(400 KHZ)和 7 位从设备地址,不支持多主设备模式。CCI 是 I2C 协议的一个子集,然后其在 I2C 上面定义了一个附加的数据协议层。详见 CSI-2 Spec。

CSI-2 Layer Definitions

CSI-2 就协议的层级来看,大致可以分为 3 层:

  • 物理层(PHY Layer): 定义传输媒介、电器特性、IO 电路、同步机制、指定 SoT(Start of Transmission) 和 EoT(End of Transmission)信号等。如 M-PHY, D-PHY, C-PHY 等。
  • 协议层(Protocol Layer): 定义传输数据时,如何标记和交错多个数据流(Data Stream),以便接收端重建每个数据流。
  • 应用层(Application Layer): 对数据流进行处理,如分析,编解码。

Multi-Lane Distribution and Merging

MIPI 会通过 CSI 的 LDF (Lane Distribution Function) 将数据平均且有序地分配到每一条 Lane。

D-PHY:


C-PHY


Multi-Lane Interoperability

一般会采用最通用硬件配置,譬如 D-PHY 的 4 组 Data Lan 和 1 组 Clock。但是有时也会存在发送端和接收端 Data Lan 不匹配的问题,如果使用不适当的配置,就会影响 MIPI 传输的性能。

譬如: M Lanes 的传输端, N Lanes 的接收端。

  • M <= N, 传输端小于等于接收端时,不会有性能问题。

  • M > N, 传输断大于接收端时,就会有性能问题。

Protocol Layer

MIPI 协议层可以分为 3 级:

  • 通道管理(Lane Management): 将传输的数据流分配到一个或多个通道,并在接收端恢复原始数据流。
  • LLP (Low Level Protocol): 将数据里封装成不同形式的长包和短包。
  • 封拆像素包(Pixel Packing/Unpacking): 传输端将像素包拆为 bytes,接收端将 bytes 还原。

Low Level Protocol

LLP (Low Level Protocol) 是一种面向字节、基于数据包的协议,支持使用短包和长包格式传输任意数据。主要特性如下:

  • 8-bit
  • 每 link 支持最多 4 个 VC (Virtual Channels)通道
  • 数据的类型、像素深度和格式的描述符 (type,pixel depth and format)

Packet Format

如下图所示,有长包和短包两种数据包结构,其格式和大小依赖于物理层的选择(D-PHY or C-PHY)。 每种物理层接口都是以退出低功耗状态(LPS, Low Power State), 发送一个 SOT 短包作为开始,然后通过长包发送数据,最后以发送一个 EoT 短包,切换回低功耗状态为结束。

Long Packet Format

长包由 DT 值 0x10~0x37 进行标识, 详情见 Data Type(DT) 章节。

What does D-PHY Long Packet look like?

What does C-PHY Long Packet look like?

Short Packet Format

D-PHY 和 C-PHY 的短包有一定的差异,短包与相应协议长包的包头(PH)相匹配,没有包脚(PF)和长包数据(Paket Filler), 另需把包头的 WC 字段用短包数据替换,短包的数据由 DT 值 0x00~0x0F 标示。详情见 Data Type(DT) 章节。

对于帧同步短包,短包数据为帧号; 对于行同步短包,短包数据为行号;对于通用短包,短包数据为用户自定义。

What does D-PHY Short Packet look like?

What does C-PHY Short Packet look like?

Data Identifier (DI)

DI 字节由 VC(Virtual Chanel) 和 DT (Data Type) 两部分组成。如下图:

Virtual Chanel Identifier

虚拟通道标识符是为数据流中交错的不同数据流提供单独的通道,接收器会监控并拆分交错的数据流到合适的通道。 MIPI 联盟规定最多可以支持 4 路数据流,也就是 4 路 VC。外设中的虚拟通道标识符应该是可编程的,以允许主机处理器控制数据流的解复用方式。逻辑信道的原理如下图:


交错的数据流格式示例如下:

总共三组

Data Type(DT)

DT 指定数据的格式和内容,支持最大 64 个 DT,总共有 8 种不同的类型,每种支持 8 个 DT,前两个类型代表短包,其余的代表长包。如下:

Data TypeDescription
0x00 to 0x07Synchronization Short Packet Data Types
0x08 to 0x0FGeneric Short Packet Data Types
0x10 to 0x17Generic Long Packet Data Types
0x18 to 0x1FYUV Data
0x20 to 0x27RGB Data
0x28 to 0x2FRAW Data
0x30 to 0x37User Defined Byte-based Data
0x38 to 0x3FReserved

同步短包又分为帧同步和行同步:

Data TypeDescription
0x00Frame Start Code
0x01Frame End Code
0x02Line Start Code (Optional)
0x03Line End Code (Optional)
0x04 to 0x07Reserved

通用短包:

Data TypeDescription
0x08Generic Short Packet Code 1
0x09Generic Short Packet Code 2
0x0AGeneric Short Packet Code 3
0x0BGeneric Short Packet Code 4
0x0CGeneric Short Packet Code 5
0x0DGeneric Short Packet Code 6
0x0EGeneric Short Packet Code 7
0x0FGeneric Short Packet Code 8

通用长包:

Data TypeDescription
0x10Null
0x11Blanking Data
0x12Embedded 8-bit non Image Data
0x13Reserved
0x14Reserved
0x15Reserved
0x16Reserved
0x17Reserved

接收端需要忽略 Null 和 Blanking Data 数据类型的包的内容, 空包(Null)没有任何意义,消隐包(Blanking Data)可以作为视频流帧之间的消隐行。

在帧的开头可能有 0 或多行嵌入数据,这部分被称之为帧头(FS),在帧的末尾可能有 0 或多行嵌入数据,这部分被称之为帧尾。如果行存在 Embedded 数据,则 DI 中需要包含其 DT。如下图:

Error Correction Code (ECC) for D-PHY

包头的 ECC 允许纠正 DI 和 WC 的 1-bit 错误并为 D-PHY 检测 2-bit 错误,因此, ECC 的 D[7:6] 应该为 0。DI[7:0] 应映射到 ECC 输入的 D[7:0],WC[7:0] 映射到 D[15:8], WC[15:8] 映射到 D[23:16]。如下图:

Checksum Generation for C-PHY

ECC 在 C-PHY 无效

Packet Spacing

MIPI 数据包由 EoT, LPS, SoT 分隔开,在协议包之间必须有一个进入和退出 LPS(低功耗)的状态切换,称之为包间隔(Packet Spacing)。其不必是 8 位字的倍数,因为接收器将在下一个数据包的包头之前的 SoT 序列期间重新同步到正确的字节边界。


单包实例如下:

图中的 VVALID、HVALID和DVALID 为虚拟的帧同步(VSYNC)、行同步(HSYNC)和有效数据同步(DE,亦可称为数据使能信号)信号。

在这里插入图片描述
多包实例如下:

在这里插入图片描述

从上图也可以看到,从 LLP 封包 Checksum、EoT、LPS、SOT,一直到 PH,正好处于行同步信号为低,这段区间就是每行的 Blanking 区间。

Line and Frame Blanking

长包 EoF, 下一个长包 SoF,以及之间的 LPS 称之为 Line Blanking; 帧尾(FE)后的 EoT,下一帧帧头(FS)前的 SoT,以及之间的 LPS 称之为 Frame Blanking。


再从行同步和帧同步的角度,来看看帧尾和帧头之间的 LPS (VSYNC 区域),即 Frame Blanking,以及行尾行头之间的 Line Blanking,会更加容易理解。

Frame and Line Synchronization Packets

帧头(FS)帧尾(FE)之间至少包含 1~n 个图像数据长包,0~n 个代表同步讯号的短包,也就是说行头(SoT)行尾(EoT)的短包是可以省略的。

Frame Format Examples

YUV、RGB 和 RAW 数据的每一个长包包含 1 行图像数据。

通用帧格式实例如下,行头(SoT)行尾(EoT)的短包被省略,且帧头(FS)和第一个长包,以及最后一个长包和帧尾(FE)之间的 LPS 要尽可能的短,如下画圈部分。


数字隔行视频格式实例:


精确同步的数字隔行视频格式实例如下,未省略行头行尾的短包。


如下为高速模式下数据和时钟的关系图,可以清楚地了解到高低速序号, LPS 的转变过程。

Data Interleaving

数据交错(Data Interleaving)主要有两种方式:1. 通过 DT 区分; 2. 通过 VC 区分。

Data Type Interleaving

所有的包使用同一 VC,然后独立的 DT,共享帧头(FS)帧尾(FE)和行头(SoT)行尾(EoT), 如下:


按包交错的格式如下:


按帧交错的格式如下:

Virtual Channel Identifier Interleaving

每一个 VC 拥有自己的帧头(FS)和帧尾(FE),而且每一个 VC 还可以继续通过 DT 来扩展数据通路。

Data Formats

Primary 代表广泛采用的数据格式,MIPI 联盟规定发送端需要支持至少一个 primary 格式,接收端需要支持所有的 Primary 数据格式。

Data TypeDescription
Data FormatPrimarySecondary
YUV420 8-bit (legacy)S
YUV420 8-bitS
YUV420 10-bitS
YUV420 8-bit (CSPS)S
YUV420 10-bit (CSPS)S
YUV422 8-bitP
YUV422 10-bitS
RGB888P
RGB666S
RGB565P
RGB555S
RGB444S
RAW6S
RAW7S
RAW8P
RAW10P
RAW12S
RAW14S
Generic 8-bit Long Packet Data TypesP
User Defined Byte-based Data (Note 1)P

Reference

Specification for Camera Serial Interface 2 (CSI-2)。

原文链接

  • https://huaqianlee.github.io/2021/09/22/Camera/MIPI%20interface%20overview/

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

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

相关文章

类的初始化列表

文章目录 一、初始化列表1、初始化列表的使用2、必须使用初始化列表来初始化的成员 二、类型转换1、内置类型转换自定义类型2、自定义类型转换自定义类型 三、静态成员变量(static)1、static修饰成员变量2、静态成员函数 四、友元五、类里面再定义类六、匿名对象1、匿名对象的使…

大厂硬件梦:字节、腾讯“向首”,华为、小米“向手”

涉足可穿戴设备的大厂们&#xff0c;都抱着再造用户入口的野望&#xff0c;大模型治不好的痼疾&#xff0c;仍需继续前行寻找解药。 转载&#xff1a;科技新知 原创 作者丨茯神 编辑丨蕨影 苹果发布会再次令网友失望&#xff01;相比iPhone新机配色丑上热搜&#xff0c;反而苹…

Type-C与PD技术融合:重塑移动硬盘盒的未来

Type-C接口与PD充电技术&#xff1a;移动硬盘盒的革新之路 在数字化浪潮的汹涌澎湃中&#xff0c;我们的生活与工作环境被各式各样的电子设备所包围。从智能手机到平板电脑&#xff0c;从笔记本电脑到高清显示器&#xff0c;每一个设备都在以惊人的速度迭代更新&#xff0c;推…

集运系统:让海外集运包裹管理更简单!

随着全球化贸易的快速发展&#xff0c;海外包裹代收、仓储管理、退换货、国际快递等服务需求日益增长。集运系统作为一种专为海外客户提供一站式服务的软件系统&#xff0c;通过整合物流信息、管理订单、跟踪货物等功能&#xff0c;有效满足这些需求。本文将介绍集运系统的功能…

Python数据类型详解:这12个类型你都知道吗?

在Python中&#xff0c;数据类型是编程的基石&#xff0c;它们定义了可以操作的数据的种类。Python是一种动态类型语言&#xff0c;意味着你不需要显式地声明变量的类型&#xff1b;Python解释器会自动推断出变量所存储数据的类型。Python提供了多种内置数据类型&#xff0c;这…

立足本土,面向全球 | 全视通闪耀亮相Medical Fair Asia新加坡医疗展

Medical Fair Asia是亚洲地区最大的医疗设备、医疗器械和医疗技术展览会之一&#xff0c;自1997年创办以来&#xff0c;每两年在新加坡举办一次。该展会不仅是新加坡医疗行业交流的龙头平台&#xff0c;也是亚洲乃至全球医疗企业和专业人士共聚一堂、展示最新产品和技术的重要舞…

人情债VS利息债:如何更好的借贷?

在人生的旅途中&#xff0c;谁不曾遭遇资金紧张的瞬间&#xff1f;面对这样的挑战&#xff0c;是向亲朋好友伸出援手&#xff0c;还是探索贷款之路&#xff0c;成为了一个值得深思的问题。今天&#xff0c;我们就以小刘的经历为镜&#xff0c;共同探讨这一话题。 故事的主角小刘…

Modbus协议03:Modbus功能码和协议分类

视频链接&#xff1a;【3】Modbus协议功能码说明_哔哩哔哩_bilibili【3】Modbus协议功能码说明是【直播回放】小白也可以听懂的Modbus协议讲解的第3集视频&#xff0c;该合集共计4集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://www.bilibili…

详解:冒泡排序

1.是什么 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…

C语言-数据结构 无向图克鲁斯卡尔算法(Kruskal)邻接矩阵存储

相比普里姆算法来说&#xff0c;克鲁斯卡尔的想法是从边出发&#xff0c;不管是理解上还是实现上都更简单&#xff0c;实现思路&#xff1a;我们先把找到所有边存到一个边集数组里面&#xff0c;并进行升序排序&#xff0c;然后依次从里面取出每一条边&#xff0c;如果不存在回…

python vtk 绘制圆柱体和包围盒

基本的代码如下&#xff0c; import vtkcylinder vtk.vtkCylinderSource() cylinder.SetRadius(3.0) cylinder.SetHeight(10.0) cylinder.SetResolution(50)boundsFilter vtk.vtkOutlineFilter() boundsFilter.SetInputConnection(cylinder.GetOutputPort())mapper vtk.vtk…

UQpy | 不确定性量化Python工具箱推荐

UQpy, "Uncertainty Quantification with Python,"是一个通用的 Python 工具箱&#xff0c;用于对物理和数学系统模拟中的不确定性进行建模。该代码被组织为一组以不确定性量化&#xff08;UQ&#xff09;的核心功能为中心的模块&#xff0c;如下所示。这些模块各不相…

无线安全(WiFi)

免责声明:本文仅做分享!!! 目录 WEP简介 WPA简介 安全类型 密钥交换 PMK PTK 4次握手 WPA攻击原理 网卡选购 攻击姿态 1-暴力破解 脚本工具 字典 2-Airgeddon 破解 3-KRACK漏洞 4-Rough AP 攻击 5-wifi钓鱼 6-wifite 其他 WEP简介 WEP是WiredEquivalentPri…

I/O 多路复用:`select`、`poll`、`epoll` 和 `kqueue` 的区别与示例

I/O 多路复用是指在一个线程内同时监控多个文件描述符&#xff08;File Descriptor, FD&#xff09;&#xff0c;以便高效地处理多个 I/O 事件。在 UNIX/Linux 和 BSD 系统中&#xff0c;select、poll、epoll、kqueue 都是实现 I/O 多路复用的系统调用。它们各有特点&#xff0…

MYMPay码支付开源版系统源码

MYMPay码支付开源版系统源码 前言安装环境&#xff1a;首页图片用户中心管理后台 部分源码领取源码下期更新 前言 最新版MYMPay码支付开源版系统源码_个人免签支付_聚合支付系统 安装环境&#xff1a; PHP&#xff1a;7.0-8.2 (推荐使用7.4)需要安装Xload 扩展MySQL&#xf…

Linux基础入门篇

一.Linux概述 我们一般所说的Liunx表示的是Linux的内核部分&#xff0c;Liunx 发行版是在其内核的基础上进行了对其他软件的集成&#xff0c;更加方便了用户的使用 Liunx的结构&#xff1a; 目前市场上使用的Linux大多为CenterOS,一些微型的开发中会使用到Ubuntu,两者在一些指…

【刷题】Day4--密码检查

Hi&#xff01; 今日刷题&#xff0c;小白一枚&#xff0c;欢迎指导 ~ 【链接】 密码检查_牛客题霸_牛客网 【思路】 依次根据规则判断密码是否合格。while里嵌套个for循环&#xff0c;来进行密码的多组输入&#xff0c;for循环进行一次代表判断一个密码串&#xff1b;规则…

STM32+ESP01连接到机智云

机智云,全球领先的智能硬件软件自助开发及物联网(iot)云服务平台。机智云平台为开发者提供了自助式智能硬件开发工具与开放的云端服务。通过傻瓜化的自助工具、完善的SDK与API服务能力最大限度降低了物联网硬件开发的技术门槛&#xff0c;降低开发者的研发成本&#xff0c;提升…

添加选择登录ssh终端

吼吼,这次成了一个小的瑞士军刀了 … …

2.Jmeter安装配置,核心目录详情,组件和作用域

一、Jmeter安装配置以及核心目录详情 Jmeter基于java语言来开发&#xff0c;java需要jdk环境。 1.安装jdk并且配置jdk的环境变量。 2.jmeter只需要解压就可以使用了。 3.在D:\apache-jmeter-5.5\bin目录下双击jmeter.bat文件就可以启动使用了 backups&#xff1a;自动备份的目录…