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

📄 346reg.c

📁 用于需要Camera驱动场合的驱动的原代码.如手机,监控设备等
💻 C
📖 第 1 页 / 共 5 页
字号:
/*************************************************************************/
/* FILE NAME :	346app.c             				 			         */
/* VERSION :	0.9                   									 */
/* DATE :		2003. 05. 13                                             */
/* DESCRIPTION                                                           */
/*     Basic Library Functions for CLC346                                */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/* FUNCTIONS : Basic Library Functions for CLC346 Register Handling.     */
/*             Refer to clc346i.h                                        */
/* DEPENDENCIES                                                          */
/*                                                                       */
/* Revision History :                                                    */
/*  2003.05.13 kbs : First Revised                                       */
/*                                                                       */
/*************************************************************************/
#include "portab_new.h"
#include "346reg.h"
#include "camconfig.h"

/*****************************************************/
/*                                                   */
/*        CLC346 CMD Register   Write/Read           */
/*                                                   */
/*****************************************************/

void WriteAsicCommand_Escape(U16 RegAddress, U16 RegData)
{
	U16		temp = 0;
	temp = (ESCAEXPADDR) << CPU16BITDATA;
	*(volatile U16*)(LCD_Base + temp) = RegAddress;
	temp = (ESCAEXPDATA) << CPU16BITDATA;
	*(volatile U16*)(LCD_Base + temp) = RegData;
}

void WriteAsic_Escape_Cmd(U16 RegAddress)
{
	U16	temp;

	temp = (ESCAEXPADDR) << CPU16BITDATA;
	*(volatile U16*)((LCD_Base) + temp) = RegAddress;
}

void WriteAsic_Escape_Data(U16 RegData)
{
	U16	temp;

	temp = (ESCAEXPDATA) << CPU16BITDATA;
	*(volatile U16*)((LCD_Base) + temp) = RegData;
}

void ReadAsicCommand_Escape(U16 RegAddress, U16 *RegData)
{
	U16		temp = 0;

	temp = (ESCAEXPADDR) << CPU16BITDATA;
	*(volatile U16*)(LCD_Base + temp) = RegAddress;
	temp = (ESCAEXPDATA) << CPU16BITDATA;
	*RegData = *(volatile U16*)(LCD_Base + temp);
}

void ReadAsic_Escape_Cmd(U16 RegAddress)
{
	U16		temp = 0;

	temp = (ESCAEXPADDR) << CPU16BITDATA;
	*(volatile U16*)(LCD_Base + temp) = RegAddress;
}

void ReadAsic_Escape_Data(U16 *RegData)
{
	U16		temp = 0;

	temp = (ESCAEXPDATA) << CPU16BITDATA;
	*RegData = *(volatile U16*)(LCD_Base + temp);
}

//=====================================================================================
//	Register Address:	0x00
//	Bit[0]		->	BMP Capture with LCD size in BMP
//	Bit[1]		->	Preview
//	Bit[2]		->	Still Capture
//	Bit[3]		->	Multi-shot Capture
//	Bit[4]		->	Movie Capture
//	Bit[5]		->	ASIC internal Buffer狼 still image甫 LCD俊 棵副版快
//	Bit[6]		->	ASIC internal Buffer狼 movie甫 LCD俊 棵副 版快
//	Bit[7]		->	Still image甫 迄狼 flash俊 历厘且版快
//	Bit[8]		->	Movie甫 迄狼 flash俊 历厘且版快
//	Bit[9]		->	flash俊 历厘等 still image甫 LCD俊 棵副版快
//	Bit[10]		->	flash俊 历厘等 movie甫 LCD俊 棵副版快
//	Bit[11]		->	OSD image甫 Capture with LCD size in JPEG
//	Bit[12]		->	泅犁 LCD惑狼 image甫 capture窍咯 jpeg肺 历厘
//	Bit[13]		->	JPEG甫 decoding茄饶 SRAM buffer俊 SIF 农扁肺 历厘
//	Bit[15]		->	SRAM加狼 YCbCr Data甫 jpeg肺 拘绵.
//=====================================================================================

//=====================================================================================
//=====================================================================================
void DoCameraOperation(U16 Function)
{
	WriteAsicCommand_Escape(OPMODE, Function);
}

//=====================================================================================
//		Current LCD Display Image Capture in BMP......
//
//
//	Register 0x00狼 Bit[0]阑 Set茄促. 
//		-. BMP Capture(泅犁 display登绊 乐绰 LCD农扁客 鞍篮 捞固瘤甫 BMP肺 历厘茄促.
//						Modem CPU啊 捞 Bit甫 set矫虐搁, ASIC篮 促澜 拳搁阑 皋葛府俊
//						历厘饶 捞 bit甫 clear矫虐绊, 促澜 拳搁阑 拌加利栏肺 display茄促.
//=====================================================================================
void CamCurrentLCDImageCaptureWithBMP(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x01);
}

//=====================================================================================
//		Image Display On......
//
//	Register 0x00狼 Bit[1]阑 Set茄促. 
//		-. Preview On(ASIC篮 LCD俊 image甫 display茄促.)
//
//=====================================================================================
void CamPreview_On(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x02);
}

//=====================================================================================
//		Image Display Off......
//
//	Register 0x00狼 Bit[1]阑 clear茄促. 
//		-. Preview On(ASIC篮 LCD俊 image甫 吝瘤茄促.)
//
//=====================================================================================
void CamPreview_Off(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x00);
}

//=====================================================================================
//		One Image Capture......
//
//	Register 0x00狼 Bit[2]阑 Set茄促. 
//		-. One Image Capture饶 ASIC篮 捞 Bit甫 Clear茄促.
//
//=====================================================================================
void CamStillImageCapture(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0004);	
}

//=====================================================================================
//		Multi-Shot Image Capture......
//
//	Register 0x00狼 Bit[3]阑 Set茄促. 
//		-. 楷荤狼 埃拜苞 概荐绰 Register甫 烹秦辑 汲沥 啊瓷.
//		-. ASIC篮 楷荤饶 捞 厚飘甫 努府绢 茄促.
//
//
//=====================================================================================
void CamMultiShotImageCapture(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0008);			//0000 0000 0000 1000
}

//=====================================================================================
//		Movie Capture......
//
//	Register 0x00狼 Bit[4]阑 Set茄促. 
//		-. Movie Capture客 包访等 Register甫 烹秦辑 汲沥 啊瓷.
//		-. ASIC篮 悼康惑 Capture饶 捞 厚飘甫 努府绢 茄促.
//=====================================================================================
void CamMovieCapture(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0010);			//0000 0000 0001 0000
}

//=====================================================================================
//		Still Image Display from ASIC internal Buffer......
//
//	Register 0x00狼 Bit[5]阑 Set茄促. 
//		-. ASIC狼 郴何俊 历厘登绢 乐绰 still image甫 LCD俊 棵妨辑 display茄促.
//		-. ASIC篮 decode窍咯 Display饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamSRAMStillImageView(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0020);		// 0000 0000 0010 0000	3.
}

//=====================================================================================
//		Movie Display from ASIC internal Buffer......
//
//	Register 0x00狼 Bit[6]阑 Set茄促. 
//		-. ASIC狼 郴何俊 历厘登绢 乐绰 悼康惑阑 LCD俊 棵妨辑 display茄促.
//		-. ASIC篮 decode窍咯 Display饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamSRAMMovieView(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0040);		//0000 0000 0100 0000
}

//=====================================================================================
//		Still Image Save......
//
//	Register 0x00狼 Bit[7]阑 Set茄促. 
//		-. ASIC狼 郴何俊 历厘登绢 乐绰 still image甫 迄狼 flash memory俊 历厘窍绊磊 窍绰 
//			版快.
//		-. ASIC篮 葛电 捞固瘤俊 措茄 傈价捞 场抄饶 牢磐反飘甫 烹秦辑 Modem CPU俊霸 舅赴促.
//
//=====================================================================================
void CamStillImageSave(void)		
{
	WriteAsicCommand_Escape(OPMODE, 0x0080);
}

//=====================================================================================
//		Movie Save......
//
//	Register 0x00狼 Bit[8]阑 Set茄促. 
//		-. ASIC狼 郴何俊 历厘登绢 乐绰 movie甫 迄狼 flash memory俊 历厘窍绊磊 窍绰 版快.
//		-. ASIC篮 葛电 捞固瘤俊 措茄 傈价捞 场抄饶 牢磐反飘甫 烹秦辑 Modem CPU俊霸 舅赴促.
//
//=====================================================================================
void CamMovieSave(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0100);		//0000 0001 0000 0000
}

//=====================================================================================
//		Still Image Display......
//
//	Register 0x00狼 Bit[9]阑 Set茄促. 
//		-. Modem CPU狼 flash memory俊 历厘登绢 乐绰 still image甫 LCD惑俊 display窍扁 困秦辑
//			ASIC狼 郴何 buffer肺 单捞鸥甫 颗扁绰 版快.
//			葛电 单捞鸥狼 傈价捞 场抄饶, Modem CPU啊 捞 厚飘甫 clear茄促.
//
//=====================================================================================
void CamStillImageDownload(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0200);		//0000 0010 0000 0000
}

//=====================================================================================
//		Movie Display......
//
//	Register 0x00狼 Bit[10]阑 Set茄促. 
//		-. Modem CPU狼 flash memory俊 历厘登绢 乐绰 movie甫 LCD惑俊 display窍扁 困秦辑
//			ASIC狼 郴何 buffer肺 单捞鸥甫 颗扁绰 版快.
//			葛电 单捞鸥狼 傈价捞 场抄饶, Modem CPU啊 捞 厚飘甫 clear茄促.
//
//=====================================================================================
void CamCaptureMovieDisplay(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0400);		//0000 0100 0000 0000
}

//=====================================================================================
//		Current LCD Display Image Capture in JPEG......
//
//	Register 0x00狼 Bit[11]阑 Set茄促. 
//		-. OSD 捞固瘤唱 泅犁 display登绊 乐绰 捞固瘤甫 LCD农扁 父怒 JPEG栏肺 拘绵茄促.
//		-. ASIC篮 Capture饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamCurrentLCDImageCapturewithJPEG(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x0800);		//0000 1000 0000 0000
}

//=====================================================================================
//		Current LCD Display Image Save in JPEG......
//
//	Register 0x00狼 Bit[12]阑 Set茄促. 
//		-. OSD 捞固瘤唱 泅犁 display登绊 乐绰 捞固瘤甫 JPEG栏肺 拘绵茄促.
//		-. ASIC篮 Capture饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamCurrentLCDImageSavewithJPEG(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x1000);		//0001 0000 0000 0000
}

//=====================================================================================
//		Jpeg Image decoding饶 SRAM Buffer俊 历厘......
//
//	Register 0x00狼 Bit[13]阑 Set茄促. 
//		-. OSD 捞固瘤唱 泅犁 display登绊 乐绰 捞固瘤甫 JPEG栏肺 拘绵茄促.
//		-. ASIC篮 Capture饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamImageSRAMSaveAfterJPEGDecoding(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x2000);		//0010 0000 0000 0000
}

//=====================================================================================
//		YCBCR Image Data in SRAM with JPEG Compression
//
//	Register 0x00狼 Bit[15]阑 Set茄促. 
//
//=====================================================================================
void CamYCBCRInSRAMJPEGCompression(void)
{
	WriteAsicCommand_Escape(OPMODE, 0x8000);		//1000 0000 0000 0000
}

//=======================================================================================
//	Register Address:	0x01
//	Bit[1:0]	->	reserved
//	Bit[4:2]	->	000:弊措肺 display
//					001:矫拌规氢栏肺 90档 雀傈
//					010:矫拌规氢栏肺 180档 雀傈
//					011:矫拌规氢栏肺 270档 雀傈
//					100: X绵栏肺 Flip
//					101: Y绵栏肺 Flip
//
//	FrameSkip Register俊 setting阑 窍扁甫 夸备窃.
//=======================================================================================
void CamPreviewImageRotation_Skip(U16 rotationflag)
{
	U16	value = (rotationflag << 2);
	WriteAsicCommand_Escape(PIRIS, value);
}

//=======================================================================================
//	Register Address:	0x02
//	Bit[7:0]	->	warm, cool, and fog汲沥俊 包访等 Parameter.
//	Bit[10:8]	->	000:normal
//					001:warm
//					010:cool
//					011:fog
//					100:negation
//					101:summation		;other register 0x6D, 0x6E, 0x6F曼炼
//					110:ANDing			;other register 0x6D, 0x6E, 0x6F曼炼
//					111:ORing			;other register 0x6D, 0x6E, 0x6F曼炼
//	Bit[11]		->	0:color
//					1:gray-scale 
//  Bit[12]		->  0:Color-Key蔼阑 炼例(弊措肺 荤侩)
//					1:Color-Key蔼阑 炼例(1/2肺 荤侩)
//	Bit[13]		->	0:image蔼阑 炼例(弊措肺 荤侩)
//					1:image蔼阑 炼例(1/2肺 荤侩)
//=======================================================================================
void CamImageEffect(U16 parameter, U16 effectmode, U16 color, U16 colorkey, U16 imagevalue)
{
	U16	value = (parameter) | (effectmode << 8) | (color << 11) | (colorkey << 12) | (imagevalue << 13);
	WriteAsicCommand_Escape(IMEFF, value);
}

//=======================================================================================
//	Register Address:	0x03(Upper)
//
//	Read Only Register
//		4 Byte Unit
//=======================================================================================
U16	CamJpegFileSizeUpper(void)
{
	U16	data;
	ReadAsicCommand_Escape(JPGFSH, &data);
	return	data;
}

//=======================================================================================
//	Register Address:	0x04(Lower)
//
//	Read Only Register
//		4 Byte Unit
//=======================================================================================
U16 CamJpegFileSizeLower(void)
{
	U16	data;
	ReadAsicCommand_Escape(JPGFSL, &data);
	return	data;
}

//=======================================================================================
//
//	Register Address:	0x05
//
//	Bit[0]		->	Modem CPU啊 LCD力绢甫 夸备窍绰 版快 啊瓷窃阑 钎矫
//	Bit[1]		->	JPEG/MJPEG殿 Capture狼 肯丰惑怕钎矫(0:措扁 1:肯丰)
//	Bit[2]		->	JPEG/MJPEG殿 Capture狼 惑怕钎矫(0:OK 1:Error)
//	Bit[3]		->	Multi-Shot俊辑 弥辆拳搁阑 力寇茄 唱赣瘤 拳搁惑怕 钎矫(0:措扁 1:肯丰)
//	Bit[4]		->	LCD俊辑 墨皋扼俊辑 Capture茄 康惑狼 Display甫 付模 版快(0:措扁 1:肯丰)
//	Bit[5]		->	Modem CPU啊 结霖 LCD Buffer狼 郴侩阑 盔窍绰 康开俊 Display(0:措扁 1:肯丰)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -