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

📄 init399e.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "string.h" 
#include "init399E.h"

STCHIP_Handle_t STV0399_Init(STV0399_InitParams_t *InitParams)
{
    STCHIP_Handle_t hChip;
    U8             *DefVal;

#ifndef STTUNER_REG_INIT_OLD_METHOD /* this option will be removed later & only the new method will be left in file*/

	U8 fieldpattern[STV399_NBREGS]= {
		0x0F,0x75,0x1F,0x00,0x10,0x00,0x4B,0x00,0x55,0x55,
		0x17,0x52,0x07,0x02,0x58,0x48,0x77,0x40,0x40,0x1F,
		0x0F,0x73,0x4F,0x3F,0x57,0x00,0x00,0x2A,0x50,0x00,
		0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x00,0x00,0x00,
		0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x0A,0x7F,
		0x7F,0x7F,0x7F,0x7F,0x7F,0x55,0x4C,0x55,0x50,0x4B,
		0x54,0x4B,0x00,0x00,0x1F,0x40,0x00,0x1F,0x00,0x00,
		0x4B,0x2A,0x55,0x7F,0x7F,0x5A,0x55,0x55,0x55,0x55,
		0x55,0x55,0x55,0x5C,0x55,0x55,0x55,0x55,0x4D,0x55,
		0x6A,0x55,0x55,0x51,0x55,0x00,0x55,0x55,0x55
									};
	U8 Rindex = 0;
	U16 Findex = 0;
	U8 fieldwidth = 1;
	U8 bitvalue = 0;
	U8 temppatternstore = 0;
	S8 bitposition = 7;
	
	InitParams->Chip->NbRegs   = STV399_NBREGS;
    InitParams->Chip->NbFields 	= STV399_NBFIELDS;
    InitParams->Chip->ChipMode = STCHIP_MODE_SUBADR_8;

    if(InitParams->NbDefVal == STV399_NBREGS)
    {
        hChip = ChipOpen(InitParams->Chip);

        DefVal = InitParams->DefVal;

	if(hChip != NULL)
	{
		for (Rindex=0;Rindex<STV399_NBREGS;Rindex++)
		{
			ChipAddReg(hChip,Rindex,"\0",Rindex,*DefVal++,STCHIP_ACCESS_WR);
			temppatternstore=fieldpattern[Rindex];
			bitvalue = 0;
			for (bitposition=7;bitposition>=0;bitposition--)
			{
					temppatternstore = temppatternstore<<1;
					if (((temppatternstore & 0x80/*1000 0000*/)==bitvalue) && (bitposition!=0))
					{
						fieldwidth++;
					}
					else
					{
						ChipAddField(hChip,Rindex,Findex,"\0",bitposition,fieldwidth,CHIP_UNSIGNED);
						fieldwidth=1;
						Findex++;
						bitvalue = ((bitvalue==0) ? (bitvalue=0x80) : (bitvalue=0));
					}
			}/*end for loop on bitposition*/
		}/*end for loop on Rindex*/
	}
	
	ChipAddField(hChip,R399_LDT,F399_LOCK_THRESHOLD,"\0",0,8,CHIP_SIGNED);
	ChipAddField(hChip,R399_LDT2,F399_LOCK_THRESHOLD2,"\0",0,8,CHIP_SIGNED);
	ChipAddField(hChip,R399_AGC1S,F399_AGC1_INT_SEC,"\0",0,8,CHIP_SIGNED);
	ChipAddField(hChip,R399_AGC1P,F399_AGC1_INT_PRIM,"\0",0,8,CHIP_SIGNED);
	ChipAddField(hChip,R399_RTF,F399_TIMING_LOOP_FREQ,"\0",0,8,CHIP_SIGNED);
	ChipAddField(hChip,R399_LDI,F399_LOCK_DET_INTEGR,"\0",0,8,CHIP_SIGNED);
	ChipAddField(hChip,R399_ACOARSE,F399_MD,"MD",0,5,CHIP_SIGNED);
	ChipAddField(hChip,R399_AGC1EP,F399_AGC1_ERROR_PRIM,"\0",0,7,CHIP_SIGNED);
	ChipAddField(hChip,R399_AGC1ES,F399_AGC1_ERROR_SEC,"\0",0,7,CHIP_SIGNED);
	/* Make LNB Vol OFF at STTUNER_Open()*/
	ChipAddReg(hChip,R399_IOCFG2,"IOCFG2",0x000b,(U8)0x10,STCHIP_ACCESS_WR);
		
	#if defined(CHIP_STAPI) || defined(NO_GUI)
		ChipApplyDefaultValues(hChip);
	#endif
   }
   else
   return  (STCHIP_Handle_t) NULL;

#else /*#ifdef STTUNER_REG_INIT_OLD_METHOD*/

    /*
    **   REGISTER CONFIGURATION
    **     ----------------------
    */
    
    /* fill elements of external chip data structure */
    InitParams->Chip->NbRegs   = STV399_NBREGS;
    InitParams->Chip->NbFields = STV399_NBFIELDS;
    InitParams->Chip->ChipMode = STCHIP_MODE_SUBADR_8;

    if(InitParams->NbDefVal == STV399_NBREGS)
    {
        hChip = ChipOpen(InitParams->Chip);

        DefVal = InitParams->DefVal;

        if(hChip != NULL)
		{
			/*	REGISTER INITIALISATION	*/
			
				/*	ID	*/
				ChipAddReg(hChip,R399_ID,"ID",0x0000,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_ID,F399_CHIP_IDENT,"CHIP_IDENT",4,4,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_ID,F399_RELEASE,"RELEASE",0,4,CHIP_UNSIGNED);

				/*	I2CRPT	*/
				ChipAddReg(hChip,R399_I2CRPT,"I2CRPT",0x0001,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_I2CRPT,F399_I2CT_ON,"I2CT_ON",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_I2CRPT,F399_ENARPT_LEVEL,"ENARPT_LEVEL",4,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_I2CRPT,F399_SCLT_DELAY,"SCLT_DELAY",3,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_I2CRPT,F399_SCLT_VALUE,"SCLT_VALUE",2,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_I2CRPT,F399_STOP_ENABLE,"STOP_ENABLE",1,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_I2CRPT,F399_SDAT_VALUE,"SDAT_VALUE",0,1,CHIP_UNSIGNED);

				/*	ACR	*/
				ChipAddReg(hChip,R399_ACR,"ACR",0x0002,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_ACR,F399_PRESCALER,"PRESCALER",5,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_ACR,F399_DIVIDER,"DIVIDER",0,5,CHIP_UNSIGNED);

				/*	F22FR	*/
				ChipAddReg(hChip,R399_F22FR,"F22FR",0x0003,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_F22FR,F399_F_REG,"F_REG",0,8,CHIP_UNSIGNED);

				/*	DACR1	*/
				ChipAddReg(hChip,R399_DACR1,"DACR1",0x0004,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_DACR1,F399_DACMODE,"DACMODE",5,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DACR1,F399_DACR1_4,"DACR1_4",4,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DACR1,F399_DACMSB,"DACMSB",0,4,CHIP_UNSIGNED);

				/*	DACR2	*/
				ChipAddReg(hChip,R399_DACR2,"DACR2",0x0005,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_DACR2,F399_DACLSB,"DACLSB",0,8,CHIP_UNSIGNED);

				/*	DISEQC	*/
				ChipAddReg(hChip,R399_DISEQC,"DISEQC",0x0006,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_DISEQC,F399_TIM_OFF,"TIM_OFF",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC,F399_DISEQC_6,"DISEQC_6",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC,F399_TIM_CMD,"TIM_CMD",4,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC,F399_CMD_ENV,"CMD_ENV",3,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC,F399_DISEQC,"DISEQC",2,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC,F399_DISEQCMODE,"DISEQCMODE",0,2,CHIP_UNSIGNED);

				/*	DISEQCFIFO	*/
				ChipAddReg(hChip,R399_DISEQCFIFO,"DISEQCFIFO",0x0007,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_DISEQCFIFO,F399_DISEQCFIFO1,"DISEQCFIFO1",0,8,CHIP_UNSIGNED);

				/*	DISEQCSTATUS	*/
				ChipAddReg(hChip,R399_DISEQCSTATUS,"DISEQCSTATUS",0x0008,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_IP0,"IP0",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_ATT,"ATT",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_T5,"T5",5,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_T4,"T4",4,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_T3,"T3",3,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_TIM,"TIM",2,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_FE,"FE",1,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQCSTATUS,F399_FF,"FF",0,1,CHIP_UNSIGNED);

				/*	DISEQC2	*/
				ChipAddReg(hChip,R399_DISEQC2,"DISEQC2",0x0009,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_7,"DISEQC2_7",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_6,"DISEQC2_6",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_5,"DISEQC2_5",5,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_4,"DISEQC2_4",4,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_3,"DISEQC2_3",3,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_2,"DISEQC2_2",2,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_1,"DISEQC2_1",1,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_DISEQC2,F399_DISEQC2_0,"DISEQC2_0",0,1,CHIP_UNSIGNED);

				/*	IOCFG1	*/
				ChipAddReg(hChip,R399_IOCFG1,"IOCFG1",0x000a,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_IOCFG1,F399_LOCK_CONF,"LOCK_CONF",5,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG1,F399_LOCK_OPDRAIN,"LOCK_OPDRAIN",4,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG1,F399_SERIAL_D0,"SERIAL_D0",3,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG1,F399_TURBO_OUTMODE,"TURBO_OUTMODE",0,3,CHIP_UNSIGNED);

				/*	IOCFG2	*/
				ChipAddReg(hChip,R399_IOCFG2,"IOCFG2",0x000b,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_IOCFG2,F399_OP1_OPDRAIN,"OP1_OPDRAIN",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG2,F399_OP1_1,"OP1_1",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG2,F399_OP0_OPDRAIN,"OP0_OPDRAIN",5,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG2,F399_OP0_1,"OP0_1",4,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG2,F399_DCHIP_ADDR,"DCHIP_ADDR",2,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG2,F399_DIFF_MODE,"DIFF_MODE",1,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_IOCFG2,F399_OUTRS_HZ,"OUTRS_HZ",0,1,CHIP_UNSIGNED);

				/*	AGC0C	*/
				ChipAddReg(hChip,R399_AGC0C,"AGC0C",0x000c,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC0C,F399_PROG0,"PROG0",3,5,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC0C,F399_BETA0,"BETA0",0,3,CHIP_UNSIGNED);

				/*	AGC0R	*/
				ChipAddReg(hChip,R399_AGC0R,"AGC0R",0x000d,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC0R,F399_REF_AGC0,"REF_AGC0",2,6,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC0R,F399_LUT_ORD,"LUT_ORD",1,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC0R,F399_DC0_ADJ,"DC0_ADJ",0,1,CHIP_UNSIGNED);

				/*	AGC1C	*/
				ChipAddReg(hChip,R399_AGC1C,"AGC1C",0x000e,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC1C,F399_DC1_ADJ,"DC1_ADJ",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1C,F399_DBLE_AGC,"DBLE_AGC",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1C,F399_AGC1_B2_EN,"AGC1_B2_EN",5,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1C,F399_BETA2,"BETA2",3,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1C,F399_AGC1C_BETA1,"AGC1C_BETA1",0,3,CHIP_UNSIGNED);

				/*	AGC1CN	*/
				ChipAddReg(hChip,R399_AGC1CN,"AGC1CN",0x000f,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC1CN,F399_AVERAGE_ON,"AVERAGE_ON",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1CN,F399_SEL_AVERAGE_ADJ,"SEL_AVERAGE_ADJ",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1CN,F399_AGC2GAIN,"AGC2GAIN",4,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1CN,F399_SEL_ADCOUT,"SEL_ADCOUT",3,1,CHIP_UNSIGNED);

				/*	RTC	*/
				ChipAddReg(hChip,R399_RTC,"RTC",0x0010,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_RTC,F399_RTC_7,"RTC_7",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_RTC,F399_ALPHA_TMG,"ALPHA_TMG",4,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_RTC,F399_RTC_3,"RTC_3",3,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_RTC,F399_BETA_TMG,"BETA_TMG",0,3,CHIP_UNSIGNED);

				/*	AGC1R	*/
				ChipAddReg(hChip,R399_AGC1R,"AGC1R",0x0011,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC1R,F399_IAGC1R,"IAGC1R",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1R,F399_AGC_BEF_DC,"AGC_BEF_DC",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1R,F399_AGC1R_REF,"AGC1R_REF",0,6,CHIP_UNSIGNED);

				/*	AGC1RN	*/
				ChipAddReg(hChip,R399_AGC1RN,"AGC1RN",0x0012,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC1RN,F399_IAGC1RN,"IAGC1RN",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1RN,F399_OPEN_DRAIN,"OPEN_DRAIN",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC1RN,F399_AGC1RN_REF,"AGC1RN_REF",0,6,CHIP_UNSIGNED);

				/*	AGC2O	*/
				ChipAddReg(hChip,R399_AGC2O,"AGC2O",0x0013,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_AGC2O,F399_AGC2COEFF,"AGC2COEFF",5,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_AGC2O,F399_AGC2_REF,"AGC2_REF",0,5,CHIP_UNSIGNED);

				/*	TLSR	*/
				ChipAddReg(hChip,R399_TLSR,"TLSR",0x0014,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_TLSR,F399_STEP_MINUS,"STEP_MINUS",4,4,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_TLSR,F399_STEP_PLUS,"STEP_PLUS",0,4,CHIP_UNSIGNED);

				/*	CFD	*/
				ChipAddReg(hChip,R399_CFD,"CFD",0x0015,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_CFD,F399_CFD_ON,"CFD_ON",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_CFD,F399_BETA_FC,"BETA_FC",4,3,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_CFD,F399_FDCT,"FDCT",2,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_CFD,F399_LDL,"LDL",0,2,CHIP_UNSIGNED);

				/*	ACLC	*/
				ChipAddReg(hChip,R399_ACLC,"ACLC",0x0016,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_ACLC,F399_DEROT_ON_OFF,"DEROT_ON_OFF",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_ACLC,F399_ACLC,"ACLC",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_ACLC,F399_NOISE,"NOISE",4,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_ACLC,F399_ALPHA,"ALPHA",0,4,CHIP_UNSIGNED);

				/*	BCLC	*/
				ChipAddReg(hChip,R399_BCLC,"BCLC",0x0017,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_BCLC,F399_ALGO,"ALGO",6,2,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_BCLC,F399_BETA,"BETA",0,6,CHIP_UNSIGNED);

				/*	R8PSK	*/
				ChipAddReg(hChip,R399_R8PSK,"R8PSK",0x0018,*DefVal++,STCHIP_ACCESS_WR);
				ChipAddField(hChip,R399_R8PSK,F399_MODE_8PSK,"MODE_8PSK",7,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_R8PSK,F399_EGAL_ON,"EGAL_ON",6,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_R8PSK,F399_OUT_IQ_8PSK,"OUT_IQ_8PSK",5,1,CHIP_UNSIGNED);
				ChipAddField(hChip,R399_R8PSK,F399_R8PSK_4,"R8PSK_4",4,1,CHIP_UNSIGNED);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -