Camera|2.MIPI、CSI基础

栏目:教育活动  时间:2023-01-20
手机版

  Camera历史文章:

  《Camera | 1.Camera基础知识

  》

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

  

  摄像头常用术语

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

  一、基础概念

  1. MIPI

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

  

  MIPI官网

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

  2. CSI

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

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

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

  

  CSI协议有两个版本协议,分别为CSI-2和CSI-3;

  CSI-2协议遵循的物理标准有两个,分别为C-PHY和D-PHY;

  CSI-3协议的物理标准对应M-PHY,且应用层协议栈还需要连接Uni-Pro层。

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

  

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

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

  二、MIPI协议

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

  

  由上图可得:

  显示设备采用的DSI协议

  摄像头采用的CSI协议

  RF IC采用的DigRF协议

  存储设备采用的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协议分为五层:

  

  工作顺序:

  将原始的图像数据在应用层做相应的图像处理,包括白平衡/噪声去除和色彩还原等;

  将处理的数据进入组包层做数据分割以及重组,然后将其传输给底层协议层;

  底层协议层会根据数据类型产生包头,根据数据内容产生构成包围的校验序列,再将包头、数据本身和包尾组成起来发送给通道管理层;

  通道管理层模块按照通道的选通情况,合理分配数据到每个通道,之后数据经过数模转换进入到物理层传输;

  接收端在收到物理层数据后,再按照之前的逆序解包出原始的图像数据。

  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:主机处理器与摄像头模块之间的高速串行接口(传输图像数据)。

  SOC的CCI组件通过I2C完成对Camera的配置,使其输出mipi信号

  其中一对Clock+/-则由Clock Lane标示,

  一对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接口在系统的实现如上图所示,

  通常一个camera的模组如图所示,通常包括Lens、Sensor、CSI接口等,其中CSI接口用于视频数据的传输;

  SoC的Mipi接口对接Camera,并通过I2C/SPI控制camera模组;

  MIPI DPHY提供了4 Lane的Rx接口,由Sensor提供Clock,并通过四条数据Lane输入图像数据;

  DPHY与CSI-2 Host Contrller之间通过PPI(PHY-Protocol Interface)相连,该接口包括了控制,数据,时钟等多条信号

  CSI-2 Host Contrller通过PPI接口收到数据后进行解析,完成后通过IDI(Image Data Interface)或者IPI(Image Pixel Interface)输出到SoC的其他模块(VICAP或ISP,rk3568是送至VICAP模块);

  ISP将处理过的图片输出到MP主通道或SP自身通道,SP一般用来预览图片,SP图片的最大分辨率比MP低;

  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接口如下:

  

  一般抓图的顺序:

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

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

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

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

  输出到内存

  3. Camera-OV13850内部结构

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

  

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

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

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

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

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

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

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

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

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

  建议大家订阅本专题!

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

上一篇:2022国家线And34所复试线考研最新消息汇总!
下一篇:41所院校公布2022年河南专升本考试招生人数!

最近更新教育活动