?? camsensor_ov9650.c
字號:
/*============================================================================
Camera Interface Device Driver Source File for
Omnivision OV9650 1.3 Mega Pixel CMOS sensor
DESCRIPTION
This file implements the device driver for the Omnivision 9650
camera sensor.
Copyright (c) 2005 by QUALCOMM, Incorporated. All Rights Reserved.
============================================================================*/
/*============================================================================
EDIT HISTORY FOR FILE
This section contains comments describing changes made to this file.
Notice that changes are listed in reverse chronological order.
when who what, where, why
-------- ----- ----------------------------------------------------------
05/11/06 khk Resolved lint errors
05/10/06 cg Featurization of drivers, through USE_CAMSENSOR_XXX Flag
10/19/05 yl cleaned up lint warning.
07/07/05 dl Added the following feature flags
FEATURE_CAMERA_LVCM
FEATURE_CAMERA_5x5_ASF
06/15/05 anb Color Tuning for OV9650
06/06/05 dl Added ASF 5x5 support
05/04/05 dle CAMSENSOR is now free of VFE.
04/14/05 uy Added: Lens roll off correction, Power save, Frame Rate.
04/12/05 uy Basic color tuning.
12/08/04 ds Initial release.
============================================================================*/
/*============================================================================
INCLUDE FILES
============================================================================*/
#include "camsensor.h"
#if defined (FEATURE_CAMERA) && defined (USE_CAMSENSOR_OMNI_VISION_9650)
#include "camsensor_ov9650.h"
#include "camerai.h"
#include "ipl.h"
#include "msg.h"
#include "i2c.h"
#include "clk.h"
#include "chromatix_6550.h"
#ifdef LOCAL
#undef LOCAL
#endif
#define LOCAL static
/*============================================================================
SENSOR REGISTER ADDERSSES AND THEIR POSSIBLE VALUES
=============================================================================*/
#define GAIN_REG_ADDRESS 0x00
#define GAIN_REG_DEFAULT_VALUE 0x00
#define BLUE_GAIN_REG_ADDRESS 0x01
#define BLUE_GAIN_REG_DEFAULT_VALUE 0x80
#define RED_GAIN_REG_ADDRESS 0x02
#define RED_GAIN_REG_DEFAULT_VALUE 0x80
#define VREF_REG_ADDRESS 0x03
#define VREF_REG_DEFAULT_VALUE 0x12
#define COM1_REG_ADDRESS 0x04
#define COM1_DEFAULT_VALUE 0x00
#define BAVE_REG_ADDRESS 0x05
#define BAVE_REG_DEFAULT_VALUE 0x00
#define GEAVE_REG_ADDRESS 0x06
#define GEAVE_REG_DEFAULT_VALUE 0x00
#define RAVE_REG_ADDRESS 0x08
#define RAVE_REG_DEFAULT_VALUE 0x00
#define COM2_REG_ADDRESS 0x09
#define COM2_REG_DEFAULT_VALUE 0x01
#define COM2_REG_SOFT_SLEEP_MODE_VALUE 0x10
#define PID_REG_ADDRESS 0x0A /* Read-Only register. */
#define PID_REG_DEFAULT_VALUE 0x96
#define VER_REG_ADDRESS 0x0B /* Read-Only register. */
#define VER_REG_DEFAULT_VALUE 0x52
#define COM3_REG_ADDRESS 0x0C
#define COM3_REG_DEFAULT_VALUE 0x00
#define COM4_REG_ADDRESS 0x0D
#define COM4_REG_DEFAULT_VALUE 0x00
#define COM5_REG_ADDRESS 0x0E
#define COM5_REG_DEFAULT_VALUE 0x01
#define COM6_REG_ADDRESS 0x0F
#define COM6_REG_DEFAULT_VALUE 0x43
#define AECH_REG_ADDRESS 0x10
#define AECH_REG_DEFAULT_VALUE 0x40
#define CLKRC_REG_ADDRESS 0x11
#define CLKRC_REG_DOUBLE_CLOCK_ENABLE 0x80
#define CLKRC_REG_PRE_SCALAR_VALUE 0x00 /* Must be in the range of 0x00 - 0x0F */
#define COM7_REG_ADDRESS 0x12
#define COM7_REG_RAW_RGB_ENABLE 0x01
#define COM7_REG_RGB_OUTPUT_ENABLE 0x04
#define COM7_REG_SENSOR_RESET_VALUE 0x80
#define COM8_REG_ADDRESS 0x13
#define COM9_REG_ADDRESS 0x14
#define COM9_REG_ENABLE_DROP_FRAME 0x02
#define COM9_REG_VSYNC_DROP 0x04
#define COM10_REG_ADDRESS 0x15
#define COM10_REG_VSYNC_NEGATIVE 0x02
#define HSTART_REG_ADDRESS 0x17
#define HSTART_REG_DEFAULT_VALUE 0x1A
#define HSTOP_REG_ADDRESS 0x18
#define HSTOP_REG_DEFAULT_VALUE 0xBA
#define VSTRT_REG_ADDRESS 0x19
#define VSTRT_REG_DEFAULT_VALUE 0x01
#define VSTOP_REG_ADDRESS 0x1A
#define VSTOP_REG_DEFAULT_VALUE 0x81
#define PSHFT_REG_ADDRESS 0x1B
#define PSHFT_REG_DEFAULT_VALUE 0x00
#define MIDH_REG_ADDRESS 0x1C
#define MIDH_REG_DEFAULT_VALUE 0x7F /* Read Only */
#define MIDL_REG_ADDRESS 0x1D
#define MIDL_REG_DEFAULT_VALUE 0xA2 /* Read Only */
#define MVFP_REG_ADDRESS 0x1E
#define MVFP_REG_DEFAULT_VALUE 0x00
#define BOS_REG_ADDRESS 0x20
#define BOS_REG_DEFAULT_VALUE 0x80
#define GBOS_REG_ADDRESS 0x21
#define GBOS_REG_DEFAULT_VALUE 0x80
#define GROS_REG_ADDRESS 0x22
#define GROS_REG_DEFAULT_VALUE 0x80
#define ROS_REG_ADDRESS 0x23
#define ROS_REG_DEFAULT_VALUE 0x80
#define AEW_REG_ADDRESS 0x24
#define AEW_REG_DEFAULT_VALUE 0x78
#define AEB_REG_ADDRESS 0x25
#define AEB_REG_DEFAULT_VALUE 0x68
#define VPT_REG_ADDRESS 0x26
#define VPT_REG_DEFAULT_VALUE 0xD4
#define BBIAS_REG_ADDRESS 0x27
#define BBIAS_REG_DEFAULT_VALUE 0x80
#define GbBIAS_REG_ADDRESS 0x28
#define GbBIAS_REG_DEFAULT_VALUE 0x80
#define Gr_COM_REG_ADDRESS 0x29
#define Gr_COM_REG_DEFAULT_VALUE 0x00
#define EXHCH_REG_ADDRESS 0x2A
#define EXHCH_REG_DEFAULT_VALUE 0x00
#define EXHCL_REG_ADDRESS 0x2B
#define EXHCL_REG_DEFAULT_VALUE 0x00
#define RBIAS_REG_ADDRESS 0x2C
#define RBIAS_REG_DEFAULT_VALUE 0x80
#define ADVFL_REG_ADDRESS 0x2D
#define ADVFL_REG_DEFAULT_VALUE 0x00
#define ADVFH_REG_ADDRESS 0x2E
#define ADVFH_REG_DEFAULT_VALUE 0x00
#define YAVE_REG_ADDRESS 0x2F
#define YAVE_REG_DEFAULT_VALUE 0x00
#define HSYST_REG_ADDRESS 0x30
#define HSYST_REG_DEFAULT_VALUE 0x08
#define HSYEN_REG_ADDRESS 0x31
#define HSYEN_REG_DEFAULT_VALUE 0x30
#define HREF_REG_ADDRESS 0x32
#define HREF_REG_DEFAULT_VALUE 0xA4
#define ADC_REG_ADDRESS 0x37
#define ADC_REG_RECOMMENDED_VALUE 0x81
#define ACOM_REG_ADDRESS 0x38
#define ACOM_REG_RECOMMENDED_VALUE 0x12
#define OFON_REG_ADDRESS 0x39
#define OFON_REG_LINE_BUFFER_PWDN_VALUE 0x08
#define OFON_REG_RECOMMENDED_VALUE 0x50 /* Set reserved bits which role is currently unknown. */
/* Based on the OV9650 implementationguide tables. */
/* Leaving these bits clear results in a bluish image. */
#define TSLB_REG_ADDRESS 0x3A
#define TSLB_REG_DEFAULT_VALUE 0x0C
#define COM11_REG_ADDRESS 0x3B
#define COM11_REG_DEFAULT_VALUE 0x00
#define COM12_REG_ADDRESS 0x3C
#define COM12_REG_DEFAULT_VALUE 0x40
#define COM13_REG_ADDRESS 0x3D
#define COM13_REG_NO_COLOR_CORRECTIONS 0x00
#define COM14_REG_ADDRESS 0x3E
#define COM14_REG_DEFAULT_VALUE 0x0E
#define EDGE_REG_ADDRESS 0x3F
#define EDGE_REG_DEFAULT_VALUE 0x88
#define COM15_REG_ADDRESS 0x40
#define COM15_REG_DEFAULT_VALUE 0xC0
#define COM16_REG_ADDRESS 0x41
#define COM16_REG_DEFAULT_VALUE 0x10
#define COM17_REG_ADDRESS 0x42
#define COM17_REG_DEFAULT_VALUE 0x08
#define MTX1_REG_ADDRESS 0x4F
#define MTX1_REG_DEFAULT_VALUE 0x58
#define MTX2_REG_ADDRESS 0x50
#define MTX2_REG_DEFAULT_VALUE 0x48
#define MTX3_REG_ADDRESS 0x51
#define MTX3_REG_DEFAULT_VALUE 0x10
#define MTX4_REG_ADDRESS 0x52
#define MTX4_REG_DEFAULT_VALUE 0x28
#define MTX5_REG_ADDRESS 0x53
#define MTX5_REG_DEFAULT_VALUE 0x48
#define MTX6_REG_ADDRESS 0x54
#define MTX6_REG_DEFAULT_VALUE 0x70
#define MTX7_REG_ADDRESS 0x55
#define MTX7_REG_DEFAULT_VALUE 0x40
#define MTX8_REG_ADDRESS 0x56
#define MTX8_REG_DEFAULT_VALUE 0x40
#define MTX9_REG_ADDRESS 0x57
#define MTX9_REG_DEFAULT_VALUE 0x40
#define MTXS_REG_ADDRESS 0x58
#define MTXS_REG_DEFAULT_VALUE 0x0F
#define LCC1_REG_ADDRESS 0x62
#define LCC1_REG_VALUE 0x48
#define LCC2_REG_ADDRESS 0x63
#define LCC2_REG_VALUE 0xD8
#define LCC3_REG_ADDRESS 0x64
#define LCC3_REG_VALUE 0x05
#define LCC4_REG_ADDRESS 0x65
#define LCC4_REG_VALUE 0x00
#define LCC5_REG_ADDRESS 0x66
#define LCC5_REG_VALUE 0x01
#define MANU_REG_ADDRESS 0x67
#define MANU_REG_DEFAULT_VALUE 0x80
#define MANV_REG_ADDRESS 0x68
#define MANV_REG_DEFAULT_VALUE 0x80
#define HV_REG_ADDRESS 0x69
#define HV_REG_DEFAULT_VALUE 0x00
#define MBD_REG_ADDRESS 0x6A
#define MBD_REG_DEFAULT_VALUE 0x00
#define COM21_REG_ADDRESS 0x8B
#define COM21_REG_DEFAULT_VALUE 0x04
#define COM22_REG_ADDRESS 0x8C
#define COM22_REG_DEFAULT_VALUE 0x00
#define COM23_REG_ADDRESS 0x8D
#define COM23_REG_DEFAULT_VALUE 0x00
#define COM24_REG_ADDRESS 0x8E
#define COM24_REG_DEFAULT_VALUE 0x00
#define DBLC1_REG_ADDRESS 0x8F
#define DBLC1_REG_DEFAULT_VALUE 0x0F
#define DBLC_B_REG_ADDRESS 0x90
#define DBLC_B_REG_DEFAULT_VALUE 0x00
#define DBLC_R_REG_ADDRESS 0x91
#define DBLC_R_REG_DEFAULT_VALUE 0x00
#define DM_LNL_REG_ADDRESS 0x92
#define DM_LNL_REG_DEFAULT_VALUE 0x00
#define DM_LNH_REG_ADDRESS 0x93
#define DM_LNH_REG_DEFAULT_VALUE 0x00
#define LCCFB_REG_ADDRESS 0x9D
#define LCCFB_REG_DEFAULT_VALUE 0x00
#define LCCFR_REG_ADDRESS 0x9E
#define LCCFR_REG_DEFAULT_VALUE 0x00
#define DBLC_Gb_REG_ADDRESS 0x9F
#define DBLC_Gb_REG_DEFAULT_VALUE 0x00
#define DBLC_Gr_REG_ADDRESS 0xA0
#define DBLC_Gr_REG_DEFAULT_VALUE 0x00
#define AECHM_REG_ADDRESS 0xA1
#define AECHM_REG_DEFAULT_VALUE 0x40
#define BD50ST_REG_ADDRESS 0xA2
#define BD50ST_REG_DEFAULT_VALUE 0x9D
#define BD60ST_REG_ADDRESS 0xA3
#define BD60ST_REG_DEFAULT_VALUE 0x83
#define COM25_REG_ADDRESS 0xA4
#define COM25_REG_DEFAULT_VALUE 0x00
#define G_GAIN_REG_ADDRESS 0xA6
#define G_GAIN_REG_DEFAULT_VALUE 0x80
#define VGA_ST_REG_ADDRESS 0xA7
#define VGA_ST_REG_DEFAULT_VALUE 0x14
/*============================================================================
CONSTANT DEFINITIONS
============================================================================*/
#define OV9650_I2C_ID 0x60 /* Camera image sensor slave address */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -