Camera | 2.MIPI、CSI基础

news2024/11/25 20:50:21

瑞芯微专栏

上一篇我们讲解了camera的一些基础概念和知识。
我们说了,现在的手机由于高分辨率的要求,现在基本上都是基于MIPI、CSI协议来实现的,
本篇讲解MIPI、CSI的一些基础知识。

摄像头常用术语

下面这些术语是camera驱动中经常用到的缩略语。

AE(Auto Exposure):自动曝光。
AF(Auto Focus)   :自动对焦。
AWB(Auto White Balance):自动白平衡。
3A  :指自动曝光(AE)、自动对焦(AF)和自动白平衡(AWB)算法。
Async Sub Device:在Media Controller结构下注册的V4L2异步子设备,例:Sensor、MIPI DPHY。
Bayer Raw(或Raw Bayer)  :Bayer是相机内部的原始图片,一般后缀为.raw。.raw格式内部的存储方式有:RGGB、BGGR、GRBG等。
CIF     :Rockchip芯片中的VIP模块,接收Sensor数据并保存到内存中,仅转存数据,无ISP功能。
DVP(Digital Video Port)  :一种并行数据传输接口。
Entity  :Media Controller架构下的各节点。
Frame   :帧。
HSYNC   :行同步信号,HSYNC有效时,接收到的信号属于同一行。
IOMMU(Input Output Memory Management Unit):Rockchip芯片中的IOMMU模块,用于将物理上分散的内存页映射成CIF、ISP可见的连续内存。
IQ(Image Quality) :指为Bayer Raw Camera调试的IQ xml,用于3A tunning。
ISP(Image Signal Processing) :图像信号处理。
Media Controller :Linux内核中的一种媒体框架,用于拓扑结构的管理。
MIPI-DPHY     :Rockchip芯片中符合MIPI-DPHY协议的控制器。
MP(Main Path):Rockchip芯片ISP驱动的一个输出节点,一般用来拍照和抓取Raw图。
PCLK(Pixel Clock) :指Sensor输出的Pixel Clock。
Pipeline          :Media Controller架构的各Entity之间相互连接形成的链路。
SP(Self Patch)    :Rockchip芯片ISP驱动的一个输出节点。
V4L2(Video4Linux2)   :指Linux内核的视频处理模块。
VICAP(Video Capture) :视频捕获。
VIP(Video Input Processor):在Rockchip芯片中,曾作为CIF的别名
VSYNC  :场同步信号,VSYNC有效时,接收到的信号属于同一帧。

一、基础概念

1. MIPI

MIPI:移动产业处理器接口(Mobile Industry Processorinterface)
是MIPI联盟发起的为移动应用处理器制定的开放标准。

MIPI官网

https://www.mipi.org

MIPI联盟
即移动产业处理器接口(MIPI)联盟,由美国德州仪器(TI)、 意法半导体(ST)、 英国ARM和芬兰诺基亚(Nokia)4家公司共同成立, 旨在定义并推广用于移动应用处理器接口的开放标准。

2. CSI

MIPI-CSI-2协议是MIPI联盟协议的子协议,专门针对摄像头芯片的接口而设计。

由于其高速,低功耗的特点,MIPI-CSI2协议极大的支持了高清摄像头领域的发展.

正是由于它的普及,手机上五百万像素的摄像头才得以变为前置摄像头,该类接口技术主要掌握在日本东芝,韩国三星以及美国豪威三家公司。

  1. CSI协议有两个版本协议,分别为CSI-2和CSI-3;
  2. CSI-2协议遵循的物理标准有两个,分别为C-PHY和D-PHY;
  3. CSI-3协议的物理标准对应M-PHY,且应用层协议栈还需要连接Uni-Pro层。

D-PHY与C-PHY区别:
从实用角度来看,主要是数据线和时钟线的区别,还有传输速率,C-PHY通过某些技术改良,使数据传输速度更快。

瑞芯微3568用的CSI-2 && D-PHY

所以内核中,我们会看到CSI2 和 D-PHY相关代码。

二、MIPI协议

MIPI并不是一个单一的接口或协议,而是包含了一套协议和标准,以满足各种子系统独特的要求。MIPI的标准异常复杂,包含非常多的应用领域。

由上图可得:

  1. 显示设备采用的DSI协议
  2. 摄像头采用的CSI协议
  3. RF IC采用的DigRF协议
  4. 存储设备采用的UFS

1. DCS(Display Command Set)

用于显示模块命令模式下的标准化命令集;

2. DBI, DPI (Display Bus Interface, Display Pixel Interface)

DBI:与具有显示控制器和帧缓冲器的显示模块的并行接口。
DPI:与显示模块的并行接口,不带显示控制器或帧缓冲器。

3. DSI, CSI (Display Serial Interface, Camera Serial Interface)

DSI:主机处理器与显示模块之间的高速串行接口;
CSI:主机处理器与摄像头模块之间的高速串行接口;

4. D-PHY

为DSI(显示屏)和CSI-2(摄像头)提供物理层通路定义。

5. M-PHY

为DigRF、CSI-3、UFS、LLI、SSIC、M-PCIE提供物理层通路定义。

目前比较成熟的接口应用有DSI(显示接口),和CSI(摄像头接口),都具有比较复杂的协议结构,下图表示某一个SOC可以作为一个CSI的接收器,同时也可以作为一个DSI的输出器。

其物理层使用到了D-PHY,目前新的物理层C-PHY也逐渐被采用,我们常说的Camera I2C接口在MIPI中有专门的一个CCI(Camera Control Interface)来对应。

三、CSI

根据层级,CSI协议分为五层:

名称解释
Application应用层处理原始图像数据的各种算法模块
Packing Formats组包层负责将数据按照一定的次序,切割成8bite数据
Low Level Protocaol协议层为新生成的数据加上爆头包尾,形成符合协议要求的数据流
Lane Management通道管理层将生成的数据流按照一定次序和要求,进行读写管理,输出数据流
PHY LayerPHY层生成MIPI最后的信号波形
Pixel像素数据经过图像模块处理过的数据流,或者原始的图像数据流
Data传输数据经过MIPI模块切割或者加上包头包尾数据
Control控制信号模块间的控制数据流
Transmitter发送端包括了MIPI数组部分,转接板等实现MIPI信源传输的部分
Receiver接收端包括了转接板和商用接收端模块,负责解析收到的MIPI信源

工作顺序:

  1. 将原始的图像数据在应用层做相应的图像处理,包括白平衡/噪声去除和色彩还原等;
  2. 将处理的数据进入组包层做数据分割以及重组,然后将其传输给底层协议层;
  3. 底层协议层会根据数据类型产生包头,根据数据内容产生构成包围的校验序列,再将包头、数据本身和包尾组成起来发送给通道管理层;
  4. 通道管理层模块按照通道的选通情况,合理分配数据到每个通道,之后数据经过数模转换进入到物理层传输;
  5. 接收端在收到物理层数据后,再按照之前的逆序解包出原始的图像数据。

1. 应用层(Application Layer)

该层主要用于不同场景对数据的处理过程,对于发送方,多为camera生成数据,对于接收方,多为SOC对数据进行处理。

2. 协议层(Protocol Layer)

CSI-2协议可以使用SOC上的一个物理接口实现多条数据流的传输。协议层规定了如何对多条数据流进行标记和交织,从而使每条数据流能够正确地重建。

1)像素字节转换层(Pixel/Byte Packing/Unpacking Layer)

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

2)低级协议层(Low Level Protocol)

LLP指的是SoT与EoT之间的数据包字节流协议,LLP的最小单元为字节。

3)Lane管理器(Lane Management)

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

3. 物理层(PHY Layer)

PHY层指定了传输媒介,在电气层面从串行bit流中捕捉“0”与“1”,同时生成SoT与EoT等信号。
CSI的硬件部分包括C-PHY、D-PHY,实际上使用的主要是D-PHY。

四、物理层 DPHY

D-PHY 描述了一同步、高速、低功耗、低代价的PHY。

D-PHY的最初版本设计目标是500M bits/s,而D是罗马数字的500,故而叫D-PHY。

1. D-PHY规范的2.0版的标准:

  • 在高速模式下的同步传输,比特率为80-2300Mb/s,具体取决于设备和速度等级;
  • TX经典配置为一个时钟Lane和最多四个数据Lane组成;
  • Rx经典配置为一个时钟Lane和最多八个数据Lane组成;
  • 在低功率模式下的异步传输,比特率为10Mb/s;
  • 物理协议接口(PPI)连接CSI-2和DSI的应用;
  • 可选的AXI4-Lite接口,可进行注册访问。

上图表明使用DPHY作为物理层时,Camera与SOC之间的硬件关系。

MIPI CSI设备由两部分构成,分别为CCI(Camera Control Interface)和CSI(Camera Serial Interface)。

  • CCI:摄像头控制接口。(在MIPI中,充当着控制接口的作用,提供mipi接口sensor的控制传输通道)
  • CSI:主机处理器与摄像头模块之间的高速串行接口(传输图像数据)。
  1. SOC的CCI组件通过I2C完成对Camera的配置,使其输出mipi信号
  2. 其中一对Clock+/-则由Clock Lane标示,
  3. 一对DataNBA+/-则由Data Lane标示。

两个Lane的 PHY配置如下图 :

2. CCI (Camera Control Interface)

CCI是一个双线、双向、半双工、串行接口。是I2C协议的子集,与I2C基本一致。

CCI是兼容I2C接口的快速模式变体。CCI应支持400kHz操作和7位从属寻址。

对于那些只支持RAW Bayer输出格式的摄像头,其CCI地址必须为011011xb(x=0,1);对于其他的摄像头,其CCI地址必须为011110xb。

CCI可选择支持速率: 1Mbps (Fm+), 12.5Mbps (SDR), or 25Mbps (DDR).

CCI接口命名如下:

  • CCI (I2C) : CCI 支持I2C
  • CCI (I3C) :CCI 支持I3C
  • CCI (I3C SDR) :CCI 支持I3C SDR
  • CCI (I3C DDR) :CCI 支持I3C DDR
  • CCI :表示同时支持 CCI (I2C) 和CCI (I3C).

3. DPHY工作于两种工作模式:

  • HS(High Speed Mode)
    这种模式用于传输高速的数据信号,如视频流;高速模式下,每对Lane都是工作在低电压摆幅的差分状态下,数据速率为80Mbps到1500Mbps。
  • LP(Low Power Mode)
    这种模式则可以用来传输控制信号;低速模式下,每对lane的2根导线都转变为单端状态,数据速率为10Mbps。

上图为单个Lane模块的内部组成,包含了CIL(Lane控制器与借口逻辑器),LP驱动器,HS驱动器,LP冲突检测。

CIL负责控制各个驱动器的工作状态,使得Dp、Dn的工作状态可以在HS与LP之间进行切换。


处于HS模式下,差分信号电平摆幅约为200mV;处于LP模式下,单端信号电平摆幅约为1.2V。
在LP模式下,根据各个Line的电平可以确定当前Lane的State。

Data Lane差分线电平的高低表明了当前处于何种状态,发送方通过驱动差分线一系列的状态变化,进入不同的工作模式。

  • Burst Mode:
    High-Speed下的唯一模式,高速数据传输模式,此时各个Lane的Line工作在差分模式
  • Control Mode:
    Low Power下的一种模式,可以通过变化不同的state进入其他模式。
  • Escape Mode:
    Low Power下的特殊模式,在这种模式下可以使用一些特别的功能。

4. CSI-2数据帧格式

CSI-2的数据包有两种:长帧和短帧。无论长帧还是短帧,帧开头都是SoT,帧结尾都是EoT。在两次HS传输过之间,插入的是LP状态,一般是LP11等Control状态,当然也可以进入Escape状态、进入LPDT或者是进入UPLS。

1) 长帧结构如下

以DPHY为例来分析具体的协议格式,DPHY长包主要由包头、包负载、包尾三部分组成,具体如下图:

长帧包括32bit的包头(Packet Head,PH)、有效数据填充以及16bit的包尾(Packet Foot,PF)。

  • PH包括:

数据标识(Data Identity,DI):1个字节,包括VC(Victual Channel)低两位和DT(Data Type)的低六位;
数据计数(Word Count,WC):2个字节。从PH结尾到PF的开头中间的填充数据的长度,单位为字节。接收端通过WC来判断报的结尾位置。
错误检测(ECC):1个字节。包括VC的高两位,与DI中的VC低两位构成4bit虚拟通道标识;低6位为纠错码,采用Hamming(汉明码)的方式,用来纠正PH中一位的错误或者发现两位的错误;

  • 有效数据填充:
    长度=WC*8bit。低位在前,对内容没有任何限制(0~65535字节)。

  • PF包括:
    检验(CHECKSUM):两个字节。低位在前,CHECKSUM采用CCITT的16-bit的CRC校验,即X16+X12+X5+X0。CRC只能检测出一个或多个错误,并不能纠正错误。

2) 短帧结构如下:

DI:1个字节,包括VC的低两位,和DT(5:0);

短包数据域:2个字节,如果该短帧为Data Type的帧同步(Frame Synchronization),则数据域表示帧数;如果短帧的Data Type为行同步(Line Synchronization),则数据域表示行数。

错误检测(ECC):1个字节,包括VC的高两位和六位纠错码。

  • 数据类型
    数据类型表明了负载数据的格式和内容,上文提到,根据长短包的不同,数据类型共有8种不同的分类。短包数据类型的详细信息在上文已经介绍了,这里说明下长包的5种数据类型,详见下表:

数据类型举例:

比如YUV420格式:
4:2:0表示2:1的水平取样,垂直2:1采样(每四个Y共用一组UV分量)
数据格式如图所示:

关于DPHY层,我们并不需要关注太多,就像网卡的PHY层一样,我们只需要知道,通过CCI接口发送配置信息给Camera,通过CSI接口传输数据。

五、MIPI协议在手机中应用

1. mipi插槽

MIPI摄像头:
在这里插入图片描述

通常手机不会设计这个扩展槽,一般都会直接在板子上预留小的排线接口,直接将摄像头模组插上去即可。

2. MIPI接口的手机内部功能框图

在手机内部,各个部件与MIPI协议栈的关系如下图:

其中摄像头通过CSI与处理器相连。

我们再细化下摄像头与cpu的模块图【以瑞芯微rk3568为例】:

MIPI接口在系统的实现如上图所示,

  1. 通常一个camera的模组如图所示,通常包括Lens、Sensor、CSI接口等,其中CSI接口用于视频数据的传
    输;
  2. SoC的Mipi接口对接Camera,并通过I2C/SPI控制camera模组;
  3. MIPI DPHY提供了4 Lane的Rx接口,由Sensor提供Clock,并通过四条数据Lane输入图像数据;
  4. DPHY与CSI-2 Host Contrller之间通过PPI(PHY-Protocol Interface)相连,该接口包括了控制,数据,时钟等多条信号
  5. CSI-2 Host Contrller通过PPI接口收到数据后进行解析,完成后通过IDI(Image Data Interface)或者IPI(Image Pixel Interface)输出到SoC的其他模块(VICAP或ISP,rk3568是送至VICAP模块);
  6. ISP将处理过的图片输出到MP主通道或SP自身通道,SP一般用来预览图片,SP图片的最大分辨率比MP低;
  7. SoC通过APB Slave总线控制CSI-2 Host Contrller的相关寄存器。

ISP含义

ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号。

它在相机系统中占有核心主导的地位,是构成相机的重要设备。ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。

瑞芯微rk3568平台的ISP2.1 处理图像数据的基本流程如下:

ISP 包括:

  • MIPI serial camera interface(MIPI)
  • RAW Processing
  • RGB Processing
  • YUV Processing
  • Memory Interface(MI)

MI接口如下:

一般抓图的顺序:

  1. 摄像头的初始化(输出格式、分辨率、输出速率)
  2. 使能摄像头接入主控板卡中的物理通道
  3. 使能主控板卡中的ISP(图像信号处理模块)、并让ISP知道当前有效接入的摄像头是哪一个(因为可以多个接入,但只能一个有效)。
  4. 告诉ISP输进来的数据如何处理(颜色空间转换、缩放、裁剪、旋转等)、经由那个通道输出到内存/显存(MP主通道、SP自身通道)。
  5. 输出到内存

3. Camera-OV13850内部结构

下面看一款摄像头模组OV13850的内部结构图:

定时脉冲发生器输出时钟来访问成像阵列的行,预先填充电荷并且按顺序对数组的行进行采样。

在预先填充电荷和采样的时间间隔内,每个像素点的电荷曝光时减少入射光。

这是在滚动快门的体系结构的曝光时间。

曝光时间通过调整预先填充电荷和采样之间的时间间隔控制。

在每一行的像素数据采样后,通过模拟电路(AMP)进一步处理:纠正偏移量和将数据乘以相应的增益。

模拟处理后通过10位ADC的输出数组中的每个像素的数据。

ISP(image sensor processor)通过图像输出接口单元,经过MIPI接口(MCP/MDP)将图像数据发送出去。

好了,本文暂时讲到这里,

后面会继续更新几篇Camera文章,

建议大家订阅本专题!

也可以后台留言,加一口君好友,拉你进高质量技术交流群。

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

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

相关文章

9.6 容器适配器

文章目录定义一个适配器stack队列适配器queuepriority_queue 优先队列适配器是标准库的一个通用概念,容器、迭代器和函数等都有适配器。适配器是一种机制,接受一种已有容器类型。标准库有三个顺序容器适配器:stack,queue和priorit…

Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x

在本文中,我们将讨论如何在 Python 中使用 Elasticsearch。 如果你还不了解 Elasticsearch,可以阅读这篇文章 “Elasticsearch 简介” 进行快速介绍。在我之前的文章 “Elasticsearch:使用最新的 Python client 8.0 来创建索引并搜索”&#…

Pytorch自定义数据集模型训练流程

文章目录Pytorch模型自定义数据集训练流程1、任务描述2、导入各种需要用到的包3、分割数据集4、将数据转成pytorch标准的DataLoader输入格式5、导入预训练模型,并修改分类层6、开始模型训练7、利用训好的模型做预测Pytorch模型自定义数据集训练流程 我们以kaggle竞…

响应式流的核心机制——背压机制

一、响应式流是什么? Reactive Streams 是 2013 年底由 Netflix、Lightbend 和 Pivotal(Spring 背后的公司)的工程师发起的一项计划,响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从…

【BP靶场portswigger-客户端14】点击劫持-5个实验(全)

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

Fastdfs分布式文件系统原理浅析

文章目录1、fastdfs文件系统原理简述2、storage server状态2.1 组内新增加一台storage server A时,由系统自动完成已有数据同步,处理逻辑如下:第一步:第二步:第三步:第四步:3、同步时间管理4、B…

[有人@你]请查收你的年终总结报告

嗨,兄dei,我是建模助手。 新年伊始,最近大家想必已经被各大平台的2022年度报告刷屏了。 听歌软件伴你度过的失眠夜,外卖软件拯救你的饥饿时刻,还有某俩宝账单告诉你,其实你是有钱的,只是你看不到…

基于有向图的邻接矩阵计算其割点、割边、压缩图,并用networkx可视化绘制

基于有向图的邻接矩阵计算其割点、割边、压缩图,并用networkx可视化绘制为什么基于邻接矩阵计算图的割点、割边、压缩图实现python代码代码运行效果结论:为什么基于邻接矩阵计算图的割点、割边、压缩图 由于矩阵计算过程,被广泛优化&#xf…

Linux关于 gdb 调试器的使用

坚持看完,结尾有思维导图总结 这里写目录标题debug 和 release 版本gdb 常见命令断点逐行调试和观察变量总结debug 和 release 版本 首先要说的是 ,在 Linux 中 gcc 直接编译是不能进行调试的 而是要在加上 -g 选项才能得到可调试的文件 以下程序用一个…

算法第十二期——BFS-双向广搜

双向广搜 应用场景:有确定的起点s和终点t;把从起点到终点的单向搜索,变换为分别从起点出发和从终点出发的“相遇”问题。操作:从起点s(正向搜索)和终点t(逆向搜索)同时开始搜索,当两个搜索产生…

Spring入门-Spring事务管理

文章目录1,Spring事务管理1.1 Spring事务简介1.1.1 相关概念介绍1.1.2 转账案例-需求分析1.1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步…

数据治理与档案信息资源体系建设

如果要评选大数据或者数字化转型领域中哪个词最让人费解、最讲不清楚,“数据治理(Data Governance)”绝对是候选之一。说实话,笔者到现在也没有完全整明白,因为数据治理包含的范围太广了,可以说是包罗万象&…

高潜人才的自我要求

前言,上次写了个《潜力出众的你有这样的特质吗?》,地址如下:点我查看,这次在写个高潜人才的自我要求。本次以6个纬度来进行分析;3是基本要求,4是追求卓越,看你目前做到了哪个级别&am…

跨平台API对接(Python)的使用

Jenkins 是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于 Hudson(Hudson 是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。后端可以利用 Jenkins 对任务进行调度运行:后端可利用 HTT…

【进阶】Spring更简单的读取和存储对象

努力经营当下,直至未来明朗! 文章目录一、存储Bean对象一)前置工作:配置扫描路径(重要)二)添加注解存储Bean对象3. 五大类注解:4. 方法注解:6. 相关问题7. 补充【结论、查…

ROS2机器人编程简述humble-第二章-DEVELOPING THE FIRST NODE .2

0.1ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS21.1ROS2机器人编程简述humble-第一章-Introduction2.1ROS2机器人编程简述humble-第二章-First Steps with ROS2 .12.2主要内容是全手工创建一个最简单的自定义节点,其实没啥具…

IB学生必看的时间表(二)

上期谈到在IB预科课程的第一个学年下学期,便要开始作报读大学的准备,到底为什么? 暑假不容松懈 现在来到放暑假了。虽说不用上课,学生没有了学习压力,但就以下三方面来看,学生还是要继续投放心力。 首先&am…

Unity 之 Addressable可寻址系统 -- 代码加载介绍 -- 进阶(一)

Unity 之 可寻址系统 -- 代码加载介绍 -- 进阶(一)一,可寻址系统代码加载1.1 回调形式1.2 异步等待1.3 面板赋值1.4 同步加载二,可寻址系统分标签加载2.1 场景搭建2.2 代码示例2.3 效果展示三,代码加载可寻址的解释概述…

Cadence OrCAD: 跨页符和电源符号命名优先级的一个小问题

Cadence OrCAD: 跨页符和电源符号命名优先级的一个小问题 遇到的问题 最近项目中,有个电源需要做负载端的反馈,类似下图的signal1和signal1N,反馈使用类似伪差分线,把电压信号和负载端的GND都连到DC-DC控制器。DC-DC对应的反馈引…

字节跳动青训营--前端day1

文章目录前言一、 前端1 前端的技术栈2. 前端的边界3. 前端的关注点二、 HTML1. HTML常用标签及语义化2. HTML 语法3. 谁在使用我们写的HTML前言 仅以此文章记录学习历程 一、 前端 解决GUI人机交互问题 1 前端的技术栈 2. 前端的边界 nodejs–服务器端应用 electron… --客…