📄 mxl5005_c.c
字号:
status += MXL_ControlWrite(Tuner, BB_ALPF_BANDSELECT, 2) ;
}
else
{
status += MXL_ControlWrite(Tuner, BB_ALPF_BANDSELECT, 5) ;
}
break ;
}
}
//
// Charge Pump Control
// Dig Ana
if (Tuner->Mode == 1)
{
status += MXL_ControlWrite(Tuner, RFSYN_CHP_GAIN, 5) ;
status += MXL_ControlWrite(Tuner, RFSYN_EN_CHP_HIGAIN, 1) ;
status += MXL_ControlWrite(Tuner, EN_CHP_LIN_B, 0) ;
}
else
{
status += MXL_ControlWrite(Tuner, RFSYN_CHP_GAIN, 8) ;
status += MXL_ControlWrite(Tuner, RFSYN_EN_CHP_HIGAIN, 1) ;
status += MXL_ControlWrite(Tuner, EN_CHP_LIN_B, 0) ;
}
//
// AGC TOP Control
//
if (Tuner->AGC_Mode == 0) // Dual AGC
{
status += MXL_ControlWrite(Tuner, AGC_IF, 15) ;
status += MXL_ControlWrite(Tuner, AGC_RF, 15) ;
}
else // Single AGC Mode Dig Ana
status += MXL_ControlWrite(Tuner, AGC_RF, Tuner->Mode? 15 : 12) ;
if (Tuner->TOP == 55) // TOP == 5.5
status += MXL_ControlWrite(Tuner, AGC_IF, 0x0) ;
if (Tuner->TOP == 72) // TOP == 7.2
status += MXL_ControlWrite(Tuner, AGC_IF, 0x1) ;
if (Tuner->TOP == 92) // TOP == 9.2
status += MXL_ControlWrite(Tuner, AGC_IF, 0x2) ;
if (Tuner->TOP == 110) // TOP == 11.0
status += MXL_ControlWrite(Tuner, AGC_IF, 0x3) ;
if (Tuner->TOP == 129) // TOP == 12.9
status += MXL_ControlWrite(Tuner, AGC_IF, 0x4) ;
if (Tuner->TOP == 147) // TOP == 14.7
status += MXL_ControlWrite(Tuner, AGC_IF, 0x5) ;
if (Tuner->TOP == 168) // TOP == 16.8
status += MXL_ControlWrite(Tuner, AGC_IF, 0x6) ;
if (Tuner->TOP == 194) // TOP == 19.4
status += MXL_ControlWrite(Tuner, AGC_IF, 0x7) ;
if (Tuner->TOP == 212) // TOP == 21.2
status += MXL_ControlWrite(Tuner, AGC_IF, 0x9) ;
if (Tuner->TOP == 232) // TOP == 23.2
status += MXL_ControlWrite(Tuner, AGC_IF, 0xA) ;
if (Tuner->TOP == 252) // TOP == 25.2
status += MXL_ControlWrite(Tuner, AGC_IF, 0xB) ;
if (Tuner->TOP == 271) // TOP == 27.1
status += MXL_ControlWrite(Tuner, AGC_IF, 0xC) ;
if (Tuner->TOP == 292) // TOP == 29.2
status += MXL_ControlWrite(Tuner, AGC_IF, 0xD) ;
if (Tuner->TOP == 317) // TOP == 31.7
status += MXL_ControlWrite(Tuner, AGC_IF, 0xE) ;
if (Tuner->TOP == 349) // TOP == 34.9
status += MXL_ControlWrite(Tuner, AGC_IF, 0xF) ;
//
// IF Synthesizer Control
//
status += MXL_IFSynthInit( Tuner ) ;
//
// IF UpConverter Control
if (Tuner->IF_OUT_LOAD == 200)
{
status += MXL_ControlWrite(Tuner, DRV_RES_SEL, 6) ;
status += MXL_ControlWrite(Tuner, I_DRIVER, 2) ;
}
if (Tuner->IF_OUT_LOAD == 300)
{
status += MXL_ControlWrite(Tuner, DRV_RES_SEL, 4) ;
status += MXL_ControlWrite(Tuner, I_DRIVER, 1) ;
}
//
// Anti-Alias Filtering Control
//
// initialise Anti-Aliasing Filter
if (Tuner->Mode) {// Digital Mode
if (Tuner->IF_OUT >= 4000000UL && Tuner->IF_OUT <= 6280000UL) {
status += MXL_ControlWrite(Tuner, EN_AAF, 1) ;
status += MXL_ControlWrite(Tuner, EN_3P, 1) ;
status += MXL_ControlWrite(Tuner, EN_AUX_3P, 1) ;
status += MXL_ControlWrite(Tuner, SEL_AAF_BAND, 0) ;
}
if ((Tuner->IF_OUT == 36125000UL) || (Tuner->IF_OUT == 36150000UL)) {
status += MXL_ControlWrite(Tuner, EN_AAF, 1) ;
status += MXL_ControlWrite(Tuner, EN_3P, 1) ;
status += MXL_ControlWrite(Tuner, EN_AUX_3P, 1) ;
status += MXL_ControlWrite(Tuner, SEL_AAF_BAND, 1) ;
}
if (Tuner->IF_OUT > 36150000UL) {
status += MXL_ControlWrite(Tuner, EN_AAF, 0) ;
status += MXL_ControlWrite(Tuner, EN_3P, 1) ;
status += MXL_ControlWrite(Tuner, EN_AUX_3P, 1) ;
status += MXL_ControlWrite(Tuner, SEL_AAF_BAND, 1) ;
}
} else { // Analog Mode
if (Tuner->IF_OUT >= 4000000UL && Tuner->IF_OUT <= 5000000UL)
{
status += MXL_ControlWrite(Tuner, EN_AAF, 1) ;
status += MXL_ControlWrite(Tuner, EN_3P, 1) ;
status += MXL_ControlWrite(Tuner, EN_AUX_3P, 1) ;
status += MXL_ControlWrite(Tuner, SEL_AAF_BAND, 0) ;
}
if (Tuner->IF_OUT > 5000000UL)
{
status += MXL_ControlWrite(Tuner, EN_AAF, 0) ;
status += MXL_ControlWrite(Tuner, EN_3P, 0) ;
status += MXL_ControlWrite(Tuner, EN_AUX_3P, 0) ;
status += MXL_ControlWrite(Tuner, SEL_AAF_BAND, 0) ;
}
}
//
// Demod Clock Out
//
if (Tuner->CLOCK_OUT)
status += MXL_ControlWrite(Tuner, SEQ_ENCLK16_CLK_OUT, 1) ;
else
status += MXL_ControlWrite(Tuner, SEQ_ENCLK16_CLK_OUT, 0) ;
if (Tuner->DIV_OUT == 1)
status += MXL_ControlWrite(Tuner, SEQ_SEL4_16B, 1) ;
if (Tuner->DIV_OUT == 0)
status += MXL_ControlWrite(Tuner, SEQ_SEL4_16B, 0) ;
//
// Crystal Control
//
if (Tuner->CAPSELECT)
status += MXL_ControlWrite(Tuner, XTAL_CAPSELECT, 1) ;
else
status += MXL_ControlWrite(Tuner, XTAL_CAPSELECT, 0) ;
if (Tuner->Fxtal >= 12000000UL && Tuner->Fxtal <= 16000000UL)
status += MXL_ControlWrite(Tuner, IF_SEL_DBL, 1) ;
if (Tuner->Fxtal > 16000000UL && Tuner->Fxtal <= 32000000UL)
status += MXL_ControlWrite(Tuner, IF_SEL_DBL, 0) ;
if (Tuner->Fxtal >= 12000000UL && Tuner->Fxtal <= 22000000UL)
status += MXL_ControlWrite(Tuner, RFSYN_R_DIV, 3) ;
if (Tuner->Fxtal > 22000000UL && Tuner->Fxtal <= 32000000UL)
status += MXL_ControlWrite(Tuner, RFSYN_R_DIV, 0) ;
//
// Misc Controls
//
if (Tuner->Mode == 0 && Tuner->IF_Mode == 1) // Analog LowIF mode
status += MXL_ControlWrite(Tuner, SEQ_EXTIQFSMPULSE, 0);
else
status += MXL_ControlWrite(Tuner, SEQ_EXTIQFSMPULSE, 1);
// status += MXL_ControlRead(Tuner, IF_DIVVAL, &IF_DIVVAL_Val) ;
// Set TG_R_DIV
status += MXL_ControlWrite(Tuner, TG_R_DIV, MXL_Ceiling(Tuner->Fxtal, 1000000)) ;
//
// Apply Default value to BB_INITSTATE_DLPF_TUNE
//
//
// RSSI Control
//
if(Tuner->EN_RSSI)
{
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 1) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
// RSSI reference point
status += MXL_ControlWrite(Tuner, RFA_RSSI_REF, 2) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFH, 3) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFL, 1) ;
// TOP point
status += MXL_ControlWrite(Tuner, RFA_FLR, 0) ;
status += MXL_ControlWrite(Tuner, RFA_CEIL, 12) ;
}
//
// Modulation type bit settings
// Override the control values preset
//
if (Tuner->Mod_Type == MXL_DVBT) // DVB-T Mode
{
Tuner->AGC_Mode = 1 ; // Single AGC Mode
// Enable RSSI
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 1) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
// RSSI reference point
status += MXL_ControlWrite(Tuner, RFA_RSSI_REF, 3) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFH, 5) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFL, 1) ;
// TOP point
status += MXL_ControlWrite(Tuner, RFA_FLR, 2) ;
status += MXL_ControlWrite(Tuner, RFA_CEIL, 13) ;
if (Tuner->IF_OUT <= 6280000UL) // Low IF
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 0) ;
else // High IF
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 1) ;
//status += MXL_ControlWrite(Tuner, RFSYN_CHP_GAIN, 0x0f) ; // SFCHEN: Current Charge Pump
}
if (Tuner->Mod_Type == MXL_ATSC) // ATSC Mode
{
Tuner->AGC_Mode = 1 ; // Single AGC Mode
// Enable RSSI
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 1) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
// RSSI reference point
status += MXL_ControlWrite(Tuner, RFA_RSSI_REF, 2) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFH, 4) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFL, 1) ;
// TOP point
status += MXL_ControlWrite(Tuner, RFA_FLR, 2) ;
status += MXL_ControlWrite(Tuner, RFA_CEIL, 13) ;
status += MXL_ControlWrite(Tuner, BB_INITSTATE_DLPF_TUNE, 1) ;
status += MXL_ControlWrite(Tuner, RFSYN_CHP_GAIN, 5) ; // Low Zero
if (Tuner->IF_OUT <= 6280000UL) // Low IF
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 0) ;
else // High IF
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 1) ;
}
if (Tuner->Mod_Type == MXL_QAM) // QAM Mode
{
Tuner->Mode = MXL_DIGITAL_MODE;
//Tuner->AGC_Mode = 1 ; // Single AGC Mode
// Disable RSSI //change here for v2.6.5
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 0) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
// RSSI reference point
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFH, 5) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REF, 3) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFL, 2) ;
status += MXL_ControlWrite(Tuner, RFSYN_CHP_GAIN, 3) ; //change here for v2.6.5
if (Tuner->IF_OUT <= 6280000UL) // Low IF
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 0) ;
else // High IF
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 1) ;
}
if (Tuner->Mod_Type == MXL_ANALOG_CABLE) // Analog Cable Mode
{
//Tuner->Mode = MXL_DIGITAL_MODE ;
Tuner->AGC_Mode = 1 ; // Single AGC Mode
// Disable RSSI
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 0) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
status += MXL_ControlWrite(Tuner, AGC_IF, 1) ; //change for 2.6.3
status += MXL_ControlWrite(Tuner, AGC_RF, 15) ;
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 1) ;
}
if (Tuner->Mod_Type == MXL_ANALOG_OTA) //Analog OTA Terrestrial mode add for 2.6.7
{
//Tuner->Mode = MXL_ANALOG_MODE;
// Enable RSSI
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 1) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
// RSSI reference point
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFH, 5) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REF, 3) ;
status += MXL_ControlWrite(Tuner, RFA_RSSI_REFL, 2) ;
status += MXL_ControlWrite(Tuner, RFSYN_CHP_GAIN, 3) ;
status += MXL_ControlWrite(Tuner, BB_IQSWAP, 1) ;
}
// RSSI disable
if(Tuner->EN_RSSI==0)
{
status += MXL_ControlWrite(Tuner, SEQ_EXTSYNTHCALIF, 1) ;
status += MXL_ControlWrite(Tuner, SEQ_EXTDCCAL, 1) ;
status += MXL_ControlWrite(Tuner, AGC_EN_RSSI, 0) ;
status += MXL_ControlWrite(Tuner, RFA_ENCLKRFAGC, 1) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -