一.吐槽
最基本的硬件基础知识你必须得懂吧。举个栗子【敲黑板,重点来了啊】
1.你要点亮Camera,你得知道你用的是什么接口的,是MIPI的还是Parallel的?
2.数据传输有哪些方式?
3.Camera 的成像原理是什么?
等等
说点题外话
1.作为一个小白,我为啥要写一个专题吗?
我想,
一来是记录自己的成长过程吧,记录看过的资料,做了什么思考。
二来是激励自己不断前行吧。Just keep moving!
如果有天我不幸真的成为了Camera【砖家】,那么这些就是我自学的成长历程,也许对后人有一定的帮助;如果我还一直是个咸鱼,那么这个专题就是我努力而不得的见证。
我很喜欢的一句话:
If you can’t fly, then run; if you can’t run, then walk; if you can’t walk, then crawl, but whatever you do, you have to keep moving forward.
我不知道30岁之后,我是否能立业,是否依旧迷茫!
总之,无论如何,我们每天都要向前走,即使这个步子很小,但至少我勇往直前了!
废话少说,本篇文章知识点
二.知识点
1.Camera的成像原理
景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模拟的电信号,经过 A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 IO 接口传输到 CPU 中处理,通过 LCD 就可以看到图像了
这个成像原理还是很重要的,对未来我们分析问题会有很大的帮助。
图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。目前的 SENSOR 类型有两种:
1.CCD(Charge Couple Device),电荷耦合器件,它是目前高像素类 sensor 中比较成熟的成像器件,是以一行为单位的电流信号。
2.CMOS(Complementary Metal Oxide Semiconductor),互补金属氧化物半导体。CMOS的信号是以点为单位的电荷信号,更为敏感,速度也更快,更为省电
ISP 的性能是决定影像流畅的关键,JPEG encoder 的性能也是关键指标之一。而 JPEG encoder 又分为硬件 JPEG 压缩方式,和软件 RGB 压缩方式。
DSP 控制芯片的作用是:将感光芯片获取的数据及时快速地传到 baseband 中并刷新感光芯片,因此控制芯片的好坏,直接决定画面品质(比如色彩饱和度、清晰度)与流畅度。
2.Image Sensor类型(Camera的数据格式)
a) YUV Sensor(低端货)
YUV Sensor输出的Data格式为YUV,图像的效果处理使用Sensor内部的ISP,BB端接收YUV格式的data后只进行格式的转换,效果方面不进行处理,由于Sensor内部的ISP处理能力有限,且YUV Sensor的数据量比较大(YUV422的格式1个pixel2个byte),一般Size都比较小,常见的YUV sensor都是5M以下
b) Raw Sensor(稍微好一点的货,优势明显)
Raw Sensor输出的Data格式为Raw,图像的效果处理使用BB端的ISP,BB端接收Raw data后进行一系列的图像处理(OB,Shading,AWB,Gamma,EE,ANR等),效果方面由BB端控制,需要针对不同的模组进行效果调试,Raw sensor是目前的主流,数据量比YUV Sensor小(RAW10 格式的sensor 1个pixel 10个bit)使用平台ISP处理,能支持较大的size
3.硬件接口
简单说来,Camera的接口分为并行和串行两种方式,而目前MTK平台主要支持的串行方式为mipi接口,Parallel接口和mipi接口的介绍可以参考下图
虽然硬件接口有Parallel接口和mipi接口,实际上MIPI是主流,基本已经看不到Parallel的身影了!
后面我们会详细讲解MIPI接口的硬件原理图!
4.常见基本概念
我们这的BB端-原本是是baseband基带的意思,这里理解成CPU即可
a) 三路电压
camera包含的三路电压为模拟电压(VCAMA),数字电压(VCAMD),IO口电压(VCAMIO)
b) I2C信号
BB与Sensor端通过I2C来通信(读写寄存器),包括SCL(I2C Clock) SDA(I2C Data)信号
c) mipi几条lane
mipi data是成对的差分信号,MIPI_RDN和MIPI_RDP,有几对这样的pin脚,则说明是几条lane,同一颗sensor由于register setting不同,输出的信号有可能是2 lane或者4lane等
d) parallel高低八位
Parallel接口一般Data有10根pin,分别叫做Data0~Data9,Parallel sensor输出的data信号是8根pin时,这八根pin接到的是Data0Data7还是Data2Data9,需要配置正确,叫做接到高八位或者低八位,接错了可能产生如下现象
e) Data Format
Sensor输出的数据格式,对于YUV Sensor来说,Data Fomat一般有YUYV,YVYU,UYVY等,配置不对可能会导致颜色和亮度错掉,例如下图
对于Raw Sensor来说,Data Format就是First Pixel的颜色,分为R,Gr,Gb,B,配置不对会导致颜色错误
f) MCLK
BB提供给Sensor的外部clock
g) PCLK
Parallel接口的Sensor输出的clock,该clock变化一次,data更新一次
h) mipi 信号
mipi信号包括mipi clock和mipi data,该信号是高速信号,用来传输mipi数据包
5.硬件电路原理图
(以最近做的TIMOVI_S9016为例子)
我第一次接触原理图的时候,也是一脸懵逼,心里就在想,这他妈什么鬼,密密麻麻那么多线,后来看多了,也就得心应手了。
原理图分析(引脚作用)
1.供电部分
camera包含的三路电压为模拟电压(VCAMA),数字电压(VCAMD),IO口电压(VCAMIO)
a) VCAMD 就是 DVDD 数字供电,主要给 ISP 供电
b) VCAM_IO 就是 VDDIO 数字 IO 电源主要给 I2C 部分供电;
c) VCAMA 就是 AVDD 模拟供电,主要给感光区和 ADC 部分供电;
d) VCAM_AF 是对 Camera 自动对焦马达的供电
2.Sensor Input部分
a) Rest脚:用于复位和初始化
b) PDN脚:Camera工作状态控制:1.normol work(工作) 2.standby(待机)
c)Mlck脚: 即MasterClock脚,由BB提供给Sensor的外部clock
3.I2C部分
BB与Sensor端通过I2C来通信(读写寄存器),包括SCL(I2C Clock) SDA(I2C Data)信号
4.MIPI部分
mipi信号包括mipi clock和mipi data,该信号是高速信号,用来传输mipi数据包。
mipi data是成对的差分信号,MIPI_RDN和MIPI_RDP,有几对这样的pin脚,则说明是几条lane,同一颗sensor由于register setting不同,输出的信号有可能是2 lane或者4lane等。
1.MIPI_RDN0和MIPI_RDP0:用于数据传输
2.MIPI_RDN1和MIPI_RDP1:用于数据传输
因此是2lane的
另外
MIPI_RCN和MIPI_RCP:时钟信号
图中漏标
图中漏标了一个VIO18_PMU:用于拉高。
路漫漫其修远兮,吾将上下而求索。
以上是我看资料过程中,觉得应该掌握的Camera硬件基础知识!
参考文档
1.MTK 资料
2.MTK平台camera(摄像头)调试教程要点