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

📄 regmapinit.tms

📁 stv0297 寄存器 tuner 驱动 5105 方案
💻 TMS
📖 第 1 页 / 共 2 页
字号:
/*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 + -