linux video input子系统驱动实践3-CSI

本文详细介绍了MIPI及其子协议CSI和D-PHY,包括它们在移动设备内部接口标准化中的作用,物理层设计,以及应用在摄像头、显示和通信方面的具体实现。此外,还涵盖了CSI-2协议的三层结构,特别是像素字节转换、低级协议和lane管理。文章最后讨论了宽动态范围模式和InnoWriteback技术在实际应用中的实现。
摘要由CSDN通过智能技术生成

1. MIPI

MIPIMobile Industry Processor Interface)移动通信行业处理器接口

  • MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准。
  • 目的是把手机内部的接口,如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性

已经完成和正在计划中的规范如下:

1.1. 

2. CSI

MIPI 协议主要分为三层:应用层,协议层和物理层,应用于摄像头,显示器等设备的接口 DSIDisplay Serial Interface

,这里重点介绍摄像头接口CSI Camera Serial Interface)显示

  • 应用层(Application Layer),主要描述了上层数据流中的数据编码和解析
  • 协议层(Protocol Layer),包含了几个不同的子层,每个子层都有各个明确的职责,主要包括:

Pixel/Byte Packing/UnpackingLayer:像素/字节打包/解包层

LowLevelProtocol LayerLLP组织串行数据

LaneManagement:通道管理层

物理层(PHYLayer),定义了传输介质,输入输出信号的电气特性和时钟机制,即如何从串行位流中获取 “0” “1”信号,同时生成SoTEoT等信号

3. D-PHY概述

D-PHY定义了一种源同步,高速,低功耗以及低成本的PHY

PHY的配置项

1)一条clock lane

21/2/4data lane

D-PHY有三种不同类型的通道:

1)单向时钟通道Unidirectional Clock Lane

2)单向数据通道Unidirectional Data Lane

3)双向数据通道Bi-directional Data Lane CSI没用,主要是DSIlane 0

D-PHY有两种传输模式

1HS高速传输模式,用于传输突发数据,同步传输,信号为差分信号,电平范围为100mv-300mv,传输速度范围是80-1500Mbps,(速率和d-phy版本相关,这里是dphy-1.1版本的速度,目前市面上大部分还是v1.1,甚至1.0版本)

2LP低功耗模式,用于传输控制指令,异步传输,信号线为单端,电平范围是0-1.2V,没有用时钟线,时钟是通过两个数据线异或而来

的,速度只有10Mbps

3.1. D-PHY PPI接口

下图是主控制器和外围设备通过mipi d-phy连接示意图:

Lane Module:用来发送或接收lane 上的信号

PPl: PHY-ProtocolInterface PHY协议接口

PHYAdapter Layer APPI接口与PPI接口的转换

APPI: 抽象物理层协议接口(用于再不同通信协议与物理层之间建立通用的、独立硬件和接口协议)

3.2. D-PHY Lane Module

右图是一个通用的 Module内部结构图

功能:

取决于Lane 类型 (时钟,数据单向, 数据双向) Lane 以及lane module是发送端还是接收端

构成:

一个或多个高速收发模块 (HS-TXHS-RX 一个或多个单端低功耗收发模块(LP-TXLP-RX)以及lane控制和接口逻辑模块Logicy Control&lnterface Lane 组成

3.3. D-PHY Lane Levels & Lane States

Line Levels (typical)

LP0~1.2V 高电平典型幅值为1.2V1

HS100~300mV (Swing200mV) 信号线对内PN低时,定义为0 PN高时,定义为1 此时典型的线上电压为差分200mV

Lane States

不同传输功能通过驱动线上的不同电平来进入不同的lane states正常操作时是HS-TX模块或LP-TX模块驱动lane

一个HS-TX模块:差分地驱动一对data lane2HSLane 状态(HS-0, HS-1)

两个LP-TX模块:独立地驱动一对lane 上的两根信号线,4LPLane状态。 (LP-00, LP-01, LP-10, LP-11)

6lane 状态如右下表所示:

3.4. D-PHY操作模式

数据Lane的三种操作模式

高速传输HS模式:又称 Burst Mode

低功耗LP模式:Control modeEscape mode两种

一般操作在HSLPcontrol模式之间切换

Lane的各个模式切换:

HS模式用于高速传输,进入和退出HS模式时,都需要在LPcontrol模式下做若干LP**操作

Escape模式的作用是实现低速模式的通信, 例如DSI的低速命令收发就是EscapeLPDT模式

即使没有Escape模式(CSI 不需要)一般LP单向也是需要的 因为进出HS模式需要LPcontrol模式进行操

只有从LP control模式才能进入Escape模式

LP模式下, RX端不需要clk TX端需要用到,所以escape clk也是要配置的

3.5. D-PHY 高速模式(Burst Mode)传输详解

SOTStart of Transmission

从停止状态到开始发送数据的一个启动数据发送流程(Sot),在发送一个传输数据请求后,Data Lane离开Stop状态,通过启动数据发送流程(Sot)为进入 HS Mode 做准备。

CSI需要重点关注Rx SideTHS-SETTLE值(和lane rate相关)

EOTEnd of Transmission
Data Burst 结束时,Data Lane通过Eot结束发送流程离开High-Speed Transmission模式进入 Stop状态。

3.6. PHY接口扩展

这里关注D-PHYV1.2的技术参数

1、使用了DDRSource-SyncClock,双沿采样(线速度为数据速率1/2

2、最低配置要求是4pin2pin用于传输差分时钟, 2pin用于传输数据

3LP模式下峰值的差分电压为1300mvHS模式下峰值差分电压为360mv

4HS模式下每个通道的速率为80Mbps2.5GbpsLS模式下每个通道速率小于10Mbps

5、典型的配置是10pin 包含4个差分传输的数据通道和1个差分传输的时钟通道

3.7. D-PHYLVDS

LVDS是低压差分信号的统称,是一种信号传输模式的电平标准,低功耗、低误码率、低串扰和低辐射等特点

以下接口的差分信号线使用的都不是严格意义上的LVDS电平标准 (但很多基础概念都是相通的,换言之,不是所有的差分信号线都是LVDS电平标准,使用差分信号线进行数据传输的具体电平有很多种,LVDS只是其中之一比如:HDMI使用TMDSDDR3使用SSTLUSBSATA使用的电平标准也与LVDS很相似,但从其规范来看并不是标准的LVDS(它们也是低电压差分信号,但不是我们这里所说的LVDS),不能认为是同一种电平标准

D-PHYHS模式也是一种的低压差分信号。但不是标准的LVDS,标准LVDS共模电压Vos= 1.2v,摆幅Swing=350mv

实践中:某mipi/lvds兼容型sensor lvds模式的输出信号如下(非标lvds

4. CSI-2协议层

在物理层之上,即使CSI协议层,由三层构成,每一层有着明确功能。

像素字节转换层(Pixel/Byte Packing/Unpacking LayerCSI-2能够支持多种多样的像素格式,对于发送方,在数据发送之前,需要根据像素格式,将像素数据转换为对应的字节流;对于接收方,在将数据提供给应用层之前,需要将字节流数据转换为像素数据。

低级协议层(Low Level ProtocolLLP指的是SoTEoT之间的数据包字节流协议,LLP的最小单元为字节(包头包尾错误检测)。

Lane管理器(Lane Management:为了适应不同场景下对带宽的要求,CSI-2规定了Lane的数量是可拓展的。因此,在面临多Lane同时传输时,发送方需要对字节流进行公平分流(distributor),接收方则需要对多Lane数据进行合并。

4.1. CSI-2协议层-Lane管理器

Lane Management

为了适应不同场景下对带宽的要求,CSI-2规定了Lane的数量是可拓展的。因此,在面临多Lane同时传输时,发送方需要对字节流进行公平分流(distributor),接收方则需要对多Lane数据进行合并。

当某些应用场景需要的带宽超过了单Lane所能提供的带宽或者为了降低Clock频率的情况下,则可以通过拓展Data Lane来满足要求。

在多Lane(定为N)传输的情况下,对于一帧数据,其数据长度不是Lane数量(N)的整数倍的情况下,则倒数第二组数据发出后会剩下少于N的字节需要发送,此时LDF会将无数据分配的Lane置为“Invalid Data”直接进入EoT

4.2. CSI-2协议层-低级协议层

Low Level Protocol

LLP层为CSI协议的主要功能层, 不仅定义了包格式, 还定义了传输中使用的同步机制。

在发送端,该层负责将上层传输过来的数据打包,添加校验字段,增加同步包,发送到下一层

在接收端首先校验包的完整性,并解析各个字段,根据包类型执行对应操作,将图像数据传到上一层。

LLP处理的playload数据为经过转换后的纯字节数据,没有像素概念。通过定义不同的的字段和包类型, 实现一帧一帧图像数据的传输。

  • 传输任意数据(负载独立)
  • 以字节为数据元
  • 对于DPHY,支持16路虚拟通道;对于CPHY,支持32路虚拟通道
  • 支持独立的帧起始,帧结束,行起始,行结束等数据包
  • 包含对数据类型,像素深度与格式的描述
  • 16-bit Checksum错误侦测
  • 6-bit 错误发现与纠正

传输一帧图像:

LLP作为主要功能的实现,定义了很多包类型、字段和传输机制。这里不详尽地罗列这些细节,而是讲述一下一图像在总线上的传输格式,给出一个直观、感性的理解。

LLPpacket主要有两种SPshort packet)和LPlong packet)。一个LP包含一行图像数据,一个SP则用来进行特殊的用途,主要是同步,例如表示帧开始(FS)、结束(FE)、行开始LS和行结束LE。其中LSLE是可选的。

同时协议规定,每个packet之间,必须有一个LPS状态,即packet spacing。因此在进行传输时,

总线上传输的是SoT+ SP + EoTSoT + LP + EoT LPS

一帧必须以FS包开始,以FE包结束,中间为帧高度个数的LP包,每个包含一行图像数据。如下图所示

图中底部的 DVALID VVALID HVALID 表明垂直有效和水平有效。

传输一开始,首先传输FS类型的SP包,表示一图像数据开始,进行帧同步,然后传输图像数据 ,一行数据一个LP包。每个LP包由PHpacket header)、DataPFpacket footer组成

4.2.1. 短包:

一个SP则用来进行特殊的用途,主要是同步,例如表示帧开始(FS)、结束(FE)、行开始LS和行结束LE。其中LSLE是可选的。

4.2.2. 长包:

包长: 6~655411 bytes (之所以是6~655411,其中的 6 byte是指:PH4bytePE 2byte))

对于YUV RGBRAW数据类型,一个长数据包应包含一行图像数据。当数据包在同一虚拟通道内或在同一帧内时,相同数据类型的每个长数据包应具有相同的长度

4.3. CSI-2协议层-像素字节转换层

这一层中,发送端接收来自应用层的像素数据,并打包成字节格式发送到下一层: 在接收端解包来自LLP层的数据并传输到应用层。

该层的主要日的是将不同像素格式(例如YUYVRGBA 等)都转换成为8bit字节格式, 消除不同图像格式差异 减少传输的复杂度。

例如:

RGB888格式:一个pixel24bit 将转换为三个字节;

RGB565格式:一个pixel16bit,转换为两个字节;

RGB444格式:一个pixel12bit,需要通过 1 padding变成RGB565格式,为两个字节,如下图所示:

4.4. CSI-应用层

该层主要用于不同场景对数据处理过程,对于发送方,多为camera生成数据,对于接收方,多为soc对数据进行处理,右图为一个CSI典型应用场景

流程:Sensor CSI TX发送图像数据->dphy转换ppe接口->CSI-2 RX通过PPI接口对收到的数据进行解析,完成后通过AXI-S(或者其他Image Data Interface)输出到Soc的其他模块ISP(即图中的Video pipe->vdma在图像数据写入DDR

ISP工作模式

在线模式online modesensor产生的实时数据和时序控制信号以行为单位送入ISP进行处理

离线模式offline mode待处理的图像以帧为单位存储于系统内存,需要处理时由一个控制逻辑通过DMA从内存中读取数据,并添加模拟sensor行为的时序控制信号,然后送给ISP进行处理

4.4.1. CSI-应用层-VDMA介绍(InnoWrite back

VDMA介绍(INNOWrite back

将图像的流数据按照指定存储格式保存到DDR中,通常写ddr最小单位为1行数据,(下一行存储地址stride偏移)。(特殊情况:以固定大小写ddr256bit*16 bursts = 512bytes stride参数失效)

存储格式:图像在内存上存储方法,YUV420颜色格式对存储格式可能有:

YUV420_3Py\u\v分开存储,提供三个首地址。(CXWL

YUV420_1Pyuv连续存储,提供一个首地址。   X6

YUV420_2Py\uv分开存储,提供两个首地址。  X6

中断:异常上报,写完成中断上报,中断处理函数中做下一帧图像存储地址更新。

线性模式:

MIPI 接口的线性模式视频传输格式如右图 所示。Frame Start(FS)表示帧起始,Frame End(FE)表示帧结束。每一行的数据包头是 32-bit,包含当前行的 Virtual Channel Data Type 等信息。

宽动态WDR:

MIPI_RX支持在同一个视频流数据里传输不同的图像数据,可以通过以下两种模式来区分数据:

模式1:使用VCvirtual Channel)区分数据

模式2:使用 DT   (Data type)区分数据

模式3DOL宽动态模式

区分长短曝光以及不同sensor源的数据

4.4.2. CSI-应用层-宽动态模式

虚拟通道VC

 VC WDR 传输方式如下图所示 FS/FE 短包和数据长包里都包含有 VC 信息。MIPI Rx 控制器根据短包/长包里的 VC 值检测出长/短曝光数据,并把每一行数据都加上 2-bit 信号标识,伴随 DC 时序输出到 VICAP,在 VICAP 内实现解复用

数据类型DT

 DT传输如下图所示,不同曝光长度的同一帧共用一组 FS/FE 短包,长包的包头有 DT 信息。MIPI Rx 控制器根据 DT 值区分出长/短曝光数据,并把每一行数据都加上 长短曝光的标识,伴随 DC时序输出到 VI precesss,在 VICAP 内实现解复用。

CSI-应用层-宽动态模式

DOL Data Of Line):

DOL 宽动态传输格式如左下所示。长短曝光数据共用一组 FS/FE 短包,每行起始的 4 个像素点作为识别码(Identification Code)用于区分长/短曝光的数据。

实践:

下图为IMX327手册提供DOL模式,Identity code计算方式,奇数帧和偶数帧提供了不同的Identity code;(debug时发现实际帧率降低了一半)

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: i.MXRT1176是一款高性能的处理器,支持多种外设接口,其中包括Mipi-CSI2接口和UVC功能。 Mipi-CSI2是一种用于传输摄像头数据的串行接口标准。它可以实现高速、低功耗的数据传输,广泛应用于移动设备和嵌入式系统中。i.MXRT1176的Mipi-CSI2接口可以与兼容的摄像头模块进行连接,以便从摄像头获取图像数据。 UVC(USB Video Class)是一种用于通过USB接口传输视频数据的标准。它可以让USB设备(例如计算机或其他支持UVC的设备)直接识别和使用摄像头,简化了设备之间的连接和通信。i.MXRT1176的UVC功能可以将通过Mipi-CSI2接口获取的摄像头数据转换为符合UVC标准的视频流,以便被连接的设备进行识别和使用。 通过i.MXRT1176的Mipi-CSI2 to UVC功能,我们可以方便地将摄像头模块的图像数据转换为USB视频流,实现将摄像头接口扩展到支持UVC的设备,如计算机、智能电视等。这样,我们可以方便地将摄像头用于视频通信、图像采集和人机互动等应用领域。 总之,i.MXRT1176的Mipi-CSI2 to UVC功能提供了一种简单、高效的解决方案,使得摄像头数据可以通过USB接口直接传输给其他设备,为视频应用的开发和应用提供了更多的可能性。 ### 回答2: IMXRT1176 是恩智浦(NXP)公司推出的一款高性能 Arm Cortex-M7 微控制器。它具有丰富的外设接口和强大的计算能力,可广泛应用于各种嵌入式系统中。 MIPI-CSI2 是一种通信接口标准,用于将摄像头传感器与处理器之间的数据传输。它通过传输高清视频和图像数据,实现了低功耗、高带宽、高质量的图像传输。 UVC(USB Video Class)是一种标准协议,用于视频设备与计算机之间的通信。它允许将视频设备连接到计算机,并以 USB 接口的形式传输图像或视频数据。 IMXRT1176 Mipi-CSI2 to UVC 是指将IMXRT1176微控制器与摄像头传感器之间的视频数据经过Mipi-CSI2接口传输,并通过UVC协议将视频数据传输到连接的计算机。 通过这种方式,我们可以在IMXRT1176微控制器上实现摄像头数据的采集和处理,然后将处理后的视频数据传输到计算机,并通过UVC协议对其进行解码和显示。这使得开发者可以方便地在嵌入式系统中使用摄像头,并实现图像或视频的实时采集、处理和显示。 总之,IMXRT1176 Mipi-CSI2 to UVC 提供了一种方便高效的解决方案,使得在嵌入式系统中使用摄像头变得更加容易和灵活。 ### 回答3: IMXRT1176是一款高性能的嵌入式处理器,而MIPI-CSI2和UVC是两种不同的图像传输接口。 MIPI-CSI2是一种用于连接图像传感器和图像处理器的接口标准。它使用串行传输协议,可以实现高速、低功耗的图像传输。MIPI-CSI2支持多通道数据传输,并且提供了丰富的控制和配置选项,以满足不同应用场景的要求。因此,IMXRT1176可以通过MIPI-CSI2接口与图像传感器进行通信,获取高质量的图像数据。 UVC是一种USB设备类别,它定义了一套用于视频采集和图像传输的标准协议。通过UVC协议,可以将图像数据通过USB接口传输到计算机上,同时还可以实现对图像的控制和配置。这样,计算机可以直接从IMXRT1176通过UVC接口获取图像数据,无需额外的驱动程序。 因此,IMXRT1176 MIPI-CSI2 to UVC的意思就是将IMXRT1176处理器与图像传感器通过MIPI-CSI2接口连接,然后将获取的图像数据通过UVC接口传输给计算机。这样一来,我们就可以在计算机上实时查看、录制和处理来自图像传感器的图像数据,为各种应用场景带来更便利和灵活的图像处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值