一口Linux

电子技术应用专栏作家——一口Linux。一起学习嵌入式、Linux、网络、驱动、arm知识

Camera | 2.MIPI、CSI基础

0
阅读(3164)

Camera历史文章:

《Camera | 1.Camera基础知识

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

image.png

摄像头常用术语

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

image.png

一、基础概念

1. MIPI

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

image.png

MIPI官网

https://www.mipi.org

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

2. CSI

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

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

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

image.png

  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通过某些技术改良,使数据传输速度更快。

image.png

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

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

二、MIPI协议

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

image.png

由上图可得:

  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的输出器。

image.png

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

三、CSI

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

image.png

image.png

工作顺序:

  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接口,可进行注册访问。

image.png

上图表明使用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配置如下图 :

image.png

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。

image.png

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

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

image.png

处于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。

image.png

1) 长帧结构如下

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

长帧包括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种数据类型,详见下表:

image.png

数据类型举例:

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

image.png

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

五、MIPI协议在手机中应用

1. mipi插槽

image.png

MIPI摄像头:

image.png

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

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

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

image.png

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

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

image.png

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 处理图像数据的基本流程如下:

image.png

ISP 包括:

  • MIPI serial camera interface(MIPI)

  • RAW Processing

  • RGB Processing

  • YUV Processing

  • Memory Interface(MI)

MI接口如下:

image.png

一般抓图的顺序:

  1. 摄像头的初始化(输出格式、分辨率、输出速率)

  2. 使能摄像头接入主控板卡中的物理通道

  3. 使能主控板卡中的ISP(图像信号处理模块)、并让ISP知道当前有效接入的摄像头是哪一个(因为可以多个接入,但只能一个有效)。

  4. 告诉ISP输进来的数据如何处理(颜色空间转换、缩放、裁剪、旋转等)、经由那个通道输出到内存/显存(MP主通道、SP自身通道)。

  5. 输出到内存

3. Camera-OV13850内部结构

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

image.png

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

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

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

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

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

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

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

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

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

建议大家订阅本专题!

原文链接:https://mp.weixin.qq.com/s/5qYO5RjCDUcxo4tR3_f_ow


微信图片_20220701092006.jpg

电子技术应用专栏作家  一口Linux