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

📄 346reg.c

📁 用于需要Camera驱动场合的驱动的原代码.如手机,监控设备等
💻 C
📖 第 1 页 / 共 5 页
字号:
void CamWatchDogTimer(U16 time, U16 onoffflag)
{
	U16		value;
	value = (time) | (onoffflag << 15);
	WriteAsicCommand_Escape(WDT, value);
}


//=======================================================================================
//
//	Register Address:	0x1E
//
//	Bit[6:0]	->	Target file size(default 0x30)
//	Bit[7]		->	ABRC On/Off(default 0x00)
//
//=======================================================================================
void CamAutomaticBitRateControl(U16 onoffflag, U16 filesize)
{
	U16		value = (filesize) | (onoffflag << 7);
	WriteAsicCommand_Escape(ABRC, value);
}

//=======================================================================================
//	Register Address:	0x20
//
//	Bit[0]		->		full-chip reset(Hardware Reset).
//	Bit[1]		->		Partially CLC346 chip reset.
//	Bit[2]		->		JPEG decoder康开吝 VLD/Parser何盒父阑 檬扁拳 矫挪促.
//
//=======================================================================================
void	CamSoftResetControl(U16	flag)
{
	WriteAsicCommand_Escape(SWRST, flag);
}

//=======================================================================================
//
//	Register Address:	0x21
//
//	Bit[2:0]		->		000:OmniVision VGA(OV7635)
//							001:Hynix VGA(HyCa3)
//							010:Sony VGA
//							011:Sanyo CIF
//
//=======================================================================================
U16 CamCISType(void)
{
	U16		data;
	ReadAsicCommand_Escape(CISTYPE, &data);
	return	data;
}

//=======================================================================================
//
//	Register Addrss:	0x22
//
//	Bit[6:0]	->	Sensor狼 IIC Device ID
//	Bit[7]		->	橇肺弊伐登绰 sensor甫 荤侩(default 1)
//
//=======================================================================================
void CamSensorIICID(U16	idvalue)
{
	U16		value = (0x80) | (idvalue);
	WriteAsicCommand_Escape(I2CID, value);
}

//=======================================================================================
//
//	Register Address:	0x23
//
//
//	Description: Clock寸 Sample rate甫 汲沥
//				0: 1 clock寸 sample
//				1: 2 clock寸 sample
//				2: 3 clock寸 sample
//
//	Sony & Sanyo绰 1肺 汲沥且巴.
//=======================================================================================
void CamInputPixelRatio(U16	ratio)
{
	WriteAsicCommand_Escape(IPR, ratio);
}

//=======================================================================================
//
//	Register Address:	0x24
//
//	Bit[0]		->		1:Sensor Power On
//						0:Sensor Power Off
//=======================================================================================
void CamSensorPowerSupply(U16 onoffflag)
{
	WriteAsicCommand_Escape(CISPWRC, onoffflag);
}

//=======================================================================================
//
//	Register Address:	0x25
//
//	Bit[1:0]		->		CIS Input Clock Frequency
//							00:24MHz 01:12MHz 10:6MHz 11:3MHz
//
//	Bit[2]			->		1:困惑 馆傈 0:弊措肺 荤侩
//
//=======================================================================================
void CamInputClockControl(U16 frequency, U16 topology)
{
	U16	value = (frequency) | (topology << 2);
	WriteAsicCommand_Escape(CISICC, value);
}

//=======================================================================================
//
//	Register Address:	0x26
//
//	Bit[6:0]	->	delay矫懦 矫埃阑 唱鸥晨.
//	Bit[7]		->	1捞搁 falling edge甫 第肺 delay矫挪促.
//
//=======================================================================================
void CamVsyncDelayControl(U16 delaytype, U16 delaytime)
{
	U16	value = (delaytime) | (delaytype << 7);
	WriteAsicCommand_Escape(VSYNCD, value);
}

//=======================================================================================
//
//	Register Address:	0x27
//
//	Sony狼 版快父 1肺 set茄促.
//
//=======================================================================================
void CamIICClockDirectionRegister(U16 dirflag)
{
	WriteAsicCommand_Escape(IICCLKDIR, dirflag);
}

//========================================================================================
//
//	Register Address:	0x28
//
//	Bit[0]		->		IIC滚胶甫 烹秦 竣技胶窍绊磊窍绰 单捞鸥 官捞飘 荐
//						0: 1byte	1: 2byte
//	Bit[1]		->		IIC滚胶甫 烹秦 竣技胶窍绊磊窍绰 绢靛饭胶 官捞飘 荐
//						0: 1byte	1: 2byte
//	Bit[2]		->		R/W Control 
//						1: read		0: write
//
//=======================================================================================
void CamSensorAccessControl(U16 bytes, U16 address, U16	rwflag)
{
	U16	value = (bytes) | (address << 1) | (rwflag << 2);
	WriteAsicCommand_Escape(CISACCE, value);
}

//=======================================================================================
//
//	Register Address:	0x29
//
//=======================================================================================
void CamSensorAccessAddressPointer(U16 Addr)
{
	WriteAsicCommand_Escape(CISACCEADDR, Addr);
}

//=======================================================================================
//
//	Register Address:	0x2A
//
//=======================================================================================
void CamSensorAccessDataPointer(U16	Data)
{
	WriteAsicCommand_Escape(CISACCEDATA, Data);
}

//=======================================================================================
//
//	Register Address:	0x2B
//
//	Bit[0]		->		1:	1->valid data 0->blank duration			(Sony, Sanyo)
//						0:  1->new frame start 0->valid data		(Hynix, Omnivision)
//
//	Bit[1]		->		1:	VSYNC甫 郴何利栏肺 促矫 惯积
//						0:	VSYNC甫 弊措肺 荤侩
//
//	Recommand:
//		OmniVision, Hynix->0x0000
//		Sony, Sanyo->0x0003
//
//=======================================================================================
void CamVsyncShapeRegister(U16 validflag, U16 vsyncsel)
{
	U16	value = (validflag) | (vsyncsel << 1);
	WriteAsicCommand_Escape(VSYNCS, value);
}

//=======================================================================================
//
//	Register Address:	0x2C
//
//	Bit[0]	->	1(Modem CPU啊 LCD力绢甫 夸备), 0(沥惑)
//				preview矫 Modem CPU啊 LCD狼 力绢甫 爱绊 酵阑 版快.
//	Bit[1]	->	1(ASIC篮 LCD甫 檬扁拳茄促)
//
//=======================================================================================
void CamLCDControlFlag(U16 controlflag1, U16 controlflag2)
{
	U16	value = (controlflag1) | (controlflag2 << 1);
	WriteAsicCommand_Escape(LCDCON, value);
}

//=======================================================================================
//
//	Register Address:	0x2D
//
//	Bit[0]		->	Strobe light瘤盔阑 enable.
//	Bit[1]		->	Strobe enable pin狼 必己阑 搬沥
//	Bit[9:2]	->	Strobe enable pin狼 active扁埃阑 搬沥.
//
//=======================================================================================
void CamStrobeControlRegister(U16 onoffflag, U16 polarity, U16 duration)
{
	U16	value = (onoffflag) | (polarity << 1) | (duration << 2);
	WriteAsicCommand_Escape(STROBC, value);
}

//=======================================================================================
//
//	Register Address:	0x2E
//
//	Bit[2:0]	->	GPIO Pin狼 规氢阑 搬沥(1:input 0:output)
//	Bit[3]		->	reserved
//	Bit[6:4]	->	GPIO Pin狼 enable flag
//
//=======================================================================================
void CamGPIOPinConfiguration(U16 inoutflag, U16 enableflag)
{
	U16	value = (inoutflag) | (enableflag << 4);
	WriteAsicCommand_Escape(GPIOCONFIG, value);
}

//=======================================================================================
//
//	Register Address:	0x2F
//
//	Bit[2:0]	->	阿 GPIO Pin狼 惑怕甫 唱鸥辰促.
//
//=======================================================================================
U16	CamGPIOPinStatus(void)
{
	U16		data;
	ReadAsicCommand_Escape(GPIOSTA, &data);
	return	data;
}

//=======================================================================================
//
//	Register Address:	0x30
//
///======================================================================================
void CamMainLCDDisplayX_StartAddress(U16 Addr)
{
	WriteAsicCommand_Escape(MLCDXSTADDR, Addr);
}

//=======================================================================================
//
//	Register Address:	0x31
//
//=======================================================================================
void CamMainLCDDisplayY_StartAddress(U16 Addr)
{
	WriteAsicCommand_Escape(MLCDYSTADDR, Addr);
}

//=======================================================================================
//
//	Register Address:	0x32
//
//=======================================================================================
void CamMainLCDDisplayX_EndAddress(U16 Addr)
{
	WriteAsicCommand_Escape(MLCDXENDADDR, Addr);
}

//=======================================================================================
//
//	Register Address:	0x33
//
//=======================================================================================
void CamMainLCDDisplayY_EndAddress(U16 Addr)
{
	WriteAsicCommand_Escape(MLCDYENDADDR, Addr);
}

//=======================================================================================
//
//	Register Address: 0x34
//
//=======================================================================================
void CamSubLCDDisplayX_StartAddress(U16	Addr)
{
	WriteAsicCommand_Escape(SLCDXSTAADDR, Addr);
}

void MainLCDDisplayRegion(U16 Xstart, U16 Ystart, U16 Xend, U16 Yend)
{
	////Set Main LCD Dispaly Area
	CamMainLCDDisplayX_StartAddress(Xstart);
	CamMainLCDDisplayY_StartAddress(Ystart);
	CamMainLCDDisplayX_EndAddress(Xend);	
	CamMainLCDDisplayY_EndAddress(Yend);
}

//=======================================================================================
//
//	Register Address: 0x35
//
//=======================================================================================
void CamSubLCDDisplayY_StartAddress(U16	Addr)
{
	WriteAsicCommand_Escape(SLCDYSTAADDR, Addr);
}


//=======================================================================================
//
//	Register Address: 0x36
//
//=======================================================================================
void CamSubLCDDisplayX_EndAddress(U16 Addr)
{
	WriteAsicCommand_Escape(SLCDXENDADDR, Addr);
}

//=======================================================================================
//
//	Register Address: 0x37
//
//=======================================================================================
void CamSubLCDDisplayY_EndAddress(U16 Addr)
{
	WriteAsicCommand_Escape(SLCDYENDADDR, Addr);
}

//=======================================================================================
//
//	Register Address: 0x38
//
//	Bit[1:0]	->	Bit[1:0] Data Bus Width
//							00:8bit data bus
//							01:16bit data bus
//							10:18bit data bus
//	Bit[4:2]	->	瘤盔窍绰 拿矾荐
//							000:B/W
//							001:4-Gray
//							010:256 color
//							011:4K color
//							100:65K color
//							101:260K color
//	Bit[5]		->	RGB order
//					0 = R+G+B, 1 = B+G+R
//	Bit[6]		->	RGB Data俊 措茄 align 规侥
//					0:left-align
//					1:right-align
//	Bit[8:7]	->	Write low period(cycle荐)
//					0:0cycle
//					n:n+1cycle
//	Bit[10:9]	->	Write high period(cycle荐)
//					0:1cycle
//					n:n+1cycle
//	Bit[12:11]	->	Read cycle狼 low period(cycle荐)
//					0:1cycle
//					n:n+1cycle
//	Bit[14:13]	->	Read cycle狼 high period(cycle荐)
//					0:1cycle
//					n=n+1cycle
//
//=======================================================================================
void CamMainLCDType1(U16 set)
{
	WriteAsicCommand_Escape(MLCDTYPE1, set);
}

//=======================================================================================
//
//	Register Address: 0x39
//
//	Bit[2:0]	->	瘤沥等 拿矾客 滚胶 气 荤捞狼 包拌甫 搬沥.

⌨️ 快捷键说明

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