?? sensor_micron3m_mt9t111.c
字號:
/****************************************************************************
* FileName : sensor_micron3M_MT9T111.c
* Description :
****************************************************************************
*
* TCC Version 1.0
* Copyright (c) Telechips, Inc.
* ALL RIGHTS RESERVED
*
****************************************************************************/
#include "sensor_micron3M_MT9T111.h"
#include "cam_i2c.h"
#include "TCCSImageTask.h"
#include "lcd.h"
#include "uartcon.h"
#include "i2c.h"
//#define PREVIEW640
//#define USE96MHZ
#define USE48MHZ
#if defined(FEATURE_MICRON_3M_SOC)
/**********************************************************
*
* Function of
*
*
*
* Input :
* Output :
* Return :
*
* Description :
**********************************************************/
void Sensor_Capture(unsigned char ucOnOff)
{
if(ucOnOff == ON)
{
//[context B]
CAM_SEND_CMD( 0x098E, 0xEC05); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0000); // MCU_DATA_0
CAM_SEND_CMD( 0x098E, 0x8400); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0002); // MCU_DATA_0
//TC_TimeDly(120);
TC_TimeDly(120);
#if 0
CAM_SEND_CMD( 0x098E, 0x6C1B); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0008); // MCU_DATA_0
CAM_SEND_CMD( 0x098E, 0x6C27); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0007); // MCU_DATA_0
CAM_SEND_CMD( 0x098E, 0x6C60); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x13E0); // MCU_DATA_0
CAM_SEND_CMD( 0x098E, 0x8400); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0005); // MCU_DATA_0
//TC_TimeDly(400);
TC_TimeDly(100);
CAM_SEND_CMD( 0x098E, 0x8400); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0006); // MCU_DATA_0
//TC_TimeDly(400);
TC_TimeDly(100);
#endif
CAM_SEND_CMD (0x98E, 0x6C1B);
CAM_SEND_CMD (0x990, 0x0008);
CAM_SEND_CMD (0x98E, 0x6C27);
CAM_SEND_CMD (0x990, 0x0007);
CAM_SEND_CMD (0x98E, 0x6C5E);
CAM_SEND_CMD (0x990, 0x801F);
CAM_SEND_CMD (0x98E, 0x6C60);
CAM_SEND_CMD (0x990, 0x12E0);
CAM_SEND_CMD (0x98E, 0x8400);
CAM_SEND_CMD (0x990, 0x0006);
TC_TimeDly(150);
CAM_SEND_CMD (0x98E, 0x6C3F);
CAM_SEND_CMD (0x990, 0x00FF);
CAM_SEND_CMD (0x98E, 0x6C5E);
CAM_SEND_CMD (0x990, 0x801F);
CAM_SEND_CMD (0x98E, 0x6C60);
CAM_SEND_CMD (0x990, 0x12E0);
CAM_SEND_CMD (0x98E, 0x8400);
CAM_SEND_CMD (0x990, 0x0006);
TC_TimeDly(150);
}
else if(ucOnOff == OFF)
{
//[context A]
CAM_SEND_CMD( 0x098E, 0xEC05); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0005); // MCU_DATA_0
CAM_SEND_CMD( 0x098E, 0x8400); // MCU_ADDRESS
CAM_SEND_CMD( 0x0990, 0x0001); // MCU_DATA_0
//DELAY=300
//TC_TimeDly(120);
TC_TimeDly(120);
}
}
/**********************************************************
*
* Function of
*
*
*
* Input :
* Output :
* Return :
*
* Description :
**********************************************************/
void Sensor_SelectPreviewOrSnapshot(unsigned char ucType)
{
#if defined(_CAM_BD_1M3_SUB_VER_010_)
if(ucType == SNAPSHOT) // Camera Mode
{
CAM_SEND_CMD(CAM_PAGE_MAP_REG, 0x0001); // Page Map: Colorpipe address page
CAM_SEND_CMD(CAM_REDUCER_HORIZONTAL_ZOOM_A_REG, stCamCapabilityInfo.uiHorizontalSizeForSnapshot); // Reducer Horizontal Zoom = 1280 Context A
CAM_SEND_CMD(CAM_REDUCER_VERTICAL_ZOOM_A_REG, stCamCapabilityInfo.uiVerticalSizeForSnapshot); // Reducer Vertical Zoom = 1024 Context A
CAM_SEND_CMD(CAM_PAGE_MAP_REG, 0x0000); // Page Map: Sensor address page
CAM_SEND_CMD(CAM_ROW_START_REG, 0x000c); // Row Start
CAM_SEND_CMD(CAM_COLUMN_START_REG, 0x001e); // Column Start
CAM_SEND_CMD(CAM_WINDOW_HEIGHT_REG, stCamCapabilityInfo.uiVerticalSizeForSnapshot); // Window Height = 1280
CAM_SEND_CMD(CAM_WINDOW_WIDTH_REG, stCamCapabilityInfo.uiHorizontalSizeForSnapshot); // Window Width = 1024
CAM_SEND_CMD(CAM_HORIZONTAL_BLANKING_A_REG, stCamCapabilityInfo.usHorizontalBlankingForSnapshot); // Horizontal Blanking
CAM_SEND_CMD(CAM_VERTICAL_BLANKING_A_REG, stCamCapabilityInfo.usVerticalBlankingForSnapshot); // Vertical Blanking
CAM_SEND_CMD(CAM_GLOBAL_CONTEXT_CONTROL_REG, 0x0000); // context A
CAM_SEND_CMD(CAM_PAGE_MAP_REG, 0x0002); // Camera Control register
CAM_SEND_CMD(CAM_GLOBAL_CONTEXT_CONTROL_REG, 0x8000); // context A
}
else if(ucType == PREVIEW) // Camcorder Mode
{
CAM_SEND_CMD(CAM_PAGE_MAP_REG, 0x0001); // Page Map: Colorpipe address page
CAM_SEND_CMD(CAM_REDUCER_HORIZONTAL_ZOOM_A_REG, stCamCapabilityInfo.uiHorizontalSizeForPreview); // Reducer Horizontal Zoom = 640 Context A
CAM_SEND_CMD(CAM_REDUCER_VERTICAL_ZOOM_A_REG, stCamCapabilityInfo.uiVerticalSizeForPreview); // Reducer Vertical Zoom = 512 Context A
CAM_SEND_CMD(CAM_PAGE_MAP_REG, 0x0000); // Page Map: Sensor address page
CAM_SEND_CMD(CAM_ROW_START_REG, 0x014c); // Row Start
CAM_SEND_CMD(CAM_COLUMN_START_REG, 0x011e); // Column Start
CAM_SEND_CMD(CAM_WINDOW_HEIGHT_REG, stCamCapabilityInfo.uiVerticalSizeForPreview); // Window Height = 640
CAM_SEND_CMD(CAM_WINDOW_WIDTH_REG, stCamCapabilityInfo.uiHorizontalSizeForPreview); // Window Width = 512
CAM_SEND_CMD(CAM_HORIZONTAL_BLANKING_A_REG, stCamCapabilityInfo.usHorizontalBlankingForPreview); // Horizontal Blanking
CAM_SEND_CMD(CAM_VERTICAL_BLANKING_A_REG, stCamCapabilityInfo.usVerticalBlankingForPreview); // Vertical Blanking
CAM_SEND_CMD(CAM_GLOBAL_CONTEXT_CONTROL_REG, 0x0000); // context A
CAM_SEND_CMD(CAM_PAGE_MAP_REG, 0x0002); // Camera Control register
CAM_SEND_CMD(CAM_GLOBAL_CONTEXT_CONTROL_REG, 0x8000); // context A
}
#elif defined(_CAM_BD_2M0_SUB_VER_010_)
#if 1
if(ucType == SNAPSHOT) // Camera Mode
{
CAM_SEND_CMD(CAM_PAGE_REG, CAM_IFP_PAGE_1);
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2727); //MODE_CROP_X0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0000); //MODE_CROP_X0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2729); //MODE_CROP_X1_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0640); //MODE_CROP_X1_A = 1600
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x272B); //MODE_CROP_Y0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0000); //MODE_CROP_Y0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x272D); //MODE_CROP_Y1_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x04B0); //MODE_CROP_Y1_A = 1200
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2703); //MODE_OUTPUT_WIDTH_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0140*2); //MODE_OUTPUT_WIDTH_A = 320 * 2
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2705); //MODE_OUTPUT_HEIGHT_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x00F2*2); //MODE_OUTPUT_HEIGHT_A = 242 * 2
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0xA103); //SEQ_CMD
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0005); //SEQ_CMD
}
else if(ucType == PREVIEW_VIDEO) // Camcorder Mode
{
CAM_SEND_CMD(CAM_PAGE_REG, CAM_IFP_PAGE_1);
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2727); //MODE_CROP_X0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0000); //MODE_CROP_X0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2729); //MODE_CROP_X1_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0320); //MODE_CROP_X1_A = 800
// CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0640); //MODE_CROP_X1_A = 1600
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x272B); //MODE_CROP_Y0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0000); //MODE_CROP_Y0_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x272D); //MODE_CROP_Y1_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0258); //MODE_CROP_Y1_A = 600
// CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x04B0); //MODE_CROP_Y1_A = 1200
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2703); //MODE_OUTPUT_WIDTH_A
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0140); //MODE_OUTPUT_WIDTH_A = 320 * 2
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0x2705); //MODE_OUTPUT_HEIGHT_A
// CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x00F0); //MODE_OUTPUT_HEIGHT_A = 240 * 2
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x00F2); //MODE_OUTPUT_HEIGHT_A = 240 * 2
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_ADDRESS_REG, 0xA103); //SEQ_CMD
CAM_SEND_CMD(CAM_MICROCONTROLLER_VARIABLE_DATA_REG, 0x0005); //SEQ_CMD
}
#endif
#endif
}
/**********************************************************
*
* Function of
*
*
*
* Input :
* Output :
* Return :
*
* Description :
**********************************************************/
void Sensor_Resolution(unsigned int usResolution)
{
}
/**********************************************************
*
* Function of
*
*
*
* Input :
* Output :
* Return :
*
* Description :
**********************************************************/
void Sensor_CameraModuleInit(unsigned char ucPreviewMode)
{
/*---------------------------------------------------------
usCanUsedFunction
BIT[0] : Auto White Balance Control
BIT[1] : Auto Focus Control
BIT[2] : Auto Exposure Control
BIT[3] : Auto Flash Control
BIT[4] : Brightness Control
BIT[5] : Zoom Control
BIT[6] : Effect Control
BIT[7] : Sharpness Control
BIT[8] : ISO Control
BIT[9:15] : Reserved
- Is Supported : 1
- Not Supported : 0
---------------------------------------------------------*/
unsigned char ucSzDataBuff[4];
//[initial tab]
#ifdef USE48MHZ
int image_width, image_height;
if( ucPreviewMode == CAMCODER_PREVIEW )
{
image_width = 1024;
image_height = 768;
}
else if( ucPreviewMode == SNAPSHOT_PREVIEW )
{
image_width = 1024;
image_height = 768;
}
CAM_SEND_CMD(0x0100, 0x2000);// RESERVED_RX_SS_100
CAM_SEND_CMD(0x0116, 0x000A); // RESERVED_RX_SS_116
CAM_SEND_CMD(0x0016, 0x0667); // CLOCKS_CONTROL
TC_TimeDly(4);
CAM_SEND_CMD(0x0014, 0x8047); // PLL_CONTROL
CAM_SEND_CMD(0x0014, 0x8045); // PLL_CONTROL
//DELAY=10
TC_TimeDly(4);
CAM_SEND_CMD(0x0014, 0x2145); // PLL_CONTROL
CAM_SEND_CMD(0x0010, 0x0110); // PLL_DIVIDERS
CAM_SEND_CMD(0x0012, 0x0070); // PLL_P_DIVIDERS
CAM_SEND_CMD(0x002A, 0x77A8); // RESERVED_SYSCTL_2A
CAM_SEND_CMD(0x0014, 0x2545); // PLL_CONTROL
CAM_SEND_CMD(0x0014, 0x2547); // PLL_CONTROL
CAM_SEND_CMD(0x0014, 0x3447); // PLL_CONTROL
//DELAY=10
TC_TimeDly(4);
CAM_SEND_CMD(0x0014, 0x3047); // PLL_CONTROL
CAM_SEND_CMD(0x0014, 0x3046); // PLL_CONTROL
CAM_SEND_CMD(0x0022, 0x01E0);
CAM_SEND_CMD(0x001E, 0x0707); // PAD_SLEW_PAD_CONFIG
CAM_SEND_CMD(0x3084, 0x2409); // RESERVED_CORE_3084
CAM_SEND_CMD(0x3092, 0x0A49); // RESERVED_CORE_3092
CAM_SEND_CMD(0x3094, 0x4949); // RESERVED_CORE_3094
CAM_SEND_CMD(0x3096, 0x4949); // RESERVED_CORE_3096
CAM_SEND_CMD(0x0018, 0x4028); // STANDBY_CONTROL_AND_STATUS
CAM_SEND_CMD(0x0016, 0x0667); // CLOCKS_CONTROL
CAM_SEND_CMD(0x0026, 0x0000); // RESERVED_SYSCTL_26
CAM_SEND_CMD(0x001A, 0x0218); // RESET_AND_MISC_CONTROL
CAM_SEND_CMD(0x33F4, 0x000B); // KERNEL_CONFIG
CAM_SEND_CMD(0x3C50, 0x0001); // RESERVED_TX_SS_3C50
CAM_SEND_CMD(0x301A, 0x12CC); // RESERVED_CORE_301A
CAM_SEND_CMD(0x301C, 0x0100); // RESERVED_CORE_301C
CAM_SEND_CMD(0x3088, 0xFFFF); // RESERVED_CORE_3088
CAM_SEND_CMD(0x3172, 0x0003); // RESERVED_CORE_3172
CAM_SEND_CMD(0x316C, 0x0406); // RESERVED_CORE_316C
CAM_SEND_CMD(0x30FE, 0x4A38); // RESERVED_CORE_30FE
CAM_SEND_CMD(0x3100, 0x4738); // RESERVED_CORE_3100
CAM_SEND_CMD(0x3126, 0x00FF); // RESERVED_CORE_3126
//DELAY=500
//TC_TimeDly(200);
TC_TimeDly(100);
CAM_SEND_CMD(0x098E, 0xB839); // MCU_ADDRESS
CAM_SEND_CMD(0x0990, 0x0008); // MCU_DATA_0
CAM_SEND_CMD(0x098E, 0xAC02); // MCU_ADDRESS
CAM_SEND_CMD(0x0990, 0x0000); // MCU_DATA_0
//Lens Correction 10/17/07 11:16:24 90% with Rev2+ DOsteck 4P Lens
CAM_SEND_CMD (0x364A, 0x0050);
CAM_SEND_CMD (0x364C, 0xC72D);
CAM_SEND_CMD (0x364E, 0x11D2);
CAM_SEND_CMD (0x3650, 0xC86C);
CAM_SEND_CMD (0x3652, 0xFAF1);
CAM_SEND_CMD (0x368A, 0x3AEB);
CAM_SEND_CMD (0x368C, 0xB44D);
CAM_SEND_CMD (0x368E, 0x2CF0);
CAM_SEND_CMD (0x3690, 0x2AF0);
CAM_SEND_CMD (0x3692, 0xEE92);
CAM_SEND_CMD (0x36CA, 0x22B2);
CAM_SEND_CMD (0x36CC, 0xEFEE);
CAM_SEND_CMD (0x36CE, 0xA890);
CAM_SEND_CMD (0x36D0, 0x92CE);
CAM_SEND_CMD (0x36D2, 0x9975);
CAM_SEND_CMD (0x370A, 0xC48E);
CAM_SEND_CMD (0x370C, 0x676E);
CAM_SEND_CMD (0x370E, 0xCCB2);
CAM_SEND_CMD (0x3710, 0xDEB2);
CAM_SEND_CMD (0x3712, 0xFF92);
CAM_SEND_CMD (0x374A, 0xFCD0);
CAM_SEND_CMD (0x374C, 0xE4CF);
CAM_SEND_CMD (0x374E, 0xB896);
CAM_SEND_CMD (0x3750, 0x6292);
CAM_SEND_CMD (0x3752, 0x0959);
CAM_SEND_CMD (0x3640, 0x0350);
CAM_SEND_CMD (0x3642, 0xA26C);
CAM_SEND_CMD (0x3644, 0x7C91);
CAM_SEND_CMD (0x3646, 0x38E9);
CAM_SEND_CMD (0x3648, 0x8A52);
CAM_SEND_CMD (0x3680, 0x3FE9);
CAM_SEND_CMD (0x3682, 0x952D);
CAM_SEND_CMD (0x3684, 0x2A8F);
CAM_SEND_CMD (0x3686, 0x756F);
CAM_SEND_CMD (0x3688, 0xAAB2);
CAM_SEND_CMD (0x36C0, 0x0612);
CAM_SEND_CMD (0x36C2, 0xB44D);
CAM_SEND_CMD (0x36C4, 0xE812);
CAM_SEND_CMD (0x36C6, 0xA210);
CAM_SEND_CMD (0x36C8, 0xC9B3);
CAM_SEND_CMD (0x3700, 0xFE8D);
CAM_SEND_CMD (0x3702, 0x15D0);
CAM_SEND_CMD (0x3704, 0xA752);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -