Camera | 2.MIPICSI基础

Posted 一口Linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Camera | 2.MIPICSI基础相关的知识,希望对你有一定的参考价值。

瑞芯微专栏

上一篇我们讲解了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文章,

建议大家订阅本专题!

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

以上是关于Camera | 2.MIPICSI基础的主要内容,如果未能解决你的问题,请参考以下文章

单片机存储器结构

[Camera]Tuning简介

汽车obd接口针脚定义

【蜗牛黑板报】sensor基础知识

数字部件

Android Camera2 参数调节关键字翻译集合,常用关键字解析