亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? image_sensor.c

?? MTK平臺 OV7680 sensor yuv 驅動代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *   image_sensor.c
 *
 * Project:
 * --------
 *   Maui_sw
 *
 * Description:
 * ------------
 *   Image sensor driver function
 *
 ****************************************************************************/
#include "drv_comm.h"
#include "IntrCtrl.h"
#include "reg_base.h"
#include "gpio_sw.h"
#include "sccb.h"
#include "isp_if.h"
#include "image_sensor.h"
#include "camera_para.h"
#include "upll_ctrl.h"
#include "med_api.h"


/* Global Valuable */
SensorInfo g_CCT_MainSensor = OV7660_OMNIVISION;

#if defined(SENSOR_ROTATE_0)
kal_uint8 g_CCT_FirstGrabColor = BAYER_R;
#else 
kal_uint8 g_CCT_FirstGrabColor = BAYER_Gb;
#endif 
kal_uint8 start_grab_x_offset = 0, start_grab_y_offset = 0;
kal_bool gVGAmode = KAL_TRUE, sensor_night_mode = KAL_FALSE, MPEG4_encode_mode = KAL_FALSE, g_bMJPEG_mode = KAL_FALSE;
kal_uint8 normal_gain = 0, night_gain = SENSOR_NIGHT_MODE_GAIN;
kal_uint8 preview_pclk_division = 0, capture_pclk_division = 0;
kal_uint16 dummy_pixels = 0, dummy_lines = 0, extra_exposure_lines = 0;
kal_uint16 exposure_lines = 0;
kal_uint16 sensor_global_gain = BASEGAIN, sensor_gain_base = 0x0;

/* Debug Message, Don't Care */
kal_uint16 sensor_frame_rate;

/* MAX/MIN Explosure Lines Used By AE Algorithm */
kal_uint16 MAX_EXPOSURE_LINES = (PIXEL_CLK / MIN_FRAME_RATE) / VGA_PERIOD_PIXEL_NUMS;
kal_uint8 MIN_EXPOSURE_LINES = 2;

/* Parameter For Engineer mode function */
kal_uint32 FAC_SENSOR_REG;

/* Image Sensor ID */
kal_uint16 sensor_id = 0;

kal_bool sensor_cap_state = KAL_FALSE;

#ifndef HW_SCCB


/*****************************************************************************
 * FUNCTION
 *  SCCB_send_byte
 * DESCRIPTION
 *  
 * PARAMETERS
 *  send_byte       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void SCCB_send_byte(kal_uint8 send_byte)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    volatile signed char i;
    volatile kal_uint32 j;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 7; i >= 0; i--)
    {   /* data bit 7~0 */
        if (send_byte & (1 << i))
        {
            SET_SCCB_DATA_HIGH;
        }
        else
        {
            SET_SCCB_DATA_LOW;
        }
        for (j = 0; j < SENSOR_I2C_DELAY; j++);
        SET_SCCB_CLK_HIGH;
        for (j = 0; j < SENSOR_I2C_DELAY; j++);
        SET_SCCB_CLK_LOW;
        for (j = 0; j < SENSOR_I2C_DELAY; j++);
    }
    /* don't care bit, 9th bit */
    SET_SCCB_DATA_LOW;
    SET_SCCB_DATA_INPUT;
    SET_SCCB_CLK_HIGH;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SET_SCCB_CLK_LOW;
    SET_SCCB_DATA_OUTPUT;
}   /* SCCB_send_byte() */


/*****************************************************************************
 * FUNCTION
 *  SCCB_get_byte
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_uint8 SCCB_get_byte(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    volatile signed char i;
    volatile kal_uint32 j;
    kal_uint8 get_byte = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    SET_SCCB_DATA_INPUT;

    for (i = 7; i >= 0; i--)
    {   /* data bit 7~0 */
        SET_SCCB_CLK_HIGH;
        for (j = 0; j < SENSOR_I2C_DELAY; j++);
        if (GET_SCCB_DATA_BIT)
            get_byte |= (1 << i);
        for (j = 0; j < SENSOR_I2C_DELAY; j++);
        SET_SCCB_CLK_LOW;
        for (j = 0; j < SENSOR_I2C_DELAY; j++);
    }
    /* don't care bit, 9th bit */
    SET_SCCB_DATA_OUTPUT;
    SET_SCCB_DATA_HIGH;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SET_SCCB_CLK_HIGH;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SET_SCCB_CLK_LOW;

    return get_byte;
}   /* SCCB_get_byte() */

