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

📄 346reg.c

📁 用于需要Camera驱动场合的驱动的原代码.如手机,监控设备等
💻 C
📖 第 1 页 / 共 5 页
字号:
//	Bit[6]		->	Watch-Dog Timer Interrupt(0:措扁 1:辆丰)
//	Bit[7]		->	Still Image/Movie狼 Modem CPU肺 傈价肯丰惑怕 钎矫(0:措扁 1:肯丰)
//	Bit[8]		->	Still Image/Movie狼 Modem CPU肺狼 傈价惑怕 钎矫(0:OK 1:Error)
//	Bit[9]		->	reserved
//	Bit[10]		->	reserved
//	Bit[11]		->	Still/Movie Image狼 Decoding肯丰 惑怕 钎矫(0:措扁 1:肯丰)
//	Bit[12]		->	Still/Movie Image狼 Decoding惑怕 钎矫(0:OK 1:Error)
//	Bit[13]		->	reserved
//	Bit[14]		->	reserved
//	Bit[15]		->	BMP Save肯丰
//=======================================================================================
U16	CamCommandStatus(void)
{
	U16			data;
	ReadAsicCommand_Escape(CMSR, &data);
	return	data;
}

//=======================================================================================
//
//	Register Address:	0x06
//
//	Bit[0]		->	Sensor狼 Reset Pin狼 必己阑 钎矫
//	Bit[1]		->	Interrupt 巧狼 己拜阑 钎矫
//	Bit[5:2]	->	edge interrupt狼 版快 interrupt pin阑 clear矫虐绰单 吧府绰 clock辨捞
//	Bit[8]		->	Preview Interrupt狼 惯积 器牢飘甫 函券矫挪促.
//	Bit[9]		->	LCD Preview甫 力绢茄促.
//	Bit[10]		->	墨皋扼 悼累 吝 Video Buffer狼 康开阑 佬阑荐 乐绰 path甫 control茄促.
//
//=======================================================================================
void CamInterrupt_ResetMode(U16 polarity, U16 edgeOrfall, U16 clocknum, U16 point, U16 previewflag, U16 readflag)
{
	U16	value;
	value = (polarity) | (edgeOrfall << 1) | (clocknum << 2) | (point << 8) | (previewflag << 9) | (readflag << 10);
	WriteAsicCommand_Escape(IRMR, value);
}

//=======================================================================================
//
//	Register Address:	0x07
//
//	Bit[6:0]	->	X规氢 Thumbnail target size(default 0x28)
//	Bit[7]		->	reserved(default 0x0)
//	Bit[14:8]	->	y规氢 Thumbnail target size(default 0x1e)
//	Bit[15]		->	Thumbnail Support(1:support 0:not support)(default 0x01)
//
//	4 Pixel Unit
//=======================================================================================
void CamThumbnailControl(U16	XThumbsize, U16 YThumbsize, U16 onoffflag)
{
	U16 value;
	value = (XThumbsize/4) | ((YThumbsize/4) << 8) | (onoffflag << 15);
	WriteAsicCommand_Escape(THUMBC, value);
}

//=======================================================================================
//
//	Register Address: 0x08
//
//	MultiShot Mode俊辑父 狼固啊 乐娇.
//
//=======================================================================================
void CamSetStillImageNumber(U16 data)
{
	WriteAsicCommand_Escape(STINUM, data);
}

//=======================================================================================
//
//	Register Address: 0x09
//
//	Bit[6:0]		->		弥措 64M狼 康开阑 Access啊瓷窃.
//
//=======================================================================================
void CamUpperSRAMStartAddress(U16 Addr)
{
	U16			value;
	value = Addr & (0x7f);				//clear bit 7
	WriteAsicCommand_Escape(SRAMSU, Addr);
}

//=======================================================================================
//
//	Register Address: 0x0A
//
//=======================================================================================
void CamLowerSRAMStartAddress(U16 Addr)
{
	WriteAsicCommand_Escape(SRAMSL, Addr);
}

//=======================================================================================
//
//	Register Address: 0x0B
//
//	read矫俊绰 SRAM栏肺何磐 佬绢棵 蔼捞 咯扁俊 甸绢 乐栏哥, write矫俊绰 modem CPU啊
//	镜 单捞鸥甫 捞 饭瘤胶磐俊 静搁 等促.
//=======================================================================================
void CamReadSram(U16* ImageBuf, U32 endsize)
{
	long 	i=0;
	WriteAsic_Escape_Cmd(0x0b);
	for(i=0;i<endsize/2;i++) 
	{
		ReadAsic_Escape_Data(&ImageBuf[i]);
	}	
}

void CamWriteSram(U16 *ImageBuf, U32 size_word)
{
	long 	i=0;
	WriteAsic_Escape_Cmd(0x0b);
	for(i=0;i<size_word/2;i++) 
	{
		WriteAsic_Escape_Data(ImageBuf[i]);
	}	
}

//=======================================================================================
//
//	Register Address: 0x0C
//
//
//	Description:
//		捞 巧篮 modem CPU啊 漂沥 interrupt啊 惯积窍绰巴阑 盔摹 臼绰 版快俊 荤侩.
//		漂洒, Phone Booting矫俊 interrupt甫 葛滴 masking窍绊 酵篮 版快绰 葛电 厚飘甫
//		"1"肺 窍搁 等促.
//
//	Register 0x05甫 曼炼.
//=======================================================================================
void CamInterruptMask(U16	data)
{
	WriteAsicCommand_Escape(INTMSK, data);
}

//=======================================================================================
//
//	Register Address: 0x0D
//
//	Bit[9:0]	->	ms窜困 replay矫 frame埃狼 埃拜阑 炼沥.
//	Bit[10]		->	磊悼 馆汗 葛靛 On/Off
//	Bit[11]		->	RTC俊 悼扁甫 嘎苗 犁积茄促.
//=======================================================================================
void CamMovieReplayInterval(U16	replaytime, U16 repeatflag, U16	RTCFlag)
{
	U16			value;
	value = (replaytime) | (repeatflag << 10) | (RTCFlag << 11);
	WriteAsicCommand_Escape(MOVRINT, value);
}

//=======================================================================================
//
//	Register Address: 0x0E
//
//	MultiShot Command甫 焊郴扁傈俊 嘛阑 厘荐甫 急琶茄促.
//	VGA狼 版快绰 弥措 3厘, 唱赣瘤绰 9厘鳖瘤.
//
//=======================================================================================
void CamMultiShotImageCount(U16		num)
{
	WriteAsicCommand_Escape(MSHOTNUM, num);
}

//=======================================================================================
//
//	Register Address:	0x0F
//
//	Bit[5:0]	->	Frame Sample Interval
//	Bit[7:6]	->	reserved
//	Bit[8]		->	skipenableflag
//
//=======================================================================================
void CamFrameSamplingInterval(U16	interval, U16	flag)
{
	U16		value = (interval) | (flag << 8);
	WriteAsicCommand_Escape(FRMSINT, value);
}

//=======================================================================================
//
//	Register Address:	0x10
//
//	default : 0x0000
//=======================================================================================
void CamJPEGWindowStartAddress(U16	XAddr, U16	YAddr)
{
	U16			value;
	value = (XAddr/4) | ((YAddr/4) << 8);
	WriteAsicCommand_Escape(JPGWSADDR, value);
}

//=======================================================================================
//
//	Register Address:	0x11
//
//	default	: 0x78A0 (160 By 120)
//=======================================================================================
void CamJPEGWindowEndAddress(U16	XAddr, U16	YAddr)
{
	U16			value;
	value = (XAddr/4) | ((YAddr/4) << 8);
	WriteAsicCommand_Escape(JPEGWIDTH, value);
}

//=======================================================================================
//
//	Register Address:	0x12
//
//	default: 0x0014	(480 By 480)
//=======================================================================================
void CamDisplayStartAddress(U16	XAddr, U16	YAddr)
{
	U16		value;
	value = (XAddr/4) | ((YAddr/4) << 8);
	WriteAsicCommand_Escape(PRESADDR, value);
}

//=======================================================================================
//
//	Register Address:	0x13
//
//	default: 0x0x7878(120 By 120)
//=======================================================================================
void CamDisplayEndAddress(U16	XAddr, U16	YAddr)
{
	U16		value;
	value = (XAddr/4) | ((YAddr/4) << 8);
	WriteAsicCommand_Escape(PREWIDTH, value);
}

//=======================================================================================
//
//	Register Address:	0x14
//
//	default: 0x78a0	(4pixel窜困肺 历厘 啊瓷)(640 By 480)
//=======================================================================================
void CamJPEGTargetSize(U16	XSize, U16	YSize)
{
	U16			value;
	value = (XSize/4) | ((YSize/4) << 8);
	WriteAsicCommand_Escape(JPGTSIZ, value);
}

//=======================================================================================
//
//	Register Address:	0x15
//
//	default: 0x1e1e(4pixel窜困肺 历厘 啊瓷)(120 By 120)
//=======================================================================================
void CamPreviewTargetSize(U16	XSize, U16	YSize)
{
	U16		value;
	value = (XSize/4) | ((YSize/4) << 8);
	WriteAsicCommand_Escape(PRETSIZ, value);
}

void SetJPEGWindowSize(U16 XStart, U16 YStart, U16 XEnd, U16 YEnd, U16 XTarget, U16 YTarget)
{
	CamJPEGWindowStartAddress(XStart, YStart);
	CamJPEGWindowEndAddress(XEnd, YEnd);
	CamJPEGTargetSize(XTarget, YTarget);
}

void SetViewWindowSize(U16 XStart, U16 YStart, U16 XEnd, U16 YEnd, U16 XTarget, U16 YTarget)
{
	CamDisplayStartAddress(XStart, YStart);
	CamDisplayEndAddress(XEnd, YEnd);
	CamPreviewTargetSize(XTarget, YTarget);
}

//=======================================================================================
//
//	Register Address:	0x16
//
//	default: 0x18
//		蔼捞 努荐废 颇老 荤捞令绰 累酒瘤绊 拳龙篮 冻绢咙.
//
//======================================================================================= 
void CamJPEGQuantizationFactor(U16	scalefactor)
{
	WriteAsicCommand_Escape(JPGQFAC, scalefactor);
}

//=======================================================================================
//
//	Register Address:	0x17
//
//	default: 0x800e
//
//=======================================================================================
void CamABRCLimit(U16	lowlimit, U16	highlimit)
{
	U16		value;
	value = (lowlimit) | (highlimit << 8);
	WriteAsicCommand_Escape(ABRCLIM, value);
}

//=======================================================================================
//
//	Register Address:	0x18
//
//	Bit[1:0]	->	00:normal mode
//					01:overwrite mode
//					10:overlay mode
//	Bit[4:2]	->	000:墨皋扼 捞固瘤客 硅版阑 Exclusive OR
//					001:75% + 25%
//					010:50% + 50%
//					011:25% + 75%
//					100:100%硅版 捞固瘤
//	Bit[9:8]	->	PIP mode
//					00:Normal Mode
//					01:Overwrite Mode
//					10:Overlay Mode
//
//	default: 0x0000
//=======================================================================================
void CamOSDMode(U16	OSDmode, U16	option, U16  PIPmode)
{
	U16		value;
	value = (OSDmode) | (option << 2) | (PIPmode << 8);
	WriteAsicCommand_Escape(OSDMOD, value);
}

//=======================================================================================
//
//	Register Address:	0x19
//
//	overwrite mode俊辑 硅版措脚俊 墨皋扼 捞固瘤甫 display且巴阑 唱鸥郴绰 color code蔼
//
//	default: 0x001f(柳茄 颇尔祸)
//
//=======================================================================================
void CamChromaKey(U16	keyvalue)
{
	WriteAsicCommand_Escape(CHROMKEY, keyvalue);
}

//=======================================================================================
//
//	Register Address:	0x1A
//
//	LCD惑俊 preview登绰 拳搁狼 荐甫 钎矫
//
//=======================================================================================
U16	CamTimeStamp(void)
{
	U16		data;
	ReadAsicCommand_Escape(TIMESTMP, &data);
	return	data;
}

//=======================================================================================
//
//	Register Address:	0x1B
//
//	movie capture time阑 沥窍绰单 荤侩(窜困绰 檬)
//
//=======================================================================================
void CamMovieCaptureTime(U16 time)
{
	WriteAsicCommand_Escape(MOVCAPTM, time);
}

//=======================================================================================
//
//	Register Address:	0x1C
//
//	Bit[0]		->	Movie Capture Stop
//	Bit[1]		->	Movie 祈笼葛靛俊辑 荤侩且 start point甫 汲沥窍绊 酵阑锭
//	Bit[2]		->	Movie 祈笼葛靛俊辑 荤侩且 end point甫 汲沥窍绊 酵阑锭
//	Bit[3]		->	Movie 祈笼葛靛俊辑 荤侩且 start point甫 秒家窍绊  酵阑锭
//	Bit[4]		->	Movie 祈笼葛靛俊辑 荤侩且 end point甫 秒家窍绊 酵阑锭
//	Bit[5]		->	Movie犁积 肚绰 历厘阑 祈笼葛靛肺 窍绊磊 且锭 set茄促.
//=======================================================================================
void CamStopMovieCapture(U16	stopflag)
{
	WriteAsicCommand_Escape(STOPMOVCAP, stopflag);
}


//=======================================================================================
//
//	Register	Address: 0x1D
//
//	Bit[14:0]	->	time 1ms窜困
//	Bit[15]		->	enable flag
//
//	default: 0x0020
//=======================================================================================

⌨️ 快捷键说明

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