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

📄 tvp5146.c

📁 IT projecotr reference design.
💻 C
📖 第 1 页 / 共 4 页
字号:
	
	
	WorkUint08[0] = OUTPUT_FRMATER2;
	WorkUint08[1] = 0x11;			// Y[9:0] Active, Dataclock Falling edge, Enable Clock
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_DisableOutput
//
//@Description :: Disable output
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_DisableOutput(void)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	
	WorkUint08[0] = OUTPUT_FRMATER2;
	WorkUint08[1] = 0x01;			// Disable Y[9:0], Dataclock Falling edge, Enable Clock
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetOutputEnable
//
//@Description :: Get output enable status
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetOutputEnable(  BOOL *enable)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten, numRead;
	
	
	WorkUint08[0] = OUTPUT_FRMATER2;
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16)i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS)
		*enable = (BOOL)((WorkUint08[1] & (uint08)0x10) != (uint08)0);
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetStandard
//
//@Description :: Get Video Standard
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	VideoStdType standard	:	Video Standard code
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetStandard(  VideoStdTypeEnum *standard)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numRead, numWritten;
	
	
	WorkUint08[0] = VIDEO_STDARD_STATUS;
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16)i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS)
	{
	    switch (WorkUint08[1] & 0x07)
		{
			case 1:
				*standard = NTSC;
				break;
			
			case 2:
    			*standard = PAL;
				break;
			
			case 3:
				*standard = PALM;
				break;
			
			case 4:
				*standard = PALN;
				break;
			
			case 5:
				*standard = NTSC443;
				break;
			
			case 6:
			    *standard = SECAM;
				break;
				
			case 7:
			    *standard = PAL60;
			    break;
			
			case 0:
			default:
				RetVal = FAIL;
				break;
		};
	}
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetStandardDetected
//
//@Description :: Get Video Standard Detected
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	VideoStdType standard	:	Video Standard code
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetStandardDetected(  VideoStdTypeEnum* standard)
{
	return DEC_GetStandard(standard);
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_EnableAutoStandard
//
//@Description :: Enable Auto Switch
//
//@Parameter   ::
//	int08 i2c_addr	:	I2C Device Address
//	VideoStdType standard	:	Video Standard
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_EnableAutoStandard(  AutoStandardSetupType std)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	
	WorkUint08[0] = VIDEO_STD;
	WorkUint08[1] = 0x00;
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,
						0,				/* byte delay */
						1000,			/* timeout */
						&numWritten);
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_SetPowerLevel
//
//@Description :: Set power level
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	DEC_POWER_LEVELS level	:	Power level
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_SetPowerLevel(  DEC_POWER_LEVELS level)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	
	WorkUint08[0] = OP_MODE;
	switch (level){
		case ACTIVE:
			WorkUint08[1] = 0x00;
			break;
		
		case MAX_POWER:
			WorkUint08[1] = 0x01;
			break;
		
		case CLOCK_EIGHTH:
		case CLOCK_QUARTER:
		case CLOCK_HALF:
		default:
			WorkUint08[1] = 0x01;
			break;
	}
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,			/* write data buffer */
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	return RetVal;
}
//-----------------------------------------------------------------------------
//@RoutineName :: DEC_SetMacrovisionConfig
//
//@Description :: Set Macrovision Configurations
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_SetMacrovisionConfig(  uint16 first_line, uint16 last_line)
{
	return PASS;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetMacrovisionDetect
//
//@Description :: Get Macrovision Detection status
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//  uint08 *pMacDetect		:	pointer to Macrovision detection status
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetMacrovisionDetect(  uint08 *pMacDetect)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numRead, numWritten;
	
	WorkUint08[0] = STATUS2;
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16)i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS)
		*pMacDetect = (uint08)(WorkUint08[1] & 0x07);
	
	return RetVal;
}
//=================================================================================================
//-----------------------------------------------------------------------------
//@RoutineName :: DEC_WriteI2cRegister
//
//@Description :: Write one I2C register
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	I2C_REGISTER *reg		:	pointer to I2C register
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_WriteI2cRegister(  I2C_REGISTER *reg)
{
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	WorkUint08[0] = reg->SubAddress;
	WorkUint08[1] = reg->Data;
	
//	DEC_VerifyBusControlSetup();
	
	return DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						2,					/* num write bytes + 1 (subaddress) */
						WorkUint08,			/* write data buffer */
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_ReadI2cRegister
//
//@Description :: Read one I2C register
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	I2C_REGISTER *reg		:	pointer to I2C register
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_ReadI2cRegister(  I2C_REGISTER *reg)
{
	uint32 numRead, numWritten;
   
//	DEC_VerifyBusControlSetup();
	
	return DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									&(reg->SubAddress),	/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(reg->Data),		/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_VeryfyBusControlSetup
//
//@Description :: Verify Bus Control setup
//
//@Parameter   :: none
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_VerifyBusControlSetup(void)
{
	BOOL reinit_required = FALSE;
	I2CINIT setup;
	int08 return_val = PASS;
	
	if (I2C_GetConfig(i2c_port, &setup) == PASS) {
	/* 7-Bit addressing */
		if (setup.MasterAddressMode != I2C_7BIT)
		{
			setup.MasterAddressMode = I2C_7BIT;
			reinit_required = TRUE;
		}
		
	/* bus controller interrupt */
		if (setup.IntEnable != TRUE)
		{
	setup.IntEnable = TRUE;
			reinit_required = TRUE;
		}
		
	/* spike filter */
		if (setup.FilterValue != DEC_SPIKE_FILTER)
		{
	setup.FilterValue = DEC_SPIKE_FILTER;
			reinit_required = TRUE;		
		}
		
		if (reinit_required) {
			if (I2C_SetConfig(i2c_port, &setup) != PASS)
				return_val = FAIL;
		}
	}
	else
		return_val = FAIL;
	
	return return_val;
}
//=================================================================================================
//-----------------------------------------------------------------------------
//@RoutineName :: DEC_SetGain
//
//@Description :: TVP51xx Video Decoder: Set gain value (CONTRAST)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 percent			:	Gain value (CONTRAST)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_SetGain(  uint08 percent)
{

⌨️ 快捷键说明

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