android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)

一、摄像头工作原理

上一篇我们讲了摄像头模组的组成,工作原理,做为一种了解。下面我们析摄像头从寄存器角度是怎么工作的。如何阅读摄像头规格书(针对驱动调节时用到关键参数,以GT2005为例)。

规格书,也就是一个器件所有的说明,精确到器件每一个细节,软件关心的寄存器、硬件关心的电气特性、封装等等。单单驱动方面,我们只看对我们有用的方面就可以了,没必要全部看完。主要这样资料全都是鸟语(En),全部看完一方面时间上会用的比较多,找到关键的地方就行了。

1、camera的总体示意图如下:控制部分为摄像头上电、IIC控制接口,数据输出为摄像头拍摄的图传到主控芯片,所有要有data、行场同步和时钟号。GT2005/GT2015是CMOS接口的图像传感器芯片,可以感知外部的视觉信号并将其转换为数字信号并输出。

我们需要通过MCLK给摄像头提供时钟,RESET是复位线,PWDN在摄像头工作时应该始终为低。PCLK是像素时钟,HREF是行参考信号,VSYNC是场同步信号。一旦给摄像头提供了时钟,并且复位摄像头,摄像头就开始工作了,通过HREF,VSYNC和PCLK同步传输数字图像信号。 数据是通过D0~D7这八根数据线并行送出的。

(1)、Pixel Array

GT2005阵列大小为 1268 列、1248 行,有效像素为 1616 列, 1216 行。也就是说摄像头为1600X1200的时候,像素点要多于这个,去除边缘一部分,保证图像质量吧。

(2)、IIC 这个不用说了,摄像头寄存器初始化的数据都从这里传输的,所有的IIC器件都一样的工作,来张图吧,后面做详细分析;

下面这一部分在调试驱动的过程中比较重要了:

(3)、MCLK

电子元件工作都得要个时钟吧,摄像头要工作,这个就是我们所要的时钟,在主控制芯片提供,这个时钟一定要有,要不然摄像头不会工作的。

(4)、上下电时序,这个要接规格书上来,注间PWDN、RESETB这两个脚,不同的摄像头不太一样,这个图是上电时序,上电时参考一下,知道在那里看就行;

(5)PCLK \D1~D7

摄像头得到的数据要传出来吧,要有数据,当然数据出来要有时钟和同步信号了,看下它的时序,和LCD显示的时序一样,道理是一样的:

(6)、主要的寄存器:分辨率、YUV顺序、X轴、Y轴镜相、翻转

以上工作完成后,也许还有一些问题,分辨率太小; YUV顺序不对图像不对; XY图像方向。这些工作完成后,如果还有什么细节的问题,如果你想花时间,看规格书里面的寄存器可以解决的,如果不想看,找模组厂的FAE,他们专业的,很快会帮你搞定。

(7)、摄像头的硬件接口


 

二、S5pv310上Camera主控芯片上的硬件接口

1、CAMIF   Camera Interface

先看一下摄像头接口框图:(这个看着有点抽像,我们放这里,先了解一下,其实驱动中一般不会涉及到这里,不过我们这里分析了,就把这个带出来了)

(1)、摄像头接口的主要属性:

a、支持多种输入接口:(就是上面我们看到的四模式)

    DMA (AXI 64-bitinterface) 模式;

    MIPI (CSI) 模式;

    ITU-R BT 601/ 656/ 709模式;

    Direct FIFO (PlayBack)模式;

b、支持多种输出模式:

DMA (AXI 64-bitinterface) 模式;

Direct FIFO 模式;

c、支持数码变焦Digital Zoom In (DZI) capability;

d、支持多摄像头输入;

e、 支持视频同步信号极性可编程控制;

f、支持最大输入分辨率为8192X8192;

g、支持图像翻转(X轴、Y轴镜相,90、180、270翻转);

h、支持多种图片格式; 

i、支持捕获帧控制;

j、支持的图像特效。

2、FIMC  Fully InteractiveMobile Camera

摄像头的采集的数据要CPU无法直接处理,主控芯片里面集成了Camera控制器,叫FIMC(FullyInteractive Mobile Camera)。摄像头需要先把图像数据传给控制器,经过控制器处理(裁剪拉升后直接预览或者编码)之后交给CPU处理。实际上摄像头工作需要的时钟(MCLK)也是FIMC给它提供的。

在s5pv310上的摄像头接口是一个FIMC(完全交互式移动相机接口),支持ITUR BT-601-605标准、AMX接口、MIPI接口

MIPI 、ITU、AMX

(1)、ITU国际电信联盟无线电通信部门ITU-RRadiocommunication Sector of ITU 简称ITU-RITU-R BT.601 16位数据传输;Y、U、V信号同时传输,是并行数据,行场同步单独输出。
ITU-R BT.6568/10位数据传输;不需要同步信号;串行数据传输;传输速率是601的2倍;先传Y,后传UV。行场同步信号嵌入在数据流中。

(2)、MIPI(移动行业处理器接口)是MobileIndustry Processor Interface的缩写 MIPI 规范:Camera工作组:MIPI Camera Serial Interface 1.0specification .Camera Serial Interface 2 v1.0 (CSI-2)

(3)、AMX(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller BusArchitecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。

3、接口信息

FIMC信号定义如下所示(YCbCr模式)


Signal


I/O


Description


   Type


HREF


I


行同步信号

 

PCLK


I


像素时钟


DATA[7:0]


I


像素数据


FIELD


O


FIELD信号

MCLK
O


系统时钟信号

通过CAM_MCLK给摄像头提供时钟,RST是复位线,PWDN在摄像头工作时应该始终为低。HREF是行参考信号,PCLK是像素时钟,VSYNC是场同步信号。一旦给摄像头提供了时钟,并且复位摄像头,摄像头就开始工作了,通过HREF,PCLK和VSYNC同步传输数字图像信号。数据是通过DATA0~DATA7这八根数据线并行送出的。

4、不同接口模式的工作时序

ITU-R BT 656输入时序图,这种方式下同步信号已经内嵌到视频数据中了,因此不需要额外的行和帧同步信号。

ITU-R BT 601输入时序图,这种方式下行和帧同步信号独立于视频数据,因此需要同步信号。


(ITU-R BT 601: 16位数据传输;21芯;Y、U、V信号同时传输。  
ITU-R BT 656: 9芯,不需要同步信号;8位数据传输;串行视频传输;传输速率是601的2倍;先传Y,后传UV。)

同步信号的时延参数

Ø        t1:表示VSYNC前、后插入周期

Ø        t2:表示HREF前插入周期

Ø        t3:表示 HREF宽度

Ø        t4:表示HREF后插入周期

 

5、camera的时钟域,三个时钟:系统时钟、PCLK、MCLK

    每个摄像头接口包括三个时钟域,每一个时钟域是系统总线时钟,第二个是摄像头像素时钟PCLK,第三个时钟域为内部时钟MCLK。系统总线时钟必需高于PCLK, CAM_MCLK 必需固定频率分频,如PLL时钟。如果有外部时钟晶振,CAM_MCLK 空掉。不需要同步MMCLK,PCLK应该与schmitt-triggered电平移位器连接。

6、硬件接口电路

主控芯片上的接口:


camera 接口

时间: 2024-10-13 04:39:41

android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)的相关文章

Struts2(二):工作原理

struts可查看源码:https://github.com/apache/struts 在学习struts2之前,我先看了一些比较早版本对struts2的工作原理相关的介绍,顺便抄写过来,用来帮助自己要弄清这个框架的工作原理. struts2.1.3之前使用的FilterDispatcher,之后的版本使用StrutsPrepareAndExecuteFilter,而我这里还是以Dispatcher为例来记录的. 依据: Since Struts 2.1.3, use org.apache.s

android Camera 如何判断当前使用的摄像头是前置还是后置

现在 android 平台的智能手机一般都标配有两颗摄像头.在 Camera 中都存在摄像头切换的功能. 并且有一些功能前后置摄像头上会有所不同.譬如人脸检测,人脸识别,自动对焦,闪光灯等功能, 如果前置摄像头的像素太低,不支持该功能的话,就需要在前置摄像头上关掉该 feature. 那么是如何判断并切换前后置摄像头的呢? 我们先来看下 CameraInfo 这个类, 1 /** 2 * Information about a camera 3 */ 4 public static class

android:layout_weight属性的工作原理

android:layout_weight属性告知LinearLayout如何进行子组件的布置安排. 我们已经为两个组件设置了同样的值,但这并不意味它们在屏幕上占据着同样的宽 度.在决定子组件视图的宽度时,LinearLayout使用的是layout_width与 layout_weight参数的混合值.LinearLayout是分两个步骤来设置视图宽度的. activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.an

[Android] android:layout_weight 属性的工作原理

该属性告知 LinearLayout 如何安排子组件的布局: 水平方向的 LinearLayout,查看 layou_width 和 layout_weight以决定子组件的宽度. 垂直方向的 LinearLayout,查看 layou_height 和 layout_weight以决定子组件的高度. 原文地址:https://www.cnblogs.com/fphuang/p/8453350.html

android camera(一):camera模组CMM介绍【转】

转自:http://blog.csdn.net/xubin341719/article/details/7723725 版权声明:本文为博主原创文章,未经博主允许不得转载. 关键词:android  camera CMM 模组 camera参数 平台信息: 内核:linux 系统:android 平台:S5PV310(samsung exynos 4210)  作者:xubin341719(欢迎转载,请注明作者) 下载:常用摄像头规格书(个别有android驱动程序)  :bf3703 30W.

android camera(一):camera模组CMM介绍

一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段时间调试那个有点丑. 2.摄像头工作原理.camera的组成各组件的作用 想完全的去理解,还得去深入,如果是代码我们就逐步分析,模组的话我们就把它分解开来,看他到底是怎么工作的.看下它是有那些部分构成的,如下图所示: (1).工作原理:物体通过镜头(lens)聚集的光,通过CMOS或CCD集成电路,

Servlet 生命周期、工作原理

一. Servlet 生命周期 servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init(). service():它是Servlet的核心,负责响应客户的请求.每当一个客户请求一个HttpServlet

handler的工作原理

一.工作机制 在子线程中创建一个handler的成员变量: 在子线程得到handler的引用,调用sendMessage给主线程发送一个消息 在handler中重写handlermessage,修改ui界面 二.工作原理 前提知识:所有的ui界面的操作系统,后台都运行者一个死循环,它在不停的监听和接收用户发出的指令,一旦接收指令就会立即执行 子线程调用handler的sendMessage方法,把消息发送给handler,handler把消息放到Looper内部维护消息队列里,Looper不停地

zabbix监控的基础概念、工作原理及架构

一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. agent端:主机通过安装agent方式采集数据. server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示. zabbix = cacti + nagios