*一、手机Camera的物理结构
[[文件:GD05 SWV 002 003 003 001.png]]
*二、Camera的成像原理
景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模拟的电信号,经过 A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 IO 接口传输到 CPU 中处理,通过 LCD 就可以看到图像了。
[[文件:GD05 SWV 002 003 003 002.png]]
图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。光电二极管受到光照射时,就会产生电荷。目前的 SENSOR 类型有两种:
CCD(Charge Couple Device),电荷耦合器件,它是目前高像素类 sensor 中比较成熟的成像器件,是以一行为单位的电流信号。
CMOS(Complementary Metal Oxide Semiconductor),互补金属氧化物半导体。CMOS的信号是以点为单位的电荷信号,更为敏感,速度也更快,更为省电。
ISP 的性能是决定影像流畅的关键,JPEG encoder 的性能也是关键指标之一。而 JPEG encoder 又分为硬件 JPEG 压缩方式,和软件 RGB 压缩方式。
DSP 控制芯片的作用是:将感光芯片获取的数据及时快速地传到 baseband 中并刷新感光芯片,因此控制芯片的好坏,直接决定画面品质(比如色彩饱和度、清晰度)与流畅度。
*三、Camera 常见的数据输出格式
常见的数据输出格式有:Rawdata 格式、YUV 格式、RGB 格式。
RGB 格式:采用这种编码方法,每种颜色都可用三个变量来表示红色、绿色以及蓝色的强度。每一个像素有三原色 R 红色、G 绿色、B 蓝色组成。
YUV 格式:其中“Y”表示明亮度(Luminance 或 Luma),就是灰阶值;而“U”和“V”表示色度(Chrominance 或 Chroma),是描述影像色彩及饱和度,用于指定像素的颜色。
RAW DATA 格式:是 CCD 或 CMOS 在将光信号转换为电信号时的电平高低的原始记录,单纯地将没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。
支持 YUV/RGB 格式的模组,一般会在模组上集成 ISP(Image Single Processor),经过A/D 转换过的原始数据经过 ISP 处理生成 YUV 标准格式传到 BB。一般来说,这种设计适用于低像素 Camera 的要求,会在主板上省去一个 DSP,可降低成本。在调试过程中,YUV/RGB 格式的摄像头,其所有参数都可在 kernel 层通过寄存器来控制。调试一般由 sensor的原厂支持。
支持 RawData 格式的模组,由于感光区域的需求,不会再模组内集成 ISP 以最大程度的增大感光区域的面积,提高照片质量。模组把原始的数字信号传给 BB 上的 DSP 进行处理,MTK 自带的 DSP 一般包含 ISP、JPEG encoder、和 DSP 控制芯片。在调试的时候图像的效果需要 MTK 在 HAL 层的参数进行支持。
*四、阅读 Camera 的规格书(以 E168项目一供AVC模组 OV5670_Raw 为例)
[[文件:GD05 SWV 002 003 003 003.png]]
[[文件:GD05 SWV 002 003 003 004.png]]
[[文件:GD05 SWV 002 003 003 005.png]]
*五、Camera 的硬件原理图及引脚(以E168项目原理图为例)
[[文件:GD05 SWV 002 003 003 006.png]]
从上面可看出,连接 Camera 的Pin脚可大致分为以下几类:
1、电源部分:
a)VCAMD 就是 DVDD 数字供电,主要给 ISP 供电,由于 RAWDATA格式的sensor其ISP是在 BB 端,所以将其引脚将其 NC。从上面的规格书上可以看出
DVDD 是内部 BB 端供电。模组已将其 NC 掉了;
b) VCAM_IO 就是 VDDIO 数字 IO 电源主要给 I2C 部分供电;
c) VCAMA 就是 AVDD 模拟供电,主要给感光区和 ADC 部分供电;
d) VCAM_AF 是对 Camera 自动对焦马达的供电。
2、Sensor Input 部分:
a) Reset 信号,用于复位、初始化。
b) Standby/PowerDown 信号,用于进入待机模式,降低功耗。
c) Mclk,即 MasterClock 信号,是由 BB 端提供。
3、Sensor OutPut 部分:
a)Pclk,即 PixelClock 信号,由 MCLK 分频得到,作为外部时钟控制图像传输帧率
b) HSYNC,行同步信号,其上升沿表示新一列行图像数据的开始。
c) VSYNC,帧同步信号,其下降沿表示新的一帧图片的开始。
d) D0-D9 一共 10 根数据线(8/10 根等);
4、I2C 部分:SCL,I2C 时钟信号线和 SDA,I2C 数据信号线。
*四、Camera 驱动工作流程
[[文件:GD05 SWV 002 003 003 007.png]]
从上图可以清晰的了解到 Camera 的一个工作流程主要分为这么七步:
1.打开 Camera Power LDO,让 Camera 有能量保证。
2.打开 IIC,设置 PDN 引脚,使 Camera 退出 Standby 模式,按照要求让 Reset 脚做一个复位动作。
3.读一下 sensor 的版本 ID,这样可以让你确认是否连接上你想要的 sensor。
4.对 Sensor 进行初始化下载最基本的参数让 Sensor 工作起来,可能包括软复位。
5.下载 preview 的参数,为预览动作准备。
6.下载 Capture 的参数,为拍照动作准备。
7.设置 PDN 引脚,使 Sensor 进入 Standby 模式, 或者关掉 LDO 等动作,退出 Camera。