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

📄 tuner.c

📁 STV0299 Minituner driver, for ST chipset
💻 C
📖 第 1 页 / 共 5 页
字号:
							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 + -