📄 tuner.c
字号:
ChipAddField(hTuner->Chip,RTD1300ALF_DIV1,FTD1300ALF_N_MSB,"N_MSB",0,7,CHIP_UNSIGNED);
/* DIV2 */
ChipAddReg(hTuner->Chip,RTD1300ALF_DIV2,"DIV2",0x0001,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RTD1300ALF_DIV2,FTD1300ALF_N_LSB,"N_LSB",0,8,CHIP_UNSIGNED);
/* CTRL */
ChipAddReg(hTuner->Chip,RTD1300ALF_CTRL,"CTRL",0x0002,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RTD1300ALF_CTRL,FTD1300ALF_ONE,"ONE",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_CTRL,FTD1300ALF_CP,"CP",6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_CTRL,FTD1300ALF_T,"T",3,3,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_CTRL,FTD1300ALF_R,"R",1,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_CTRL,FTD1300ALF_ZE,"ZE",0,1,CHIP_UNSIGNED);
/* BB_AUX */
ChipAddReg(hTuner->Chip,RTD1300ALF_BB_AUX,"BB_AUX",0x0003,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RTD1300ALF_BB_AUX,FTD1300ALF_AGC,"AGC",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_BB_AUX,FTD1300ALF_AL2,"AL2",6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_BB_AUX,FTD1300ALF_AL1,"AL1",5,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_BB_AUX,FTD1300ALF_AL0_P4,"AL0_P4",4,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_BB_AUX,FTD1300ALF_SP3,"SP3",3,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_BB_AUX,FTD1300ALF_SP012,"SP012",0,3,CHIP_UNSIGNED);
/* STATUS */
ChipAddReg(hTuner->Chip,RTD1300ALF_STATUS,"STATUS",0x0004,*DefVal++,STCHIP_ACCESS_R);
ChipAddField(hTuner->Chip,RTD1300ALF_STATUS,FTD1300ALF_POR,"POR",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_STATUS,FTD1300ALF_FL,"FL",6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_STATUS,FTD1300ALF_ONES,"ONES",4,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_STATUS,FTD1300ALF_AGC_RD,"AGC_RD",3,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RTD1300ALF_STATUS,FTD1300ALF_ZEROS,"ZEROS",0,3,CHIP_UNSIGNED);
}
}
break;
case TUNER_DTT75300:
/* */
hTuner->StepSize = 166667; /* 166,667 Khz StepSize */
hTuner->IF = 36000; /* 36 MHz intermediate frequency */
hTuner->BandWidth=8;
hTuner->BandSelect=Band_UHF;
hTuner->IQ_Wiring = TUNER_IQ_NORMAL; /* No hardware IQ invertion */
/* fill elements of external chip data structure */
hTunerInitParams->Chip->NbRegs = DTT75300_NBREGS;
hTunerInitParams->Chip->NbFields = DTT75300_NBFIELDS;
hTunerInitParams->Chip->ChipMode = STCHIP_MODE_NOSUBADR;
hTunerInitParams->Chip->WrStart = RDTT75300_P_DIV1;
hTunerInitParams->Chip->WrSize = 6;
hTunerInitParams->Chip->RdStart = RDTT75300_STATUS;
hTunerInitParams->Chip->RdSize = 1;
if(hTunerInitParams->NbDefVal == DTT75300_NBREGS)
{
hTuner->Chip = ChipOpen(hTunerInitParams->Chip);
if(hTuner->Chip != NULL)
{
DefVal = hTuner->DefVal; /* */
/* REGISTER INITIALISATION */
/* P_DIV1 */
ChipAddReg (hTuner->Chip,RDTT75300_P_DIV1,"P_DIV1",0x0000,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RDTT75300_P_DIV1,FDTT75300_FIX, "FIX" ,7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_P_DIV1,FDTT75300_N_MSB,"N_MSB",0,7,CHIP_UNSIGNED);
/* P_DIV2 */
ChipAddReg (hTuner->Chip,RDTT75300_P_DIV2,"P_DIV2",0x0001,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RDTT75300_P_DIV2,FDTT75300_N_LSB,"N_LSB",0,8,CHIP_UNSIGNED);
/* CTRL1 */
ChipAddReg (hTuner->Chip,RDTT75300_CTRL1,"CTRL1",0x0002,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RDTT75300_CTRL1,FDTT75300_FIX_C1, "ONE" ,7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL1,FDTT75300_CP, "CP" ,5,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL1,FDTT75300_RS, "RS" ,0,5,CHIP_UNSIGNED);
/* CTRL2 */
ChipAddReg (hTuner->Chip,RDTT75300_CTRL2,"CTRL2",0x0003,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RDTT75300_CTRL2,FDTT75300_BAND, "BAND" ,6,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL2,FDTT75300_POW_DOWN,"POW_DOWN",4,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL2,FDTT75300_PORT, "PORT" ,0,4,CHIP_UNSIGNED);
/* CTRL3 */
ChipAddReg (hTuner->Chip,RDTT75300_CTRL3,"CTRL3",0x0004,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RDTT75300_CTRL3,FDTT75300_LO1, "LO_1" ,7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL3,FDTT75300_LO0, "LO_0" ,6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL3,FDTT75300_ATC, "ATC" ,5,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL3,FDTT75300_IFE, "IFE" ,4,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL3,FDTT75300_ZERO, "ZERO" ,3,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL3,FDTT75300_AGC_THRES,"AGC_THRES",0,3,CHIP_UNSIGNED);
/* CTRL4 */
ChipAddReg (hTuner->Chip,RDTT75300_CTRL4,"CTRL4",0x0005,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RDTT75300_CTRL4,FDTT75300_SAS, "SAS" ,7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL4,FDTT75300_FIX_C4, "FIX" ,6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL4,FDTT75300_AGD, "AGD" ,5,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL4,FDTT75300_ADS, "ADS" ,4,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_CTRL4,FDTT75300_TEST_MODE,"TEST_MODE",0,4,CHIP_UNSIGNED);
/* STATUS */
ChipAddReg (hTuner->Chip,RDTT75300_STATUS,"STATUS",0x0006,*DefVal++,STCHIP_ACCESS_R);
ChipAddField(hTuner->Chip,RDTT75300_STATUS,FDTT75300_POR, "POR" ,7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_STATUS,FDTT75300_FL, "FL" ,6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_STATUS,FDTT75300_ZERO_R, "ZERO" ,4,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_STATUS,FDTT75300_AGF, "AGF" ,3,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RDTT75300_STATUS,FDTT75300_ADC_OUT,"ADC_OUT",0,3,CHIP_UNSIGNED);
}
}
break;
case TUNER_ED5265:
hTuner->StepSize = 166667; /* 166,667 Khz StepSize */
hTuner->IF = 36000; /* 36 MHz intermediate frequency */
hTuner->BandWidth=8;
hTuner->BandSelect=Band_UHF;
hTuner->IQ_Wiring = TUNER_IQ_NORMAL; /* No hardware IQ invertion */
/* fill elements of external chip data structure */
hTunerInitParams->Chip->NbRegs = ED5265_NBREGS;
hTunerInitParams->Chip->NbFields = ED5265_NBFIELDS;
hTunerInitParams->Chip->ChipMode = STCHIP_MODE_NOSUBADR;
hTunerInitParams->Chip->WrStart = RED5265_DIV1;
hTunerInitParams->Chip->WrSize = ED5265_NBREGS;
hTunerInitParams->Chip->RdStart = RED5265_STATUS;
hTunerInitParams->Chip->RdSize = 1;
if(hTunerInitParams->NbDefVal == DTT75300_NBREGS)
{
hTuner->Chip = ChipOpen(hTunerInitParams->Chip);
if(hTuner->Chip != NULL)
{
DefVal = hTuner->DefVal; /* */
/* REGISTER INITIALISATION */
/* DIV1 */
ChipAddReg(hTuner->Chip,RED5265_DIV1,"DIV1",0x0000,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RED5265_DIV1,FED5265_ZERO,"ZERO",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_DIV1,FED5265_N_MSB,"N_MSB",0,7,CHIP_UNSIGNED);
/* DIV2 */
ChipAddReg(hTuner->Chip,RED5265_DIV2,"DIV2",0x0001,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RED5265_DIV2,FED5265_N_LSB,"N_LSB",0,8,CHIP_UNSIGNED);
/* CTRL1 */
ChipAddReg(hTuner->Chip,RED5265_CTRL1,"CTRL1",0x0002,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RED5265_CTRL1,FED5265_ONE,"ONE",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL1,FED5265_C,"C",5,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL1,FED5265_R,"R",0,5,CHIP_UNSIGNED);
/* CTRL2 */
ChipAddReg(hTuner->Chip,RED5265_CTRL2,"CTRL2",0x0003,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RED5265_CTRL2,FED5265_BS,"BS",6,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL2,FED5265_SL,"SL",4,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL2,FED5265_P321,"P321",1,3,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL2,FED5265_P0,"P0",0,1,CHIP_UNSIGNED);
/* CTRL3 */
ChipAddReg(hTuner->Chip,RED5265_CTRL3,"CTRL3",0x0004,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RED5265_CTRL3,FED5265_LO,"LO",6,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL3,FED5265_ATC,"ATC",5,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL3,FED5265_IFE,"IFE",4,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL3,FED5265_F1,"F1",3,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL3,FED5265_AT,"AT",0,3,CHIP_UNSIGNED);
/* CTRL4 */
ChipAddReg(hTuner->Chip,RED5265_CTRL4,"CTRL4",0x0005,*DefVal++,STCHIP_ACCESS_W);
ChipAddField(hTuner->Chip,RED5265_CTRL4,FED5265_SAS,"SAS",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL4,FED5265_F2,"F2",6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL4,FED5265_AGD,"AGD",5,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL4,FED5265_ADS,"ADS",4,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_CTRL4,FED5265_ZEROS,"ZEROS",0,4,CHIP_UNSIGNED);
/* STATUS */
ChipAddReg(hTuner->Chip,RED5265_STATUS,"STATUS",0x0006,*DefVal++,STCHIP_ACCESS_R);
ChipAddField(hTuner->Chip,RED5265_STATUS,FED5265_POR,"POR",7,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_STATUS,FED5265_FL,"FL",6,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_STATUS,FED5265_Z,"Z",4,2,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_STATUS,FED5265_AGF,"AGF",3,1,CHIP_UNSIGNED);
ChipAddField(hTuner->Chip,RED5265_STATUS,FED5265_V,"V",0,3,CHIP_UNSIGNED);
}
}
break;
default:
break;
}
#ifndef HOST_PC
TunerWrite(hTuner);
#endif
}
return hTuner;
}
TUNER_Error_t TunerSetFrequency(TUNER_Handle_t hTuner,U32 Frequency)
{
TUNER_Error_t error = TUNER_NO_ERR;
U32 frequency;
U32 stepsize;
// U32 nbsteps;
U32 divider;
// U32 swallow;
// U8 vco,u8,index;
// U32 bandwidth = 0;
// U32 status;
// Handle_t handle_mt2060;
if(hTuner && !hTuner->Chip->Error)
{
switch(hTuner->Model)
{
#if (0)
case TUNER_RF4000:
// SetChannel takes the frequency in Hz, so convert the KHz to Hz.
// Extract the stepsize and xtal from the tuner structure.
// There is no structure element for the crystal frequency, but it
// can be extracted from the IF. Borrow the "frequency" variable
// for the crystal frequency since it is not going to be needed.
stepsize = hTuner->StepSize;
if (hTuner->IF == 36000)
{
frequency = 24; // The crystal frquency is in MHz.
}
else
{
frequency = 22; // This is the only other allowed cyrstal frequency.
}
if (setChannel(hTuner->Chip, (Frequency * 1000), frequency, stepsize) > 0)
{
// This indicates an error. For the want of anything else use the following.
error = TUNER_TYPE_ERR;
}
break;
case TUNER_MT2060:
MT2060_Open(hTuner->Chip->I2cAddr, &handle_mt2060, NULL);
ChipSetOneRegister(hTuner->Chip,RMT2060_MISC_CTRL_3,0x33);
hTuner->Lock=MT2060_ChangeFreq(handle_mt2060,(Frequency * 1000),(hTuner->FirstIF*1e6),(hTuner->IF*1000),(hTuner->BandWidth*1000000)+375000);
MT2060_Close(handle_mt2060);
break;
#endif
case TUNER_TD1300ALF:
//TunerSetStepsize(hTuner,hTuner->StepSize);
frequency = Frequency +(hTuner->IF);
divider = (frequency * 100) / (hTuner->StepSize / 10);
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_N_MSB,((divider >> 8) & 0x7F));
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_N_LSB,((divider ) & 0xFF));
stepsize= hTuner->StepSize;
if(((frequency>84000)&&(frequency<=180000))||((frequency>197000)&&(frequency<=366000))||((frequency>484000)&&(frequency<=646000)))
{
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_CP,0x00);
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_T ,0x07);
}
else if(((frequency>130000)&&(frequency<=196000))||((frequency>366000)&&(frequency<=481000))||((frequency>646000)&&(frequency<=790000)))
{
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_CP,0x01);
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_T ,0x06);
}
else if(frequency>790000)
{
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_CP,0x01);
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_T ,0x07);
}
if ((Frequency>49000)&& (Frequency<=159000))
ChipSetFieldImage(hTuner->Chip,FTD1300ALF_SP012,0x01);
else if ((Frequency>162000)&& (Frequency<=444000))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -