⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sensor_micron3m_mt9t111.c

📁 Module is Sensor ov creation !
💻 C
📖 第 1 页 / 共 5 页
字号:
/****************************************************************************
 *   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 + -