📄 init399e.c
字号:
#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 + -