#endif /* HW_SCCB */ 


/*****************************************************************************
 * FUNCTION
 *  write_cmos_sensor
 * DESCRIPTION
 *  
 * PARAMETERS
 *  addr        [IN]        
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void write_cmos_sensor(kal_uint32 addr, kal_uint32 para)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    volatile kal_uint32 j;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef HW_SCCB
    SET_SCCB_DATA_LENGTH(3);
    ENABLE_SCCB;
    REG_SCCB_DATA = OV76X0_WRITE_ID | SCCB_DATA_REG_ID_ADDRESS;
    REG_SCCB_DATA = addr;
    REG_SCCB_DATA = para;
    while (SCCB_IS_WRITTING)
    {
    };
#else /* HW_SCCB */ 
    I2C_START_TRANSMISSION;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SCCB_send_byte(OV76X0_WRITE_ID);
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SCCB_send_byte(addr);
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SCCB_send_byte(para);
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    I2C_STOP_TRANSMISSION;
#endif /* HW_SCCB */ 
}   /* write_cmos_sensor() */


/*****************************************************************************
 * FUNCTION
 *  read_cmos_sensor
 * DESCRIPTION
 *  
 * PARAMETERS
 *  addr        [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_uint32 read_cmos_sensor(kal_uint32 addr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    volatile kal_uint32 j;
    kal_uint8 get_byte = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef HW_SCCB
    SET_SCCB_DATA_LENGTH(2);
    ENABLE_SCCB;
    REG_SCCB_DATA = OV76X0_WRITE_ID | SCCB_DATA_REG_ID_ADDRESS;
    REG_SCCB_DATA = addr;
    while (SCCB_IS_WRITTING)
    {
    };
    ENABLE_SCCB;
    REG_SCCB_DATA = OV76X0_READ_ID | SCCB_DATA_REG_ID_ADDRESS;
    REG_SCCB_DATA = 0;
    while (SCCB_IS_READING)
    {
    };
    get_byte = REG_SCCB_READ_DATA & 0xFF;
#else /* HW_SCCB */ 
    I2C_START_TRANSMISSION;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SCCB_send_byte(OV76X0_WRITE_ID);
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SCCB_send_byte(addr);
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    I2C_STOP_TRANSMISSION;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    I2C_START_TRANSMISSION;
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    SCCB_send_byte(OV76X0_READ_ID);
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    get_byte = SCCB_get_byte();
    for (j = 0; j < SENSOR_I2C_DELAY; j++);
    I2C_STOP_TRANSMISSION;
#endif /* HW_SCCB */ 

    return get_byte;
}   /* read_cmos_sensor() */


/*****************************************************************************
 * FUNCTION
 *  write_OV7680_shutter
 * DESCRIPTION
 *  
 * PARAMETERS
 *  shutter     [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void write_OV7680_shutter(kal_uint16 shutter)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    write_cmos_sensor(0x10, shutter & 0xFF);
    write_cmos_sensor(0x0f, shutter >> 8);
}   /* write_OV7680_shutter */


/*****************************************************************************
 * FUNCTION
 *  read_OV7680_shutter
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_uint16 read_OV7680_shutter(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    exposure_lines = (read_cmos_sensor(0x0f) << 8) | read_cmos_sensor(0x10);

    return exposure_lines;
}   /* read_OV7680_shutter */


/*****************************************************************************
 * FUNCTION
 *  write_OV7680_gain
 * DESCRIPTION
 *  
 * PARAMETERS
 *  gain        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void write_OV7680_gain(kal_uint16 gain)
{
}   /* write_OV7680_gain */


/*****************************************************************************
 * FUNCTION
 *  read_OV7680_gain
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_uint16 read_OV7680_gain(void)
{
    return BASEGAIN;
}   /* read_OV7680_gain */


/*****************************************************************************
 * FUNCTION
 *  set_OV7680_dummy
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pixels      [IN]        
 *  lines       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void set_OV7680_dummy(kal_uint16 pixels, kal_uint16 lines)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint16 temp;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    temp = read_cmos_sensor(0x2A);
    pixels += ((0xB0 & 0x70) << 4) | 0x0B;

    write_cmos_sensor(0x2B, pixels & 0xFF);
    write_cmos_sensor(0x2C, lines & 0xFF);
    write_cmos_sensor(0x2A, ((pixels >> 4) & 0x70) | ((lines >> 8) & 0x0F) | (temp & 0x80));
}   /* set_OV7680_dummy */

typedef struct
{
    kal_uint8 addr;
    kal_uint8 value;
}
sensor_reg;

sensor_reg OV7680_Init_Reg[103] = 
{
    {0x14, 0xc2},
    {0x63, 0x0b},
    {0x64, 0x01},
    {0x65, 0x0c},
    {0x12, 0x01},
    {0x0c, 0x06},
    {0x82, 0x9a},
    {0x22, 0x40},
    {0x23, 0x20},
    {0x31, 0x11},
    {0x40, 0x10},
    {0x4a, 0x42},
    {0x4b, 0x64},
    {0x67, 0x50},
    {0x6b, 0x00},
    {0x6c, 0x00},
    {0x6d, 0x00},
    {0x6e, 0x00},
    {0x42, 0x4a},
    {0x45, 0x40},
    {0x3f, 0x46},
    {0x48, 0x20},
    {0x65, 0x8c},
    {0x66, 0x02},
    {0x67, 0x5c},
    {0x12, 0x00},
    {0x0c, 0x16},
    {0x82, 0x9c},

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区亚洲人成毛片| 日韩精品五月天| 天天免费综合色| 国产麻豆视频精品| 欧美午夜精品免费| 国产性天天综合网| 日韩在线一区二区| 在线观看成人免费视频| 国产精品久久久久影视| 精品一区二区三区欧美| 在线播放91灌醉迷j高跟美女 | 在线综合视频播放| 亚洲伦理在线精品| 国产成人在线影院| 久久综合成人精品亚洲另类欧美| 亚洲chinese男男1069| 99精品一区二区| 国产精品天天看| 国内精品第一页| 亚洲精品一区二区三区蜜桃下载| 天堂一区二区在线| 欧美三级日韩在线| 亚洲一区在线观看网站| 色婷婷精品大在线视频| 国产精品国产三级国产普通话99| 国产91丝袜在线播放0| 精品精品国产高清a毛片牛牛 | 亚洲视频网在线直播| 成人激情动漫在线观看| 国产欧美日韩综合精品一区二区| 国产一区二区剧情av在线| 精品久久99ma| 精品综合免费视频观看| 日韩免费观看2025年上映的电影| 日日摸夜夜添夜夜添亚洲女人| 884aa四虎影成人精品一区| 亚洲图片欧美一区| 欧美精品久久久久久久久老牛影院 | 亚洲欧美中日韩| fc2成人免费人成在线观看播放| 国产亚洲精品免费| 国产91精品久久久久久久网曝门| 久久久久久久久久久黄色| 国产成人免费视频网站高清观看视频 | 国产日韩欧美激情| 成人污视频在线观看| 国产精品三级av在线播放| 一本到三区不卡视频| 亚洲一区二区三区不卡国产欧美| 4hu四虎永久在线影院成人| 日本强好片久久久久久aaa| 91精品蜜臀在线一区尤物| 精品一二三四在线| 国产视频一区二区在线| av不卡在线观看| 亚洲激情六月丁香| 欧美精品xxxxbbbb| 久久99精品久久久久久动态图 | 国产日产欧美一区二区视频| 91麻豆国产福利在线观看| 亚洲色图欧洲色图婷婷| 欧美日本在线看| 国产麻豆精品久久一二三| 亚洲靠逼com| 在线成人av影院| 国产99久久久国产精品潘金网站| 亚洲女人的天堂| 日韩欧美一区二区在线视频| 成人伦理片在线| 婷婷久久综合九色国产成人| 国产视频一区在线播放| 欧美精品在线视频| 99久久777色| 韩国成人精品a∨在线观看| 亚洲黄色录像片| 久久久久久久久久电影| 欧美日韩一区三区| 成人高清免费在线播放| 美女视频一区二区三区| 亚洲久本草在线中文字幕| 久久综合久久综合亚洲| 欧美日韩国产系列| 色综合av在线| 国产乱码字幕精品高清av| 午夜精品久久久久久久99水蜜桃 | 亚洲电影一区二区| 国产精品久久久久久亚洲伦| 日韩欧美一区二区免费| 欧美色图在线观看| 9人人澡人人爽人人精品| 激情综合五月婷婷| 日韩激情中文字幕| 一区二区三区四区国产精品| 国产欧美日本一区视频| 日韩亚洲电影在线| 欧美精品在线视频| 欧美色综合天天久久综合精品| 国产成人无遮挡在线视频| 久久精品99久久久| 日韩精彩视频在线观看| 亚洲gay无套男同| 午夜精品福利一区二区蜜股av| 最新不卡av在线| 最新国产成人在线观看| 亚洲国产高清aⅴ视频| 久久久久99精品国产片| 精品黑人一区二区三区久久| 日韩美女视频在线| 精品日韩成人av| 欧美精品一区二区三区很污很色的 | 国产亚洲精品aa午夜观看| 久久综合色综合88| 久久先锋资源网| 久久精品视频一区| 国产日韩精品一区二区三区在线| 精品国产乱码久久久久久老虎| 欧美不卡在线视频| 精品国产乱码久久久久久老虎| 欧美一区二区三级| 日韩欧美国产电影| 国产亚洲va综合人人澡精品| 久久久亚洲高清| 国产蜜臀97一区二区三区| 国产精品乱子久久久久| 亚洲欧洲三级电影| 亚洲码国产岛国毛片在线| 国产精品人妖ts系列视频| 亚洲国产精品av| 一个色在线综合| 性做久久久久久久免费看| 蜜臀久久99精品久久久画质超高清 | eeuss鲁片一区二区三区在线观看| 国产成人欧美日韩在线电影| 成人av网站在线| 色婷婷综合久久| 在线不卡中文字幕| 国产色产综合色产在线视频| 亚洲色图欧洲色图婷婷| 日韩电影一区二区三区四区| 久久不见久久见免费视频7 | 久久精品国产一区二区| 国产精品中文字幕日韩精品| 91丝袜呻吟高潮美腿白嫩在线观看| 在线一区二区三区做爰视频网站| 欧美精品欧美精品系列| 国产视频一区在线观看| 亚洲香蕉伊在人在线观| 国产一区二区网址| 色婷婷久久久综合中文字幕| 日韩美女视频一区二区在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲三级免费电影| 免费在线视频一区| gogo大胆日本视频一区| 日韩欧美123| 亚洲精品国产a| 国精产品一区一区三区mba视频| 粉嫩绯色av一区二区在线观看| 欧美揉bbbbb揉bbbbb| 久久精品一级爱片| 午夜精品aaa| 91在线一区二区| 精品国产免费一区二区三区四区| 自拍偷自拍亚洲精品播放| 美日韩黄色大片| 欧洲人成人精品| 国产精品另类一区| 久久精品国产亚洲一区二区三区| 99久久久久免费精品国产| 日韩欧美中文字幕制服| 一区二区三区加勒比av| 国产91对白在线观看九色| 91精品国产品国语在线不卡| 亚洲乱码日产精品bd| 国产成人亚洲精品青草天美| 日韩美女在线视频| 午夜精品久久久久久久99水蜜桃 | 日韩一级片在线观看| 一区二区在线看| 成人久久18免费网站麻豆| 欧美一三区三区四区免费在线看| 一区二区三区日韩在线观看| 成人av网站在线| 国产精品丝袜久久久久久app| 久草这里只有精品视频| 51久久夜色精品国产麻豆| 亚洲午夜在线观看视频在线| 91麻豆免费看| 亚洲三级在线播放| 91免费视频网址| 亚洲欧洲性图库| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 午夜精品久久久久久久久| 欧美影院一区二区| 亚洲精品乱码久久久久久久久 | 精品国产91乱码一区二区三区 | 亚洲午夜激情av| 在线观看日韩精品| 亚洲一区二区三区视频在线| 色欧美乱欧美15图片|