📄 mt352.c
字号:
else if(dwTunerFreq < 864000)
{
TunerByte5 = 0x08;
}
else
{
printf("Error Input Centerfreq");
}
dwTunerFreq=(TunerByte4<<8) + TunerByte5;
if (!Tnim_WriteRegisterValue(psTnim,MT352_TUNER_CONT,2,dwTunerFreq))//MT352_TUNER_CONT=0x5B
return FALSE;
/* calculate LO frequency*/
dwTunerFreq=FREQUENCY(dwBWandFreqkHz);/* kHz*/
/* IF offset*/
if ((psTnim->psTunerInfo->Settings) & TUNER_LO_INJECTION)//TUNER_LO_INJECTION 0x02
dwTunerFreq -= psTnim->psTunerInfo->IF1kHz; //Setting(SEM)==0x01
else
dwTunerFreq += psTnim->psTunerInfo->IF1kHz;
/* convert frequency to divider ratio*/
// if (psTnim->psTunerTable[ucIndex-1].FcompkHzx100==0) return FALSE;//FcompKHzx100==16667
dwTunerFreq = (dwTunerFreq * 1000) / Refer_Value;//Refer_Value = 16667
dwTunerFreq +=5;dwTunerFreq /=10; /*round off the result*/
/* program the registers*/
if (!Tnim_WriteRegisterValue(psTnim,MT352_CHAN_START,2,dwTunerFreq))
return FALSE;
if (!Tnim_WriteRegisterValue(psTnim,MT352_CHAN_STOP,2,dwTunerFreq))
return FALSE;
return TRUE;
}
#endif
#if defined(TDM_1316)
bool8 Tnim_ProgramTuner(PSTNIMCTL psTnim,u32 dwBWandFreqkHz)
{
u8 ucIndex;
u32 dwTunerFreq;
u16 TunerByte2,TunerByte3,TunerByte4,TunerByte5;
u32 Refer_Value;
TunerByte4=0xCA;
Refer_Value = 16667;
/*address*/
#if 0
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_ADDR,//MT352_TUNER_ADDR==0x58
&(psTnim->psTunerInfo->Address),1))
return FALSE;//psTnim->psTunerInfo->Address==0xC0
#endif
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_ADDR,//MT352_TUNER_ADDR==0x58
&(psTnim->psTunerInfo->Address),1))
return FALSE;//psTnim->psTunerInfo->Address==0xC0
/* Control Bytes*/
// dwTunerFreq= (FREQUENCY(dwBWandFreqkHz))/1000; /* RF (MHz)*/
dwTunerFreq= (FREQUENCY(dwBWandFreqkHz)); /* RF (KHz)*/
//FREQUENCY(dwBWfreq) ((dwBWfreq) & 0x00FFFFFF)
#if 0
for (ucIndex = psTnim->psTunerInfo->TableCount;ucIndex>1;ucIndex--)
{
if ((dwTunerFreq)>=psTnim->psTunerTable[ucIndex-1].FreqMHz) break;
}
/* Get control byte for RF frequency*/
dwTunerFreq = psTnim->psTunerTable[ucIndex-1].Control;
/* add in bandwidth switching */
switch (BANDWIDTH(dwBWandFreqkHz))//BANDWIDTH(dwBWfreq) ((u8)((dwBWfreq)>>24))
{
case 6:dwTunerFreq |= psTnim->psTunerInfo->Control6MHz; break;
case 7:dwTunerFreq |= psTnim->psTunerInfo->Control7MHz; break;
case 8:dwTunerFreq |= psTnim->psTunerInfo->Control8MHz; break;
default:;
}
#endif
/* ChargePump Setting version 1*/
#if 1
if(dwTunerFreq < 94000)//130000-36000
{
/*130uA (extended)*/
TunerByte5=0x61;
}
else if(dwTunerFreq <124000)// 160000-36000
{
/* 280uA (extendeds)*/
TunerByte5=0xA1;
}
else if(dwTunerFreq < 164000)//200000-36000
{
/*410uA (extended)*/
TunerByte5=0xC1;
}
else if(dwTunerFreq <254000)//290000-36000
{
/*130uA (extended)*/
TunerByte5=0x62;
}
else if(dwTunerFreq < 384000)//420000-36000
{
/*280uA (extended)*/
TunerByte5=0xA2;
}
else if(dwTunerFreq < 444000)//480000-36000
{
/*410uA (extended)*/
TunerByte5=0xC2;
}
else if(dwTunerFreq < 584000)//620000-36000
{
/*130uA (extended)*/
TunerByte5=0x64;
}
else if(dwTunerFreq < 794000)//830000-36000
{
/*280uA (extended)*/
TunerByte5=0xA4;
}
else if(dwTunerFreq < 828000)//864000-36000
{
/*600uA (extended)*/
TunerByte5=0xE4;
}
else
{
printf("Error Input Centerfreq");
}
if(BANDWIDTH(dwBWandFreqkHz) == 8)
TunerByte5 |= 0x08;//rf
#endif
#if 0
/* ChargePump Setting version 1*/
if(dwTunerFreq < 150001)
{
/*2 --> 50uA (extended)*/
TunerByte4=TunerByte4 & 0xB7;
TunerByte4=TunerByte4 | 0x30;
}
else if(dwTunerFreq < 173001)
{
/*3 --> 125uA (extendeds)*/
TunerByte4=TunerByte4 & 0xBF;
TunerByte4=TunerByte4 | 0x38;
}
else if(dwTunerFreq < 250001)
{
/*2 --> 50uA (extended)*/
TunerByte4=TunerByte4 & 0xB7;
TunerByte4=TunerByte4 | 0x30;
}
else if(dwTunerFreq < 400001)
{
/*3 --> 125uA (extended)*/
TunerByte4=TunerByte4 & 0xBF;
TunerByte4=TunerByte4 | 0x38;
}
else if(dwTunerFreq < 420001)
{
/*4 --> 250uA (extended)*/
TunerByte4=TunerByte4 & 0xF7;
TunerByte4=TunerByte4 | 0x70;
}
else if(dwTunerFreq < 470001)
{
/*5 --> 650uA (extended)*/
TunerByte4=TunerByte4 | 0x78;
}
else if(dwTunerFreq < 600001)
{
/*3 --> 125uA (extended)*/
TunerByte4=TunerByte4 & 0xBF;
TunerByte4=TunerByte4 | 0x38;
}
else if(dwTunerFreq < 730001)
{
/*4 --> 250uA (extended)*/
TunerByte4=TunerByte4 & 0xF7;
TunerByte4=TunerByte4 | 0x70;
}
else if(dwTunerFreq < 864001)
{
/*5 --> 650uA (extended)*/
TunerByte4=TunerByte4 | 0x78;
}
else
{
printf("Error Input Centerfreq");
}
/*0 --> 50uA (normal)*/
/* TunerByte4=TunerByte4 & 0x8F; */
/*1 --> 250uA (normal)*/
/* TunerByte4=TunerByte4 | 0x40; */
/* TunerByte4=TunerByte4 & 0xCF; */
/*2 --> 50uA (extended)*/
/* TunerByte4=TunerByte4 & 0xB7; */
/* TunerByte4=TunerByte4 | 0x30; */
/*3 --> 125uA (extended)*/
/* TunerByte4=TunerByte4 & 0xBF; */
/* TunerByte4=TunerByte4 | 0x38; */
/*4 --> 250uA (extended)*/
/* TunerByte4=TunerByte4 & 0xF7; */
/* TunerByte4=TunerByte4 | 0x70; */
/*5 --> 650uA (extended)*/
/* TunerByte4=TunerByte4 | 0x78; */
/* program the control register*/
if(dwTunerFreq < 173251)
{
TunerByte5 = 0x01;
}
else if(dwTunerFreq < 470251)
{
TunerByte5 = 0x02;
}
else if(dwTunerFreq < 864000)
{
TunerByte5 = 0x08;
}
else
{
printf("Error Input Centerfreq");
}
#endif
dwTunerFreq=(TunerByte4<<8) + TunerByte5;
if (!Tnim_WriteRegisterValue(psTnim,MT352_TUNER_CONT,2,dwTunerFreq))//MT352_TUNER_CONT=0x5B
return FALSE;
/* calculate LO frequency*/
dwTunerFreq=FREQUENCY(dwBWandFreqkHz);/* kHz*/
/* IF offset*/
if ((psTnim->psTunerInfo->Settings) & TUNER_LO_INJECTION)//TUNER_LO_INJECTION 0x02
dwTunerFreq -= psTnim->psTunerInfo->IF1kHz; //Setting(SEM)==0x01
else
dwTunerFreq += psTnim->psTunerInfo->IF1kHz;
/* convert frequency to divider ratio*/
// if (psTnim->psTunerTable[ucIndex-1].FcompkHzx100==0) return FALSE;//FcompKHzx100==16667
dwTunerFreq = (dwTunerFreq * 1000) / Refer_Value;//Refer_Value = 16667
dwTunerFreq +=5;dwTunerFreq /=10; /*round off the result*/
/* program the registers*/
if (!Tnim_WriteRegisterValue(psTnim,MT352_CHAN_START,2,dwTunerFreq))
return FALSE;
if (!Tnim_WriteRegisterValue(psTnim,MT352_CHAN_STOP,2,dwTunerFreq))
return FALSE;
return TRUE;
}
#endif
#if defined(COMTECK_DVBT_3528)
#define F_REF 166666//125000 // Hz
#define F_IF 36166666 // Hz
bool8 Tnim_ProgramTuner(PSTNIMCTL psTnim,u32 dwBWandFreqkHz)
{
u8 u8DB1,u8DB2,u8CB,u8CBC,u8BB,u8AB,u8P2;
u32 u32FreqKHz;
u32 u32CaluateTemp;
u8 u8Buffer[5];
u32FreqKHz= (FREQUENCY(dwBWandFreqkHz)); /* RF (KHz)*/
u32CaluateTemp = (u32)(u32FreqKHz*1000 + F_IF)/F_REF;
u8DB1 = (u8)((u16)((u32CaluateTemp&0x7F00)>>8));
u8DB2 = (u8)((u16)(u32CaluateTemp&0x00FF));
#if 1 // MDVBT-3528
// Pll Spec not support Bandwidth switch
u8P2 = 0;
u8AB = 0x50;
//---------------- //JEFFSUN 20040902 ADD
switch (BANDWIDTH(dwBWandFreqkHz))//BANDWIDTH(dwBWfreq) ((u8)((dwBWfreq)>>24)) //jeff
{
default:
case 6:
case 7:
u8P2 = 0 ;
break;
case 8:
u8P2 = 4 ;
break;
}
if (u32FreqKHz <= 132000) //JEFFSUN 20040902 ADD
{
u8BB = 1 + u8P2;
u8CB = 0xB4;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 149000) //JEFFSUN 20040902 ADD
{
u8BB = 1 + u8P2;
u8CB = 0xBC;
u8CBC = 0x9C;
}
//---------------- //JEFFSUN 20040902 ADD
else if (u32FreqKHz <= 349000)
{
u8BB = 1 + u8P2;
u8CB = 0xB4;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 397000)
{
u8BB = 1 + u8P2;
u8CB = 0xBC;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 428000)
{
u8BB = 1 + u8P2;
u8CB = 0xF4;
u8CBC = 0xDC;
}
else if (u32FreqKHz <= 659000)
{
u8BB = 8 + u8P2;
u8CB = 0xB4;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 759000)
{
u8BB = 8 + u8P2;
u8CB = 0xBC;
u8CBC = 0x9C;
}
else
{
u8BB = 8 + u8P2;
u8CB = 0xF4;
u8CBC = 0xDC;
}
#else
switch (BANDWIDTH(dwBWandFreqkHz))//BANDWIDTH(dwBWfreq) ((u8)((dwBWfreq)>>24))
{
default:
case 6:
case 7:
u8P2 = 0 ;
break;
case 8:
u8P2 = 4 ;
break;
}
if (u32FreqKHz <= 132000)
{
u8BB = 1 + u8P2;
u8CB = 0xB4;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 149900)
{
u8BB = 1 + u8P2;
u8CB = 0xBC;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 349000)
{
u8BB = 1 + u8P2; //jeffsun 20040902 2 as 1
u8CB = 0xB4;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 397000)
{
u8BB = 1 + u8P2; //jeffsun 20040902 2 as 1
u8CB = 0xBC;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 430000)
{
u8BB = 1 + u8P2; //jeffsun 20040902 2 as 1
u8CB = 0xF4;
u8CBC = 0xDC;
}
else if (u32FreqKHz <= 659000)
{
u8BB = 8 + u8P2;
u8CB = 0xB4;
u8CBC = 0x9C;
}
else if (u32FreqKHz <= 759000)
{
u8BB = 8 + u8P2;
u8CB = 0xBC;
u8CBC = 0x9C;
}
else
{
u8BB = 8 + u8P2;
u8CB = 0xF4;
u8CBC = 0xDC;
}
u8AB = 0x50;
#endif
u8Buffer[0]=0xC0;
u8Buffer[1]=u8DB1;
u8Buffer[2]=u8DB2;
u8Buffer[3]=u8CB;
u8Buffer[4]=u8BB;
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_ADDR, u8Buffer,5) )
return FALSE;
u8Buffer[0]=1;
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_GO, u8Buffer,1) ) //0x5D
return FALSE;
u8Buffer[0]=0xC0;
u8Buffer[1]=u8DB1;
u8Buffer[2]=u8DB2;
u8Buffer[3]=u8CBC;
u8Buffer[4]=u8AB;
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_ADDR, u8Buffer,5) )
return FALSE;
u8Buffer[0]=1;
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_GO, u8Buffer,1) ) //0x5D
return FALSE;
return TRUE;
}
#endif
#ifdef SEM_DNOS204
#define SEM_DNOS204ZH102A
#endif
#ifdef SEM_DNOS204ZH101A
bool8 Tnim_ProgramTuner(PSTNIMCTL psTnim,u32 dwBWandFreqkHz)
{
u8 ucIndex;
u32 dwTunerFreq;
u16 TunerByte2,TunerByte3,TunerByte4,TunerByte5;
u32 Refer_Value;
Refer_Value=16667;
/*address*/
#if 0
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_ADDR,//MT352_TUNER_ADDR==0x58
&(psTnim->psTunerInfo->Address),1))
return FALSE;//psTnim->psTunerInfo->Address==0xC2
#endif
if (!RegisterWrite2wb(psTnim->DeviceID,MT352_TUNER_ADDR,//MT352_TUNER_ADDR==0x58
&(psTnim->psTunerInfo->Address),1))
return FALSE;//psTnim->psTunerInfo->Address==0xC2
/* Control Bytes*/
// dwTunerFreq= (FREQUENCY(dwBWandFreqkHz))/1000; /* RF (MHz)*/
dwTunerFreq= (FREQUENCY(dwBWandFreqkHz)); /* RF (KHz)*/
//FREQUENCY(dwBWfreq) ((dwBWfreq) & 0x00FFFFFF)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -