android下camera的分析
来源:互联网 发布:聂海芬 知乎 编辑:程序博客网 时间:2024/05/21 17:58
主控: Samsung Cortex ARM A8 smdkc110 1G
Camera: OV5640(500W)
系统: android 2.3
一、Camera 工作原理介绍
1. 结构 .
一般来说,camera 主要是由 lens 和 sensor IC 两部分组成,其中有的 sensor IC 集成 了 DSP,有的没有集成,但也需要外部 DSP 处理。细分的来讲,camera 设备由下边几部 分构成:
1) lens(镜头) 一般 camera 的镜头结构是有几片透镜组成,分有塑胶透镜(Plastic)和玻璃透 镜(Glass) ,通常镜头结构有:1P,2P,1G1P,1G3P,2G2P,4G 等。附:镜头的好坏会影响到成像的质量主要包括两个方面:镜头的透孔的宽度和镜头的高度,当然镜头越好,成像更清晰,价格也更高
2) sensor(图像传感器) Senor 是一种半导体芯片,有两种类型:CCD 和 CMOS。Sensor 将从 lens 上传导过来的光线转换为电信号, 再通过内部的 AD 转换为数字信号。由于 Sensor 的每个 pixel 只能感光 R 光或者 B 光或者 G 光,因此每个像素此时存贮的是单色的, 我们称之为 RAW DATA 数据。 要想将每个像素的 RAW DATA 数据还原成三基色,就需要 ISP 来处理。附:sensors的焦距会影响到远景的效果,500W的话焦距一般设置到1.8-2.5M
3)ISP(图像信号处理) 主要完成数字图像的处理工作,把 sensor 采集到的原始数据转换为显示支持的格式,目前在像素越来越高端情况下,信号处理一般移交给主控操作,sensors直接扔出原始数据
4)CAMIF(camera 控制器) 芯片上的 camera 接口电路,对设备进行控制,接收 sensor 采集的数据交给 CPU,并送入 LCD 进行显示。
2. 工作原理
外部光线穿过 lens 后, 经过 color filter 滤波后照射到 Sensor 面上, Sensor 将从 lens 上传导过来的光线转换为电信号,再通过内部的 AD 转换为数字信号。如果 Sensor 没有集 成 DSP(现在高像素一般是不需要sensors集成的DSP的),则通过 DVP 的方式传输到 baseband,此时的数据格式是 RAW DATA。如果集成 了 DSP, RAW DATA 数据经过 AWB、 则 color matrix、 lens shading、 gamma、 sharpness、 AE 和 de-noise 处理,后输出 YUV 或者 RGB 格式的数据。
最后会由 CPU 送到 framebuffer 中进行显示,这样我们就看到 camera 拍摄到的景象了。
3. YUV 与 YCbCr .
YUV 和 RGB 一样,是色彩空间中常用的色彩模型之一,两者可以相互转换。YUV 中 得 Y 表示亮度,U 和 V 表示色度。与 RGB 相比,它的优点在于占用更少的空间。 YCbCr 则是在世界数字组织视频标准研制过程中作为 ITU - R BT601 建议的一部分, 其实是 YUV 经过缩放和偏移的翻版。 其中 Y 与 YUV 中的 Y 含义一致, Cb , Cr 同样都指色 彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在计算机系统中应用最多的成 员, 其应用领域很广泛,JPEG、 MPEG 均采用此格式。 一般人们所讲的 YUV 大多是指 YCbCr。 YCbCr 有许多取样格式, 如 4∶4∶4 , 4∶2∶2 , 4∶1∶1 和 4∶2∶0。
二、 硬件原理图分析
POWER:
VDD_CAMA28 ----2.8v camera的模拟电压
VDD_CAMD28 ----1.5v camera的工作电压
VDD_CAMIO28 ----2.8v camera的GPIO口数字电压
OUTPUT:
CAM_DATA: camera的数据管脚。此数据脚可以输出的格式有YUV、RGB、JPEG
CAM_VSYNC: camera的帧同步信号管脚。一个VYSNC信号结束表示一帧(即一个画面)的数据已经输出完毕
CAM_HSYNC: camera行同步信号管脚。一个HSYNC信号结束表示一行的数据已经输出完毕
CAM_PCLK: 像素同步信号管脚。一个PCLK信号结束表示一个数据已经输出完毕
INPUT:
CAM_PWDN: camera的使能管脚,当camera处于PWDN模式时,一切对camera的操作都是无效的,因此,在RST之前,一定要将PWDN管脚置为normal模式
CAM_RST: camera的复位管脚。此方式为硬复位模式,一般管脚置为低,camera处于硬复位状态,camera的各个IO口恢复到出厂默认状态。只有在XCLK开启后,将RESET置为低,硬复位才有效,否则复位无效。
CAM_MCLK: camera工作时钟管脚。此管脚为主控提供camera的工作时钟
CAM_I2C: camera与主控的通信管脚
附:
在走PCB板的时候可以尽量让电源线走短一点,线也可以稍微粗一点,设计电源的时候可以加上0.47uf 、0.1uf的电容,高频、低频可以很好的控制
三、 软件驱动分析
1、 上电顺序、下电顺序(基于OV5640)
这一步我就忽略不描述了,参照sensors的时序图就可以了
2、配置 OV5640相关信息
点击(此处)折叠或打开
- #ifdef CONFIG_VIDEO_OV5640
- static struct ov5640_platform_data ov5640_plat = {
- .default_width = 640,
- .default_height = 480,
- .pixelformat = V4L2_PIX_FMT_YUYV,
- .freq = 24000000,
- .is_mipi = 0,
- };
- static struct i2c_board_info ov5640_i2c_info = {
- I2C_BOARD_INFO("OV5640", 0x78 >> 1),
- .platform_data = &ov5640_plat,
- };
- static struct s3c_platform_camera ov5640 = {
- //#ifdef CAM_ITU_CH_A
- .id = CAMERA_PAR_B,
- //#else
- //.id = CAMERA_PAR_B,
- //#endif
- .type = CAM_TYPE_ITU,
- .fmt = ITU_601_YCBCR422_8BIT,
- .order422 = CAM_ORDER422_8BIT_YCBYCR,//CAM_ORDER422_8BIT_CBYCRY,
- .i2c_busnum = 1, //3, //uses gpio emulated
- .info = &ov5640_i2c_info,
- .pixelformat = V4L2_PIX_FMT_YUYV,
- .srclk_name = "mout_mpll",
- .clk_name = "sclk_cam1",
- .clk_rate = 24000000, /* 24MHz */
- .line_length = 640, /* 640*480 */
- /* default resol for preview kind of thing */
- .width = 640,
- .height = 480,
- .window = {
- .left = 16,
- .top = 0,
- .width = 640 - 16,
- .height = 480,
- },
- /* Polarity */
- .inv_pclk = 0,
- .inv_vsync = 1,
- .inv_href = 0,
- .inv_hsync = 0,
- .initialized = 0,
- .cam_power = set_cam5640_main_power,
- };
- #endif
点击(此处)折叠或打开
- static struct s3c_platform_fimc fimc_plat = {
- .srclk_name = "mout_mpll",
- .clk_name = "sclk_fimc",
- .lclk_name = "sclk_fimc_lclk",
- .clk_rate = 166750000,
- .default_cam = CAMERA_CSI_C,
- .camera = {
- &OV5640,//5M back cam
- &OV2659,///2m front cam
- },
- .hw_ver = 0x43,
- };
上一篇: android关于高精度GPS模块
下一篇:ubuntu下终端显示中文为乱码的问题
- QEMU 访存机制介绍与应用...
- 第二季度B2C市场
- SPI系统分析
- 基于smdk4412在android4.0上分...
- 库存多台示波器 TDS1012B TDS1...
- android开发---解压system.img...
- 不用vs和cygwin!Eclipse+cdt...
- Android自定义View的实现...
- Android避免内存泄露:合理使...
- 让ProgressDialog在setCancela...
- ChinaUnix & ITPUB社区12周年...
- ssh连接出现以下提示,求解...
- 如何扩展MYSQL
- 准备做一个大型门户,用户什么...
- gbk or utf8
huabinbin002013-06-28 13:46:09
:
不好意思,今天才看到。。有的
回复 | 举报- android下camera的分析
- android下camera的分析
- android下camera数据流的分析
- android下camera数据流的分析
- android下camera数据流的分析
- Android Camera 系统架构源码分析(1)---->Camera的初始化
- Android Camera 系统架构源码分析(1)---->Camera的初始化
- Android Camera 系统架构源码分析(4)---->Camera的数据来源及Camera的管理
- Android Camera 系统架构源码分析(4)---->Camera的数据来源及Camera的管理
- android Camera模块分析
- Android Camera 模块分析
- android Camera模块分析
- Android Camera 模块分析
- Android Camera 模块分析
- Android Camera模块分析
- Android Camera 模块分析
- Android Camera模块分析
- Android Camera驱动分析
- 修改第一次开机时的默认壁纸
- android关于蓝牙不能传送APK文件
- S5PC110增加APN的设置
- android关于GPS hal层的分析
- android关于高精度GPS模块
- android下camera的分析
- Zadig
- ubuntu下终端显示中文为乱码的问题
- android下制作开机logo
- android下camera数据流的分析
- ubuntu下关于git的配置和使用
- android下支持pdf、ppt等格式的下载
- 双系统在ubuntu12.04下如何修改grub的启动项
- android4.0编译系统时候遇到的错误集