📄 tmbsl10023.c
字号:
//----------------------
// Implementation
//----------------------
if (g10023Instance[demodUnit].systemFunc.SY_Read(
g10023Instance[demodUnit].uDemodHwAdd,
uIndex, uNbBytes, puBytes) == False)
return TM_ERR_IIC_ERR;
return TM_OK;
}
//-----------------------------------------------------------------------------
// Demod-Tuner programming functions:
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023SetRF
//
// DESCRIPTION: this function will program the tuner
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TM_OK
//
// NOTES:
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023SetRF (
tmUnitSelect_t demodUnit, // I: Demod unit number
UInt32 uRF // I: RF frequency (Hz)
)
{
UInt32 uByte;
SEND_TRACEFCT1(DEBUG_SETRF_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;
// test the parameter value
if (uRF < TDA10023_RF_MIN || uRF > TDA10023_RF_MAX)
return TMBSL_ERR_DEMOD_BAD_PARAMETER;
//----------------------
// Implementation
//----------------------
// set the KAGCIF and KAGCTUN to acquisition mode
uByte = 0x93;
g10023Instance[demodUnit].systemFunc.SY_Write(
g10023Instance[demodUnit].uDemodHwAdd,
TDA10023_AGCCONF1_IND,
1,
&uByte);
if (Tda10023WriteRF(&g10023Instance[demodUnit], &uRF) == False)
return TM_FALSE;
// update return value
g10023Instance[demodUnit].sCurrentChannel.uRF = uRF;
// start algo
g10023Instance[demodUnit].sApiFlags.iStartAlgo = True;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023GetRF
//
// DESCRIPTION: this function gets the current RF Frequency.
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TM_OK
//
// NOTES: the value sotcked in the object is returned
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023GetRF (
tmUnitSelect_t demodUnit, // I: Demod unit number
UInt32 *puRF // O: RF frequency (Hz)
)
{
SEND_TRACEFCT2(DEBUG_GETRF_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
//----------------------
*puRF = g10023Instance[demodUnit].sCurrentChannel.uRF;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023SetSR
//
// DESCRIPTION: this function set the symbol rate
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TMBSL_ERR_DEMOD_BAD_PARAMETER
// TM_OK
//
// NOTES:
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023SetSR (
tmUnitSelect_t demodUnit, // I: Demod unit number
UInt32 uSR // I: Symbol rate (bauds)
)
{
SEND_TRACEFCT1(DEBUG_SETSR_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;
// test the parameter value
// SACLK = SysClk/2 (SACLK max = 36MHz)
// (SACLK/64) < uSR < (SACLK/4)
// or with high sampling clock (SACLK = SysClk, SACLK max = 72MHz)
// (SACLK/128) < uSR < (SACLK/8)
if (uSR < (g10023Instance[demodUnit].uSysClk/(2*64)) || uSR > (g10023Instance[demodUnit].uSysClk/(2*4)))
return TMBSL_ERR_DEMOD_BAD_PARAMETER;
//----------------------
// Implementation
//----------------------
Tda10023WriteSR (&g10023Instance[demodUnit], &uSR);
// update current config
g10023Instance[demodUnit].sCurrentChannel.uSR = uSR;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023GetSR
//
// DESCRIPTION: this function returns the symbol rate
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TM_OK
//
// NOTES: the value stored in the object is returned
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023GetSR (
tmUnitSelect_t demodUnit, // I: Demod unit number
UInt32 *puSR // O: Symbol rate (bauds)
)
{
SEND_TRACEFCT2(DEBUG_GETSR_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
//----------------------
*puSR = g10023Instance[demodUnit].sCurrentChannel.uSR;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023SetSI
//
// DESCRIPTION: this function programs the spectral inversion
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TMBSL_ERR_DEMOD_BAD_PARAMETER
// TM_OK
//
// NOTES:
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023SetSI (
tmUnitSelect_t demodUnit, // I: Demod unit number
tmhalFESpectrum_t eSI // I: Spectral Inversion
)
{
UInt32 uSi;
SEND_TRACEFCT1(DEBUG_SETSI_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;
// test the parameter value
if (eSI >= tmhalFESpectralInvMax || eSI < tmhalFESpectrumAuto)
return TMBSL_ERR_DEMOD_BAD_PARAMETER;
//----------------------
// Implementation
//----------------------
switch (eSI)
{
case tmhalFESpectrumAuto:
g10023Instance[demodUnit].sApiFlags.iAutoSi = True;
return TM_OK;
case tmhalFESpectrumNormal:
g10023Instance[demodUnit].sApiFlags.iAutoSi = False;
if (g10023Instance[demodUnit].sConfig.bTUN_IQSwap)
uSi = TDA10023_CARCONF_INVIQ_BIT;
else
uSi = 0;
break;
case tmhalFESpectrumInverted:
g10023Instance[demodUnit].sApiFlags.iAutoSi = False;
if (g10023Instance[demodUnit].sConfig.bTUN_IQSwap)
uSi = 0;
else
uSi = TDA10023_CARCONF_INVIQ_BIT;
break;
default:
return TMBSL_ERR_DEMOD_BAD_PARAMETER;
}
// write the spectral inversion
if(g10023Instance[demodUnit].sApiFlags.iAutoSi == False)
{
g10023Instance[demodUnit].systemFunc.SY_WriteBit(
g10023Instance[demodUnit].uDemodHwAdd,
TDA10023_CARCONF_IND,
TDA10023_CARCONF_AUTOINVIQ_BIT | TDA10023_CARCONF_INVIQ_BIT,
uSi);
}
else
{
g10023Instance[demodUnit].systemFunc.SY_WriteBit(
g10023Instance[demodUnit].uDemodHwAdd,
TDA10023_CARCONF_IND,
TDA10023_CARCONF_AUTOINVIQ_BIT,
TDA10023_CARCONF_AUTOINVIQ_BIT);
}
// update value
g10023Instance[demodUnit].sCurrentChannel.eSI = eSI;
// start algo
g10023Instance[demodUnit].sApiFlags.iStartAlgo = True;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023GetSI
//
// DESCRIPTION: this function reads the spectral inversion regarding to the value of the
// IQswapped at the input of the tuner.
// 0: no spectral inversion else spectral inversion.
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TM_OK
//
// NOTES: the register is readed each time
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023GetSI (
tmUnitSelect_t demodUnit, // I: Demod unit number
tmhalFESpectrum_t *peSI // O: Spectral Inversion
)
{
UInt32 uSi;
SEND_TRACEFCT2(DEBUG_GETSI_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
//----------------------
g10023Instance[demodUnit].systemFunc.SY_Read(
g10023Instance[demodUnit].uDemodHwAdd, TDA10023_CARCONF_IND, 1, &uSi);
// test different cases regarding to the spectral inversion in the tuner
if ((uSi & TDA10023_CARCONF_INVIQ_BIT) && g10023Instance[demodUnit].sConfig.bTUN_IQSwap)
*peSI = tmhalFESpectrumNormal;
else if ((uSi & TDA10023_CARCONF_INVIQ_BIT) && !g10023Instance[demodUnit].sConfig.bTUN_IQSwap)
*peSI = tmhalFESpectrumInverted;
else if (!(uSi & TDA10023_CARCONF_INVIQ_BIT) && g10023Instance[demodUnit].sConfig.bTUN_IQSwap)
*peSI = tmhalFESpectrumInverted;
else if (!(uSi & TDA10023_CARCONF_INVIQ_BIT) && !g10023Instance[demodUnit].sConfig.bTUN_IQSwap)
*peSI = tmhalFESpectrumNormal;
// update value
g10023Instance[demodUnit].sCurrentChannel.eSI = *peSI;
return TM_OK;
}
//-----------------------------------------------------------------------------
// FUNCTION: tmbsl10023SetMod
//
// DESCRIPTION: this function programs the modulation
//
// RETURN: TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
// TMBSL_ERR_DEMOD_NOT_INITIALIZED
// TMBSL_ERR_DEMOD_BAD_PARAMETER
// TM_OK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -