⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mxl5005_c.c

📁 DVB软件,基于CT216软件的开发源程序.
💻 C
📖 第 1 页 / 共 5 页
字号:
					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 + -