📄 tmbsl10023.c
字号:
g10023Instance[demodUnit].sConfig.bPolaPWM1 = OM57XX_POLAPWM1_DEF;
g10023Instance[demodUnit].sConfig.bPolaPWM2 = OM57XX_POLAPWM2_DEF;
// g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bClkOffsetRange = OM57XX_CLKOFFSETRANGE_DEF;
g10023Instance[demodUnit].sConfig.bTUN_IQSwap = OM57XX_IQSWAP_DEF;
// g10023Instance[demodUnit].sConfig.uTUN_IF = OM57XX_IF_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bOUT_OClk1 = OM57XX_OCLK1_DEF;
g10023Instance[demodUnit].sConfig.bOUT_bParaSer1 = OM57XX_PARASER1_DEF;
g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst1 = OM57XX_MSBFIRST1_DEF;
g10023Instance[demodUnit].sConfig.bOUT_ModeABC1 = OM57XX_MODEABC1_DEF;
g10023Instance[demodUnit].sConfig.bOUT_ParaDiv1 = OM57XX_PARADIV1_DEF;
g10023Instance[demodUnit].sConfig.bOUT_OClk2 = OM57XX_OCLK2_DEF;
g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst2 = OM57XX_MSBFIRST2_DEF;
g10023Instance[demodUnit].sConfig.bSwDyn = OM57XX_SWDYN_DEF;
g10023Instance[demodUnit].sConfig.bSwStep = OM57XX_SWSTEP_DEF;
// specific soft config
/*switch (uValue & 0x000000ff)
{
case 0x00:
break;
case 0x01:
break;
case 0x02:
break;
default:
return TM_ERR_NOT_SUPPORTED;
}*/
// specific board config
switch (uValue & 0xffff0000)
{
case OM5755_BOARD_DEF: // 0x57550000
// sub-board
switch(uValue & 0xff00)
{
case 0x0000: // DVB PAL NTSC ?
g10023Instance[demodUnit].sConfig.bModeDvbMcns = OM57XX_MODE_DVB_DEF;
g10023Instance[demodUnit].sConfig.uTUN_IF = OM57XX_IF_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_DVB_DEF;
g10023Instance[demodUnit].sConfig.bFsampling = OM57XX_FSAMPLING_DEF;
printf("DVB ");
// getch();
break;
case 0x0100:
g10023Instance[demodUnit].sConfig.bModeDvbMcns = OM57XX_MODE_MCNS_DEF;
g10023Instance[demodUnit].sConfig.uTUN_IF = OM57XX_IF_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bFsampling = OM57XX_FSAMPLING_DEF;
printf("MCNS");
getch();
break;
default:
// board not supported
return TM_ERR_NOT_SUPPORTED;
}
break;
case OM5763_BOARD_DEF: // 0x57630000
// sub-board
switch(uValue & 0xff00)
{
case 0x0000: //Annex B
g10023Instance[demodUnit].sConfig.bModeDvbMcns = OM57XX_MODE_MCNS_DEF;
g10023Instance[demodUnit].sConfig.uTUN_IF = OM5763_IF_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bFsampling = OM5763_FSAMPLING_DEF;
break;
case 0x0100: //Annex AC
g10023Instance[demodUnit].sConfig.bModeDvbMcns = OM57XX_MODE_DVB_DEF;
g10023Instance[demodUnit].sConfig.uTUN_IF = OM5763_IF_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_DVB_DEF;
g10023Instance[demodUnit].sConfig.bFsampling = OM5763_FSAMPLING_DEF;
break;
default:
// board not supported
return TM_ERR_NOT_SUPPORTED;
}
break;
case CUSTOM_BOARD_DEF:
// do nothing more than setting the default values
break;
default:
// board not supported
return TM_ERR_NOT_SUPPORTED;
}
// store board if the config has been updated
g10023Instance[demodUnit].sConfig.uBoard = uValue;
break;
case DVBMCNS:
g10023Instance[demodUnit].sConfig.bModeDvbMcns = (UInt8)uValue;
if(g10023Instance[demodUnit].sConfig.bModeDvbMcns)
{
// MCNS mode
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_MCNS_DEF;
g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_MCNS_DEF;
if((g10023Instance[demodUnit].sConfig.uBoard & 0xffff0000) == OM5755_BOARD_DEF)
{
g10023Instance[demodUnit].sConfig.uTUN_IF = OM57XX_IF_MCNS_DEF;
}
else
{
g10023Instance[demodUnit].sConfig.uTUN_IF = OM5763_IF_MCNS_DEF;
}
// set the tuner Low pass filter width selection
g10023Instance[demodUnit].tunerFunc.setCfgFunc(
g10023Instance[demodUnit].eTunerUnit,
tmhalFETunerBandwidth , 7000000);
}
else
{
// DVB mode
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_DVB_DEF;
g10023Instance[demodUnit].sConfig.bBERdepth = OM57XX_BERDEPTH_DVB_DEF;
if((g10023Instance[demodUnit].sConfig.uBoard & 0xffff0000) == OM5755_BOARD_DEF)
{
g10023Instance[demodUnit].sConfig.uTUN_IF = OM57XX_IF_DVB_DEF;
}
else
{
g10023Instance[demodUnit].sConfig.uTUN_IF = OM5763_IF_DVB_DEF;
}
// set the tuner Low pass filter width selection
g10023Instance[demodUnit].tunerFunc.setCfgFunc(
g10023Instance[demodUnit].eTunerUnit,
tmhalFETunerBandwidth , 9000000);
}
break;
case XTALL:
g10023Instance[demodUnit].sConfig.uXtalFreq = uValue;
break;
case PLLMFACTOR:
g10023Instance[demodUnit].sConfig.bPLL_M_Factor = (UInt8)uValue;
break;
case PLLNFACTOR:
g10023Instance[demodUnit].sConfig.bPLL_N_Factor = (UInt8)uValue;
break;
case PLLPFACTOR:
g10023Instance[demodUnit].sConfig.bPLL_P_Factor = (UInt8)uValue;
break;
case FSAMPLING:
g10023Instance[demodUnit].sConfig.bFsampling = (UInt8)uValue;
break;
case IFMAX:
g10023Instance[demodUnit].sConfig.bIFMax = (UInt8)uValue;
break;
case IFMIN:
g10023Instance[demodUnit].sConfig.bIFMin = (UInt8)uValue;
break;
case TUNMAX:
g10023Instance[demodUnit].sConfig.bTUNMax = (UInt8)uValue;
break;
case TUNMIN:
g10023Instance[demodUnit].sConfig.bTUNMin = (UInt8)uValue;
break;
case AGCTRESHOLD:
g10023Instance[demodUnit].sConfig.bAGCtreshold = (UInt8)uValue;
break;
case EQUALTYPE:
g10023Instance[demodUnit].sConfig.bEqualType = (UInt8)uValue;
break;
case POLAPWM1:
g10023Instance[demodUnit].sConfig.bPolaPWM1 = (UInt8)uValue;
break;
case POLAPWM2:
g10023Instance[demodUnit].sConfig.bPolaPWM2 = (UInt8)uValue;
break;
case BERDEPTH:
g10023Instance[demodUnit].sConfig.bBERdepth = (UInt8)uValue;
break;
case BERWINDOW:
g10023Instance[demodUnit].sConfig.uBERwindow = uValue;
break;
case CLKOFFSETRANGE:
g10023Instance[demodUnit].sConfig.bClkOffsetRange = (UInt8)uValue;
break;
case IQSWAP:
g10023Instance[demodUnit].sConfig.bTUN_IQSwap = (UInt8)uValue;
break;
case IF:
g10023Instance[demodUnit].sConfig.uTUN_IF = uValue;
break;
case OCLK1:
g10023Instance[demodUnit].sConfig.bOUT_OClk1 = (UInt8)uValue;
break;
case PARASER1:
g10023Instance[demodUnit].sConfig.bOUT_bParaSer1 = (UInt8)uValue;
break;
case MSBFIRST1:
g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst1 = (UInt8)uValue;
break;
case MODEABC1:
g10023Instance[demodUnit].sConfig.bOUT_ModeABC1 = (UInt8)uValue;
break;
case PARADIV1:
g10023Instance[demodUnit].sConfig.bOUT_ParaDiv1 = (UInt8)uValue;
break;
case OCLK2:
g10023Instance[demodUnit].sConfig.bOUT_OClk2 = (UInt8)uValue;
break;
case MSBFIRST2:
g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst2 = (UInt8)uValue;
break;
case SWDYN:
g10023Instance[demodUnit].sConfig.bSwDyn = (UInt8)uValue;
break;
case SWSTEP:
g10023Instance[demodUnit].sConfig.bSwStep = (UInt8)uValue;
break;
// backdoor functions
case FEINIT:
// init
Tda10023WriteInit(&g10023Instance[demodUnit]);
break;
case SWITCH:
if (uValue)
// tuner is accessible
g10023Instance[demodUnit].systemFunc.SY_WriteBit(
g10023Instance[demodUnit].uDemodHwAdd,
TDA10023_TEST_IND, TDA10023_TEST_BYPIIC_BIT,
TDA10023_TEST_BYPIIC_BIT);
else
{
// tuner is disconnected from the I2C bus
g10023Instance[demodUnit].systemFunc.SY_WriteBit(
g10023Instance[demodUnit].uDemodHwAdd,
TDA10023_TEST_IND, TDA10023_TEST_BYPIIC_BIT, 0);
}
break;
case JQAMMODE:
g10023Instance[demodUnit].systemFunc.SY_WriteBit(
g10023Instance[demodUnit].uDemodHwAdd | TDA10023_JQAMFILTER_ADDR_OFFSET,
TDA10023_JQAM_MODE_IND, TDA10023_JQAM_MODE_JQAM_MODE_MSK, uValue);
break;
case JQAMREQTS:
puBytes[0] = (UInt8)(uValue >> 8);
puBytes[1] = (UInt8)(uValue);
g10023Instance[demodUnit].systemFunc.SY_Write(
g10023Instance[demodUnit].uDemodHwAdd | TDA10023_JQAMFILTER_ADDR_OFFSET,
TDA10023_REQ_TS_IDH_IND, 2, puBytes);
break;
case JQAMREQON:
puBytes[0] = (UInt8)(uValue >> 8);
puBytes[1] = (UInt8)(uValue);
g10023Instance[demodUnit].systemFunc.SY_Write(
g10023Instance[demodUnit].uDemodHwAdd | TDA10023_JQAMFILTER_ADDR_OFFSET,
TDA10023_REQ_ON_IDH_IND, 2, puBytes);
break;
default:
return TM_ERR_BAD_PARAMETER;
}
// start algo
g10023Instance[demodUnit].sApiFlags.iStartAlgo = True;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023GetConfig:
//
// DESCRIPTION: Get the config of the 10023
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TM_ERR_BAD_PARAMETER
// TM_OK
//
// NOTES: This function can be removed if needed
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023GetConfig(
tmUnitSelect_t demodUnit, // I: Demod unit number
UInt32 uItemId, // I: Identifier of the item to modify
UInt32* puValue // O: Value to set for the config item
)
{
UInt32 uByte;
UInt32 puBytes[4];
int i;
SEND_TRACEFCT2(DEBUG_GETCONFIG_ID, 0);
//----------------------
// test input parameters
//----------------------
// test the instance number
if (demodUnit > TDA10023_MAX_UNITS)
return TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER;
// test the object
if (g10023Instance[demodUnit].sApiFlags.iInit == False)
return TMBSL_ERR_DEMOD_NOT_INITIALIZED;
//----------------------
// Implementation
//----------------------
// get the value
switch((tm10023cfgIndex_t)uItemId)
{
// Board config
case BOARD:
*puValue = g10023Instance[demodUnit].sConfig.uBoard;
break;
case STANDARD:
*puValue = tmhalFEStandardDVBC;
break;
case DVBMCNS:
*puValue = g10023Instance[demodUnit].sConfig.bModeDvbMcns;
break;
case XTALL:
*puValue = g10023Instance[demodUnit].sConfig.uXtalFreq;
break;
case PLLMFACTOR:
*puValue = g10023Instance[demodUnit].sConfig.bPLL_M_Factor;
break;
case PLLNFACTOR:
*puValue = g10023Instance[demodUnit].sConfig.bPLL_N_Factor;
break;
case PLLPFACTOR:
*puValue = g10023Instance[demodUnit].sConfig.bPLL_P_Factor;
break;
case FSAMPLING:
*puValue = g10023Instance[demodUnit].sConfig.bFsampling;
break;
case IFMAX:
*puValue = g10023Instance[demodUnit].sConfig.bIFMax;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -