📄 regmapinit.tms
字号:
/*Demodulator, dtvia-Thomson, 1.0 1/8/2001 15:35:15*/
/*----------------------------------------------------------------------*
* *
* Copyright , DTVIA TechLabs Co.,Ltd. *
* ALL RIGHTS RESERVED *
* *
* Permission is hereby granted to licensees of DTVIA TechLabs Co., *
* Ltd. products to use or abstract this computer program for the *
* sole purpose of implementing a product based on DTVIA TechLabs *
* Co.,Ltd. products. No other rights to reproduce, use, *
* or disseminate this computer program, whether in part or in *
* whole, are granted. *
* *
* DTVIA TechLabs Co.,Ltd. makes no representation or warranties *
* with respect to the performance of this computer program, and *
* specifically disclaims any responsibility for any damages, *
* special or consequential, connected with the use of this program. *
* *
************************************************************************/
/*----------------------------------------------------------------------+
| DTVIA HARDWARE_LIB |
| Author: chaiyong |
| Component:REGMAPINIT.c |
| File: QAM_demodulate |
| Purpose: Implement demodulate device application functions. |
| Changes: |
| Date: Comment: Auther |
| ----- -------- --------|
| 11-11-2002 Created chaiyong |
+----------------------------------------------------------------------*/
#define SOURCE REGMAP0297
#include "def.h"
#include "REGMAP0297.h"
#include "Reg0297.h"
REGISTER RegMap [NBREG];
FIELD FieldMap[NBFIELD];
//extern int TunerType;
/******** AddReg ************************************************************/
/* Add a new register to the register map */
/*****************************************************************************/
void AddReg(int Id,char Address,char Reset)
{
REGISTER *pReg;
pReg=&RegMap[Id];
pReg->Addr = Address;
pReg->Reset = Reset;
pReg->Value = 0x00;
//strcpy(pReg->Name,Name);
}
/******** AddField **********************************************************/
/* Add a field to the field map */
/*****************************************************************************/
void AddField(int RegId, int FieldId, char Pos, char NbBits, char Type)
{
FIELD *pField;
pField=&FieldMap[FieldId];
pField->Reg= RegId;
pField->Pos= Pos;
pField->Bits= NbBits;
pField->Type= Type;
pField->Mask= FieldCreateMask(FieldId);
}
/*---------------------------------------------------------------------------------------+
NOTE:Create the mask of the field according the informations store in the FIELD structure
+----------------------------------------------------------------------------------------*/
unsigned char FieldCreateMask(int field)
{
int i;
unsigned char mask=0;
for (i = 0; i < FieldMap[field].Bits; i++)
{
mask <<= 1 ;
mask += 1 ;
}
mask = mask << FieldMap[field].Pos;
return mask;
}
/**************************** RegMapInit ****************************************/
/* This function initializes in memory the STV0297 registers */
/* configure & initialize the REGISTERS : 8bit registers */
/* configure & initialize the FIELD : subset of 8 bit registers */
/* FIELD is for example a bit status, or a coefficient, etc ... */
/* initialize in memory the default registers values of the STV0297 */
/* STV0297 Default values are stored in ValRegReset array */
/* Define Which Registers to display in the register Map with MemReg array */
/********************************************************************************/
void RegMapInit(void)
{
/*-------------------------+
// REGISTER INITIALISATION
// -----------------------*/
//TunerType=8710;
//EQU_0
AddReg(EQU_0,0x00, 0x4B);
AddField(EQU_0, U_THRESHOLD, 0, 4, UNSIGNED);
AddField(EQU_0, MODE_SELECT, 4, 3, UNSIGNED);
//EQU_1
AddReg(EQU_1,0x01, 0x58);
AddField(EQU_1,BLIND_U, 0, 4, UNSIGNED);
AddField(EQU_1,INITIAL_U, 4, 4, UNSIGNED);
// EQU_3
AddReg(EQU_3,0x03, 0x00);
AddField(EQU_3,EQ_FSM_CTL, 0, 2, UNSIGNED);
AddField(EQU_3,EQ_COEFF_CTL, 2, 2, UNSIGNED);
// EQU_4
AddReg(EQU_4,0x04, 0x01);
AddField(EQU_4,NBLIND, 0, 1, UNSIGNED);
// EQU_7
//switch(TunerType)
//{
// case 8710 :
// AddReg(EQU_7,0x07, 0xa6);
// break ;
// case 8720 :
AddReg(EQU_7,0x07, 0x7);
// break ;
// default:
// break ;
//}
AddField(EQU_7,NOISE_EST_LO, 0, 8, UNSIGNED);
// EQU_8
//switch(TunerType)
//{
// case 8710 :
// AddReg(EQU_8,0x08, 0x1b);
// break ;
// case 8720 :
AddReg(EQU_8,0x08, 0x1c);
// break ;
// default:
// break ;
//}
AddField(EQU_8,NOISE_EST_HI, 0, 8, UNSIGNED);
// INITDEM_0
AddReg(INITDEM_0,0x20, 0x00);
AddField(INITDEM_0,DEM_FQCY_LO, 0, 8, UNSIGNED);
// INITDEM_1
AddReg(INITDEM_1,0x21, 0x40);
AddField(INITDEM_1,DEM_FQCY_HI, 0, 8, UNSIGNED);
// INITDEM_2
AddReg(INITDEM_2,0x22, 0x0a);
AddField(INITDEM_2,LATENCY, 0, 8, UNSIGNED);
// INITDEM_3
AddReg(INITDEM_3,0x23, 0x00);
AddField(INITDEM_3,SCAN_STEP_LO, 0, 8, UNSIGNED);
// INITDEM_4
AddReg(INITDEM_4,0x24, 0x40);
AddField(INITDEM_4,CHSCANITEN, 7, 1, UNSIGNED);
AddField(INITDEM_4,CHSCANITSOFT, 6, 1, UNSIGNED);
AddField(INITDEM_4,CHSCANITSOFT, 0, 6, UNSIGNED);
// INITDEM_5
AddReg(INITDEM_5,0x25, 0x08);
AddField(INITDEM_5,IN_DEMOD_EN, 7, 1, UNSIGNED);
AddField(INITDEM_5,SCAN_ON, 6, 1, UNSIGNED);
AddField(INITDEM_5,AUTOSTOP, 5, 1, UNSIGNED);
AddField(INITDEM_5,SCALE_A, 4, 1, UNSIGNED);
AddField(INITDEM_5,SCALE_B, 2, 2, UNSIGNED);
// DELAGC_0
AddReg(DELAGC_0,0x30, 0xff);
AddField(DELAGC_0,AGC2MAX, 0, 8, UNSIGNED);
// DELAGC_1
//switch(TunerType)
//{
// case 8710 :
// AddReg(DELAGC_1,0x31, 0x6C);
// break ;
// case 8720 :
AddReg(DELAGC_1,0x31, 0x5c);//0x57,0x5c
// break ;
// default:
// break ;
//}
AddField(DELAGC_1,AGC2MIN, 0, 8, UNSIGNED);
// DELAGC_2
AddReg(DELAGC_2,0x32, 0xFF);
AddField(DELAGC_2,AGC1MAX, 0, 8, UNSIGNED);
// DELAGC_3
AddReg(DELAGC_3,0x33, 0x00);
AddField(DELAGC_3,AGC1MIN, 0, 8, UNSIGNED);
// DELAGC_4
//switch(TunerType)
//{
// case 8710 :
// AddReg(DELAGC_4,0x34, 0x12);
// break ;
// case 8720 :
AddReg(DELAGC_4,0x34, 0x32);
// break ;
// default:
// break ;
//}
AddField(DELAGC_4,RATIO_A, 5, 3, UNSIGNED);
AddField(DELAGC_4,RATIO_B, 3, 2, UNSIGNED);
AddField(DELAGC_4,RATIO_C, 0, 3, UNSIGNED);
// DELAGC_5
//switch(TunerType)
//{
// case 8710 :
// AddReg(DELAGC_5,0x35, 0x6C);
// break ;
// case 8720 :
AddReg(DELAGC_5,0x35, 0x5c);//0x69,5c
// break ;
// default:
// break ;
//}
AddField(DELAGC_5,AGC2_THRES, 0, 8, UNSIGNED);
// DELAGC_6
AddReg(DELAGC_6,0x36, 0x80);
AddField(DELAGC_6,DAGC_ON, 7, 1, UNSIGNED);
AddField(DELAGC_6,FRZ2_CTRL, 5, 2, UNSIGNED);
AddField(DELAGC_6,FRZ1_CTRL, 3, 2, UNSIGNED);
// DELAGC_7
AddReg(DELAGC_7,0x37, 0x30);
AddField(DELAGC_7,TIME_CST, 4, 3, UNSIGNED);
AddField(DELAGC_7,OVF_RATE_LO, 0, 4, UNSIGNED);
// DELAGC_8
AddReg(DELAGC_8,0x38, 0x00);
AddField(DELAGC_8,OVF_RATE_HI, 0, 8, UNSIGNED);
// WBAGC_0
//switch(TunerType)
//{
// case 8710 :
// AddReg(WBAGC_0,0x40, 0x1c);
// break ;
// case 8720 :
AddReg(WBAGC_0,0x40, 0x1b);
// break ;
// default:
// break ;
//}
AddField(WBAGC_0,I_REF, 0, 8, UNSIGNED);
// WBAGC_1
//switch(TunerType)
//{
// case 8710 :
// AddReg(WBAGC_1,0x41, 0xdb);
// break ;
// case 8720 :
AddReg(WBAGC_1,0x41, 0x9d);
// break ;
// default:
// break ;
//}
AddField(WBAGC_1,AGC2SD_LO, 0, 8, UNSIGNED);
// WBAGC_2
AddReg(WBAGC_2,0x42, 0x30);//0x20.0x30
AddField(WBAGC_2,AGC2SD_HI, 0, 2, UNSIGNED);
AddField(WBAGC_2,ACQ_THRESH, 2, 4, UNSIGNED);
// WBAGC_3
AddReg(WBAGC_3,0x43, 0x18);
AddField(WBAGC_3,WAGC_CLR, 6, 1, UNSIGNED);
AddField(WBAGC_3,WAGC_INV, 5, 1, UNSIGNED);
AddField(WBAGC_3,WAGC_EN, 4, 1, UNSIGNED);
AddField(WBAGC_3,WAGC_ACQ, 3, 1, UNSIGNED);
AddField(WBAGC_3,SWAP, 2, 1, UNSIGNED);
// WBAGC_4
AddReg(WBAGC_4,0x44, 0x58);//0x80,0x58
AddField(WBAGC_4,ROLL_LO, 0, 8, UNSIGNED);
// WBAGC_5
AddReg(WBAGC_5,0x45, 0x00);
AddField(WBAGC_5,ACQ_COUNT_LO, 0, 8, UNSIGNED);
// WBAGC_6
AddReg(WBAGC_6,0x46, 0x00);
AddField(WBAGC_6,ACQ_COUNT_HI, 0, 8, UNSIGNED);
// WBAGC_9
AddReg(WBAGC_9,0x49, 0x02);//0x12,0x02
AddField(WBAGC_9,ROLL_HI, 0, 8, UNSIGNED);
// WBAGC_10
AddReg(WBAGC_10,0x4A, 0x33);
AddField(WBAGC_10,IF_PWM_LO, 0, 8, UNSIGNED);
// WBAGC_11
AddReg(WBAGC_11,0x4B, 0xFF);
AddField(WBAGC_11,IF_PWM_HI, 0, 8, UNSIGNED);
// STLOOP_2
AddReg(STLOOP_2,0x52, 0x30);
AddField(STLOOP_2,GAIN_SCALE_PATH0, 5, 3, UNSIGNED);
AddField(STLOOP_2,GAIN_SCALE_PATH1, 2, 3, UNSIGNED);
AddField(STLOOP_2,INTEGRAL_GAIN_HI, 0, 2, UNSIGNED);
// STLOOP_3
AddReg(STLOOP_3,0x53, 0x08);
AddField(STLOOP_3,DIRECT_GAIN_LO, 0, 8, UNSIGNED);
// STLOOP_5
//switch(TunerType)
//{
// case 8710 :
// AddReg(STLOOP_5,0x55, 0x44);
// break ;
// case 8720 :
AddReg(STLOOP_5,0x55, 0x50);
// break ;
// default:
// break ;
//}
AddField(STLOOP_5,SYMB_RATE_0, 0, 8, UNSIGNED);
// STLOOP_6
//switch(TunerType)
//{
// case 8710 :
// AddReg(STLOOP_6,0x56, 0xdf);
// break ;
// case 8720 :
AddReg(STLOOP_6,0x56, 0xbb);
// break ;
// default:
// break ;
//}
AddField(STLOOP_6,SYMB_RATE_1, 0, 8, UNSIGNED);
// STLOOP_7
AddReg(STLOOP_7,0x57, 0x18);
AddField(STLOOP_7,SYMB_RATE_2, 0, 8, UNSIGNED);
// STLOOP_8
AddReg(STLOOP_8,0x58, 0x3d);
AddField(STLOOP_8,SYMB_RATE_3, 0, 8, UNSIGNED);
// STLOOP_9
AddReg(STLOOP_9,0x59, 0x08);
AddField(STLOOP_9,INTEGRAL_GAIN_LO, 0, 5, UNSIGNED);
AddField(STLOOP_9,DIRECT_GAIN_HI, 5, 3, UNSIGNED);
// STLOOP_10
AddReg(STLOOP_10,0x5A, 0x1E);
AddField(STLOOP_10,PHASE_EN, 6, 1, UNSIGNED);
AddField(STLOOP_10,PHASE_CLR, 5, 1, UNSIGNED);
AddField(STLOOP_10,ERR_RANGE, 0, 5, UNSIGNED);
// STLOOP_11
AddReg(STLOOP_11,0x5B, 0x04);
AddField(STLOOP_11,ALGOSEL, 4, 2, UNSIGNED);
AddField(STLOOP_11,ERR_CLR, 1, 1, UNSIGNED);
AddField(STLOOP_11,ERR_EN, 0, 1, UNSIGNED);
// CRL_0
AddReg(CRL_0,0x60, 0x13);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -