📄 tvp5146.c
字号:
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 + -