tunerapi.c
来自「DVB软件,基于CT216软件的开发源程序.」· C语言 代码 · 共 435 行
C
435 行
#include <stdio.h>
#include <string.h>
#include "ct_type.h"
#include "ct_os.h"
#include "ct_sys.h"
#include "ct_iic.h"
#include "ct_nim.h"
#include "nim_config.h"
#ifdef SUPPORT_TUNER_DTT8D1C
#include "DTT8D1C.h"
#endif //SUPPORT_TUNER_DTT8D1C
#ifdef SUPPORT_TUNER_DTT2004
#include "DTT2004.h"
#endif //SUPPORT_TUNER_DTT2004
#ifdef SUPPORT_TUNER_DTT74530
#include "DTT74530.h"
#endif //SUPPORT_TUNER_DTT74530
#ifdef SUPPORT_TUNER_EDT1022
#include "EDT1022.h"
#endif //SUPPORT_TUNER_EDT1022
#ifdef SUPPORT_TUNER_EDT3022
#include "EDT3022.h"
#endif //SUPPORT_TUNER_EDT3022
#ifdef SUPPORT_TUNER_LG101D
#include "lg101d.h"
#endif //SUPPORT_TUNER_LG101D
#ifdef SUPPORT_TUNER_LG352D
#include "lg252d.h"
#endif //SUPPORT_TUNER_LG352D
#ifdef SUPPORT_TUNER_LG352DN
#include "lg352DN.h"
#endif //SUPPORT_TUNER_LG352DN
#ifdef SUPPORT_TUNER_LGXX1D
#include "lgxx1d.h"
#endif //SUPPORT_TUNER_LGXX1D
#ifdef SUPPORT_TUNER_LH17AS
#include "LH17AS.h"
#endif //SUPPORT_TUNER_LH17AS
#ifdef SUPPORT_TUNER_LH172A
#include "LH172A.h"
#endif //SUPPORT_TUNER_LH172A
#ifdef SUPPORT_TUNER_MH201A
#include "MH201A.h"
#endif //SUPPORT_TUNER_MH201A
#ifdef SUPPORT_TUNER_MXL5005
#include "MXL5005_ct221.h"
#endif //SUPPORT_TUNER_MXL5005
#ifdef SUPPORT_TUNER_MXL5007
#include "MxL5007_API.h"
#include "MxL_User_Define.h"
bool8 b8TunerWflag = TRUE;
static MxL5007_TunerConfigS stMxL5007Tuner;
#endif //SUPPORT_TUNER_MXL5007
#ifdef SUPPORT_TUNER_TD1611
#include "TD1600AL.h"
#include "ct_fp.h"
#endif //SUPPORT_TUNER_TD1611
#ifdef SUPPORT_TUNER_TDAD4
#include "TDAD4.h"
#include "ct_fp.h"
#endif //SUPPORT_TUNER_TDAD4
#if 1
#define TUNER_DBG(p)
#else
#define TUNER_DBG(p) printf p
#endif
/*******************************************************************************************/
TUNER_InitParams Tuner_Init;
#ifdef SUPPORT_TUNER_MXL5007
bool8 CT221_ProgramTuner_MxL5007(u32 dwFreqkHz,u8 dwBWandFreqMHz);
#endif //SUPPORT_TUNER_MXL5007
/*******************************************************************************************/
bool8 Tuner_PowerDown(void)
{
#ifdef SUPPORT_TUNER_MXL5005
CT221_PD_MAX5003();
#endif //SUPPORT_TUNER_MXL5005
return TRUE;
}
/*******************************************************************************************/
void Tuner_Reset_paras(u8 val)
{
#ifdef SUPPORT_TUNER_TD1611
Reset_paras(val);
#endif //SUPPORT_TUNER_TD1611
}
/*******************************************************************************************/
bool8 Tuner_DebugTuner(void)
{
#ifdef SUPPORT_TUNER_MXL5007
if (Tuner_Init.enTunerType == EN_TUNER_MXL5007)
{
u8 u8Tempbuf[2];
b8TunerWflag = FALSE; // Set Tuner can't be set channel
u8Tempbuf[0] = 0x18;
CT221_ProgramTuner_MxL5007(57000, 8);
CT_OS_MS_Delay(500);
MxL_I2C_Read(0xC0, 0x18, &u8Tempbuf[1]);
u8Tempbuf[1] |= (1<<6);
MxL_I2C_Write(0xC0, u8Tempbuf, 2);
MxL_I2C_Read(0xC0, 0xAA, &u8Tempbuf[1]);
printf("57Mhz: 0xAA:%d \n", u8Tempbuf[1]);
printf("57Mhz: 50 < 0xAA (Dec) < 150 \n");
MxL_I2C_Read(0xC0, 0x18, &u8Tempbuf[1]);
u8Tempbuf[1] &= ~(1<<6);
MxL_I2C_Write(0xC0, u8Tempbuf, 2);
CT_OS_MS_Delay(500);
CT221_ProgramTuner_MxL5007(148000, 8);
CT_OS_MS_Delay(500);
MxL_I2C_Read(0xC0, 0x18, &u8Tempbuf[1]);
u8Tempbuf[1] |= (1<<6);
MxL_I2C_Write(0xC0, u8Tempbuf, 2);
MxL_I2C_Read(0xC0, 0xAA, &u8Tempbuf[1]);
printf("148Mhz: 0xAA:%d \n", u8Tempbuf[1]);
printf("148Mhz: 25 < 0xAA (Dec) < 100 \n");
MxL_I2C_Read(0xC0, 0x18, &u8Tempbuf[1]);
u8Tempbuf[1] &= ~(1<<6);
MxL_I2C_Write(0xC0, u8Tempbuf, 2);
CT_OS_MS_Delay(500);
CT221_ProgramTuner_MxL5007(508000, 8);
CT_OS_MS_Delay(500);
MxL_I2C_Read(0xC0, 0x18, &u8Tempbuf[1]);
u8Tempbuf[1] |= (1<<6);
MxL_I2C_Write(0xC0, u8Tempbuf, 2);
MxL_I2C_Read(0xC0, 0xAA, &u8Tempbuf[1]);
printf("508Mhz: 0xAA:%d \n", u8Tempbuf[1]);
printf("508Mhz: 25 < 0xAA (Dec) < 100 \n");
MxL_I2C_Read(0xC0, 0x18, &u8Tempbuf[1]);
u8Tempbuf[1] &= ~(1<<6);
MxL_I2C_Write(0xC0, u8Tempbuf, 2);
b8TunerWflag = TRUE; // Set Tuner can't be set channel
}
#endif //SUPPORT_TUNER_MXL5007
return TRUE;
}
/*******************************************************************************************/
bool8 Tuner_DumpTuner(void)
{
#ifdef SUPPORT_TUNER_MXL5007
if (Tuner_Init.enTunerType == EN_TUNER_MXL5007)
{
u8 u8Tempbuf;
b8TunerWflag = FALSE; // Set Tuner can't be set channel
u16 u16i;
for(u16i=0; u16i<0xff; u16i++)
{
MxL_I2C_Read(0xC0, u16i, &u8Tempbuf);
printf("Mx5007[%02hx]: %02hx \n", u16i, u8Tempbuf);
}
b8TunerWflag = TRUE; // Set Tuner can't be set channel
}
#endif //SUPPORT_TUNER_MXL5007
return TRUE;
}
#ifdef SUPPORT_TUNER_MXL5007
/*******************************************************************************************/
bool8 CT221_ProgramTuner_MxL5007(u32 dwFreqkHz,u8 dwBWandFreqMHz)
{
u32 u32RF_Freq_Hz = 0;
MxL_ERR_MSG enMxlMsg = MxL_ERR_OTHERS;
u32RF_Freq_Hz = dwFreqkHz * 1000;
stMxL5007Tuner.I2C_Addr=MxL_I2C_ADDR_96<<1;
stMxL5007Tuner.Mode=MxL_MODE_DVBT;
stMxL5007Tuner.IF_Diff_Out_Level=-8;
stMxL5007Tuner.Xtal_Freq=MxL_XTAL_24_MHZ;
stMxL5007Tuner.IF_Freq=MxL_IF_4_57_MHZ;
stMxL5007Tuner.IF_Spectrum=MxL_NORMAL_IF;
stMxL5007Tuner.ClkOut_Setting=MxL_CLKOUT_ENABLE;
stMxL5007Tuner.ClkOut_Amp=MxL_CLKOUT_AMP_0;
stMxL5007Tuner.BW_MHz=dwBWandFreqMHz;
stMxL5007Tuner.RF_Freq_Hz=u32RF_Freq_Hz;
MxL_Tuner_Init(&stMxL5007Tuner);
enMxlMsg = MxL_Tuner_RFTune(&stMxL5007Tuner,u32RF_Freq_Hz, dwBWandFreqMHz );
if(enMxlMsg != MxL_OK)
{
TUNER_DBG(("\n>> Change Frequency Fail......[MxL5007]\n"));
return (FALSE);
}
else
return (TRUE);
}
#endif //SUPPORT_TUNER_MXL5007
/*******************************************************************************************/
bool8 Tuner_ProgramTuner(u32 RfFreq, u8 ucBandWidthMHz)
{
if (Tuner_Init.enTunerType == EN_TUNER_DTT8D1C)
{
#ifdef SUPPORT_TUNER_DTT8D1C
return CT221_ProgramTuner_DTT8D1C(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_DTT8D1C
}
else if (Tuner_Init.enTunerType == EN_TUNER_DTT2004)
{
#ifdef SUPPORT_TUNER_DTT2004
return CT221_ProgramTuner_DTT2004(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_DTT2004
}
else if (Tuner_Init.enTunerType == EN_TUNER_DTT74530)
{
#ifdef SUPPORT_TUNER_DTT74530
return CT221_ProgramTuner_DTT74530(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_DTT74530
}
else if (Tuner_Init.enTunerType == EN_TUNER_EDT1022)
{
#ifdef SUPPORT_TUNER_EDT1022
return CT221_ProgramTuner_EDT1022(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_EDT1022
}
else if (Tuner_Init.enTunerType == EN_TUNER_EDT3022)
{
#ifdef SUPPORT_TUNER_EDT3022
return CT221_ProgramTuner_EDT3022(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_EDT3022
}
else if (Tuner_Init.enTunerType == EN_TUNER_LG101D)
{
#ifdef SUPPORT_TUNER_LG101D
return CT221_ProgramTuner_LG101D(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_LG101D
}
else if (Tuner_Init.enTunerType == EN_TUNER_LG352D)
{
#ifdef SUPPORT_TUNER_LG352D
return CT221_ProgramTuner_LG252D(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_LG352D
}
else if (Tuner_Init.enTunerType == EN_TUNER_LG352DN)
{
#ifdef SUPPORT_TUNER_LG352DN
return CT221_ProgramTuner_LG352DN(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_LG352DN
}
else if (Tuner_Init.enTunerType == EN_TUNER_LGXX1D)
{
#ifdef SUPPORT_TUNER_LGXX1D
return CT221_ProgramTuner_LGXX1D(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_LGXX1D
}
else if (Tuner_Init.enTunerType == EN_TUNER_LH17AS)
{
#ifdef SUPPORT_TUNER_LH17AS
return CT221_ProgramTuner_LH17AS(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_LH17AS
}
else if (Tuner_Init.enTunerType == EN_TUNER_LH172A)
{
#ifdef SUPPORT_TUNER_LH172A
return CT221_ProgramTuner_LH172A(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_LH172A
}
else if (Tuner_Init.enTunerType == EN_TUNER_MH201A)
{
#ifdef SUPPORT_TUNER_MH201A
return CT221_ProgramTuner_MH201A(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_MH201A
}
else if (Tuner_Init.enTunerType == EN_TUNER_MXL5005)
{
#ifdef SUPPORT_TUNER_MXL5005
return CT221_ProgramTuner_MAX5003(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_MXL5005
}
else if (Tuner_Init.enTunerType == EN_TUNER_MXL5007)
{
#ifdef SUPPORT_TUNER_MXL5007
if(b8TunerWflag == TRUE)
{
return CT221_ProgramTuner_MxL5007(RfFreq, ucBandWidthMHz);
}
#endif //SUPPORT_TUNER_MXL5007
}
else if (Tuner_Init.enTunerType == EN_TUNER_TD1611)
{
#ifdef SUPPORT_TUNER_TD1611
return CT221_ProgramTuner_TD1600AL(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_TD1611
}
else if (Tuner_Init.enTunerType == EN_TUNER_TDAD4)
{
#ifdef SUPPORT_TUNER_TDAD4
return CT221_ProgramTuner_TDAD4(RfFreq, ucBandWidthMHz);
#endif //SUPPORT_TUNER_TDAD4
}
return FALSE;
}
#ifdef IIC_UART
/*******************************************************************************************/
bool8 Tuner_Write(u8 *pu8Buffer , u8 u8Length)
{
if ((pu8Buffer == NULL)||
(u8Length > MAX_IIC_BURST_LENGTH)||
(u8Length==0))
{
return FALSE;
}
if ( IIC2UART_Write(Tuner_Init.u8TunerAddress, *pu8Buffer, (pu8Buffer+1), (u8Length-1)) == FALSE )
{
return FALSE;
}
return TRUE;
}
/*******************************************************************************************/
bool8 Tuner_Read(u8 *pu8Buffer, u8 u8Length)
{
if ((pu8Buffer == NULL)||(u8Length > MAX_IIC_BURST_LENGTH))
{
return FALSE;
}
if ( IIC2UART_Read(Tuner_Init.u8TunerAddress, 0, pu8Buffer, u8Length, FALSE) == FALSE )
{
return FALSE;
}
return TRUE;
}
#else
/*******************************************************************************************/
bool8 Tuner_Write(u8 *pu8Buffer , u8 u8Length)
{
u32 u32Handle;
if (CT_NIM_GetBus() == EN_CT_NIM_BUS_0)
{
if( CT_IIC_Open(EN_CT_IIC_BUS_0, Tuner_Init.u8TunerAddress, &u32Handle)!= DRV_OK)
{
printf("\nCT_IIC_Open 0 Error");
return FALSE;
}
}
else
{
if( CT_IIC_Open(EN_CT_IIC_BUS_1, Tuner_Init.u8TunerAddress, &u32Handle)!= DRV_OK)
{
printf("\nCT_IIC_Open 1 Error");
return FALSE;
}
}
#ifdef NIM_SW_IIC
if(CT_SW_IIC_WriteData(u32Handle, pu8Buffer, u8Length) != DRV_OK )
#else
if(CT_IIC_WriteData(u32Handle, pu8Buffer, u8Length) != DRV_OK )
#endif
{
printf("\nCT_IIC_WriteData Error");
CT_IIC_Close(u32Handle);
return(FALSE);
}
CT_IIC_Close(u32Handle);
return (TRUE);
}
/*******************************************************************************************/
bool8 Tuner_Read(u8 *pu8Buffer, u8 u8Length)
{
u32 u32Handle;
if (CT_NIM_GetBus() == EN_CT_NIM_BUS_0)
{
if( CT_IIC_Open(EN_CT_IIC_BUS_0, Tuner_Init.u8TunerAddress, &u32Handle)!= DRV_OK)
{
printf("\nR CT_IIC_Open 0 Error");
return FALSE;
}
}
else
{
if( CT_IIC_Open(EN_CT_IIC_BUS_1, Tuner_Init.u8TunerAddress, &u32Handle)!= DRV_OK)
{
printf("\nR CT_IIC_Open 1 Error");
return FALSE;
}
}
#ifdef NIM_SW_IIC
if(CT_SW_IIC_ReadData(u32Handle, pu8Buffer, u8Length) != DRV_OK )
#else
if(CT_IIC_ReadData(u32Handle, pu8Buffer, u8Length) != DRV_OK )
#endif
{
printf("\nR CT_IIC_ReadData Error");
CT_IIC_Close(u32Handle);
return FALSE;
}
CT_IIC_Close(u32Handle);
return (TRUE) ;
}
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?