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

📄 demod_.h

📁 通过PC并口模拟I2C信号
💻 H
📖 第 1 页 / 共 3 页
字号:
#if defined(HOST_PC)					  /* PC specific parameters */
	BOOL                Repeater;         /* Is repeater enabled or not ? */
	struct stchip_Info_t *RepeaterHost;   /* Owner of the repeater */
	STCHIP_Error_t 		(*RepeaterFn)(struct stchip_Info_t *hChip,BOOL State);    /* Pointer to repeater routine */ 
	
	/* Parameters needed for non sub address devices */
	U32					WrStart;		  /* Id of the first writable register */	
	U32					WrSize;           /* Number of writable registers */	
	U32					RdStart;		  /* Id of the first readable register */
	U32					RdSize;			  /* Number of readable registers */
#endif
}
STCHIP_Info_t;


typedef STCHIP_Info_t *STCHIP_Handle_t;  /* Handle to a chip */
//-----------------------------------------------------------------

	/* structures -------------------------------------------------------------- */

    typedef struct
    {
        STCHIP_Info_t *Chip;     /* pointer to parameters to pass to the CHIP API */
        U32            NbDefVal; /* number of default values (must match number of STB0899 registers) */
        U32            *DefVal;   /* pointer to table of default values */
    } 
    STB0899_InitParams_t;



	/****************************************************************
						INIT STRUCTURES
			structure passed to the FE_STB0899_Init() function  
	 ****************************************************************/
 
	typedef struct 
	{
		STB0899_InitParams_t    *DemodSTB0899Init;  /* parameters to pass to initialize the STB0899 */
//		TUNER_InitParams_t		*TunerInit;			/* parameters to pass to initialize the Tuner	*/
        FE_STB0899_CodingStandard_t Standard; 		/* standard used : DVBS1,DVBS2						*/
        FE_STB0899_Clock_t          Clock;    		/* Clock settings */
        FE_STB0899_DataParity_t     Parity;   		/* parity of the data   */
        /* .. */
	} FE_STB0899_InitParams_t;


//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

/*	Internal error definitions	*/
typedef enum
{
	FE_IERR_NO,				/*	no error		*/
	FE_IERR_I2C,			/*	I2C error		*/
	FE_IERR_ZERODIV,		/*	division by zero	*/
	FE_IERR_PARAM,			/*	wrong parameters	*/
	FE_IERR_UNKNOWN			/*	unknown error	*/
} FE_STB0899_ErrorType_t;

typedef enum
{
	FE_LOC_NOWHERE,			/*	no location		*/
	FE_LOC_SRHINIT,			/*	in SearchInit	*/
	FE_LOC_SRHRUN,			/*	in SearchRun	*/
	FE_LOC_SRHTERM,			/*	in SearchTerm	*/
	FE_LOC_SETSR,			/*	in SetSymbolRate	*/
	FE_LOC_TIMTCST,			/*	in TimingTimeConstant	*/
	FE_LOC_DERTCST,			/*	in DerotTimeConstant	*/
	FE_LOC_DATTCST,			/*	in DataTimeConstant	*/
	FE_LOC_CHKTIM,			/*	in CheckTiming	*/
	FE_LOC_SRHCAR,			/*	in SearchCarrier	*/
	FE_LOC_SRHDAT,			/*	in SearchData	*/
	FE_LOC_CHKRNG,			/*	in CheckRange	*/
	FE_LOC_SELLPF			/*	in SelectLPF	*/
} FE_STB0899_Location_t;

typedef struct
{
	FE_STB0899_ErrorType_t Type;	/* Error type	*/
	FE_STB0899_Location_t Location;	/* Error location	*/
} FE_STB0899_InternalError_t;

typedef struct
{
	
	FE_STB0899_Polarization_t Polarization;	/*	Polarization	*/
	
	/*DVB Internal Params*/
	U32 Frequency;				/*	Transponder frequency (KHz)	*/   
	FE_STB0899_SIGNALTYPE_t	SignalType;		/*	Type of founded signal	*/
	FE_STB0899_Rate_t PunctureRate;		/*	Puncture rate found	*/
	U32 SymbolRate; 			/*	Symbol rate (Bds)	*/
	
	/*DVBS2 Internal Params*/
	FE_DVBS2_State	DVBS2SignalType;
	U32 DVBS2SymbolRate; 			/*	founded Symbol rate (Bds)	*/
	FE_DVBS2_ModCod_t ModCode;		/*	founded ModCod	*/
	BOOL Pilots;					/*	Pilots founded	*/
	FE_DVBS2_FRAME FrameLength;			/* found frame length					*/

} FE_STB0899_InternalResults_t;

/*	Internal param structure	*/ 
typedef struct
{
	STCHIP_Handle_t hDemod;		/*	Handle to the chip	*/
//	TUNER_Handle_t	hTuner;		/*	Handle to the tuner	*/
//	STCHIP_Handle_t hLnb;		/*	Handle to the chip	*/

	FE_STB0899_CodingStandard_t Standard;//僆儕僕僫儖
//	STB0899_STANDARD Standard;//掕媊曄峏丠丠


	S32		Quartz;				/*	Quartz frequency (Hz) */
	
		
	S32		Frequency,			/*	Current tuner frequency (KHz) */
			BaseFreq,			/*	Start tuner frequency (KHz) */
			SubRange,			/*	Current sub range (Hz) */
			TunerStep,			/*	Tuner step (Hz) */
			TunerOffset,		/*	Tuner offset relative to the carrier (Hz) */
			TunerBW;			/*	Current bandwidth of the tuner (Hz) */ 



	
	/*DVBS1 Params*/
	FE_STB0899_SIGNALTYPE_t State;/*	Current state of the search algorithm */
	FE_DVBS2_State	DVBS2State;

	S32		SymbolRate,			/*	Symbol rate (Bds) */
			MasterClock,		/*	Master clock frequency (Hz) */
			Mclk,				/*	Divider factor for masterclock (binary value) */
			SearchRange,		/*	Search range (Hz) */
			RollOff;			/*	Current RollOff of the filter (x100) */
		
	S16		DerotFreq,			/*	Current frequency of the derotator (Hz) */
			DerotPercent,		/*	Derotator step (in thousands of symbol rate) */
			DerotStep,			/*	Derotator step (binary value) */
			Direction,			/*	Current search direction */ 
			Tagc1,				/*	Agc1 time constant (ms) */
			Tagc2,				/*	Agc2 time constant (ms) */
			Ttiming,			/*	Timing loop time constant (ms) */
			Tderot,				/*	Derotator time constant (ms) */
			Tdata,				/*	Data recovery time constant (ms) */
			SubDir;				/*	Direction of the next sub range */
	
	
	/*DVBS2 Params*/
	
	S32 	DVBS2SymbolRate,	/*	Symbol rate (Bds) */	
			AgcGain,			/* RF AGC Gain */
			AveFrameCoarse,
			AveFramefine,
			AgcThreshold,
			FreqRange,
			CenterFreq,
			AveFrameCoarseAcq,
			AveFramefineAcq,
			AveFrameCoarseTrq,
			AveFramefineTrq;
		
	S16		AutoReacq,
			TracklockSel,
			Zigzag,
			StepSize;
	
	FE_STB0899_IQ_Inversion SpectralInv; 
	
	FE_DVBS2_Mode_t mod;
	FE_DVBS2_AcqMode AcqMode;
	FE_DVBS2_RRCAlpha_t RrcAlpha;

	/*Result and error */
	
	FE_STB0899_InternalResults_t	Results;	/* Results of the search	*/
	FE_STB0899_InternalError_t	Error;		/* Last error encountered	*/
public:
}FE_STB0899_InternalParams_t;

//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

/* Creation and destruction routines */
STCHIP_Handle_t ChipOpen(STCHIP_Info_t *hChipOpenParams);

//#include "STB0899_init.h"


class Cdemod : public CDialog
{
// 僐儞僗僩儔僋僔儑儞
public:
	void dump_register_map();
	void dvbs2_srst();
	FE_STB0899_Error_t FE_STB0899_SetMclk(FE_STB0899_Handle_t Handle, U32 Mclk, U32 ExtClk);
	void FE_STB0899_SetIterScal(STCHIP_Handle_t hChip, U32 MasterClock, U32 SymbolRate);
	STCHIP_Error_t ChipApplyDefaultValues(STCHIP_Handle_t hChip);
	void dvbs2_reset();
	void eq_srst();
	void eq_init();
	void ldpc_decorder_reset();
	void stb0899_setdata(long address, long baseaddress,long data,BOOL pointed,int size);
	void write_all_data();
	void read_all_data();
	long stb0899_getdata_with_dummy(long address, long baseaddress);
	double calculate_ldpc_ber(long ERRO_COUNT3,long ERRCTRL3);
	long stb0899_getdata_test(long address, long baseaddress);
	double tun_getfreq();
	void FE_DVBS2_ManualConfigCSM(STCHIP_Handle_t hChip,FE_DVBS2_CSMConfig_Params_t CSMParams);
	void FE_DVBS2_CSMInitialize(STCHIP_Handle_t hChip,int Pilots,FE_DVBS2_ModCod_t ModCode,U32 SymbolRate,U32 MasterClock);
	U32 FE_DVBS2_GetModCod(STCHIP_Handle_t hChip);
	FE_STB0899_Error_t FE_STB0899_Term(FE_STB0899_Handle_t Handle);
	STCHIP_Error_t ChipClose(STCHIP_Handle_t hChip);
	void update_regmap(STCHIP_Handle_t hChip);
	CString modcode_from_reg(int data);
	long stb0899_getdata(long address, long baseaddress);
	struct STATUS
	{
		BOOL lock_demod_uwp;
		BOOL lock_packet_delineator;
		long agc;//IF
		long agc2;//BB
		CString modcode;
		int spectral_inversion;
		double ldpc_ber;
		double bch_ber;
		double df;
		long TEST;
	} m_status;

//	int get_status();
	void get_status();
	BOOL status_test();
	void set_register_from_address_baseaddress();
	void set_dialog_baseaddress();
	void set_dialog_address_baseaddress_data(long address,long baseaddress,long data);
	void get_register_from_address_baseaddress();
	U16 get_RegID_from_address_baseaddress(STCHIP_Handle_t hChip,U16 Add,U16 baseaddress);
	void get_baseaddress_from_registeraddress(STCHIP_Handle_t hChip,long address,long* baseaddress);
	void stb0899_initialize_parameter_Params(FE_STB0899_SearchParams_t	*Params);
	void update_register();
	BOOL TunerGetStatus();
	void WaitTuner(int TimeOut);
	//void WaitTuner(TUNER_Handle_t hTuner,int TimeOut);
	void NextSubRange(FE_STB0899_InternalParams_t *pParams);
	int FE_DVBS2_GetUWPstate(STCHIP_Handle_t hChip,int TimeOut);
	int FE_DVBS2_GetCSMLock(STCHIP_Handle_t hChip,int TimeOut);
	FE_DVBS2_State FE_DVBS2_GetState(STCHIP_Handle_t hChip,int Timeout);
	void stb_0899_reset();
	void tun_setfreq(double freq,double baud);
	void nim_receive();
	void set_nim_reg_value_from_hChip(STCHIP_Handle_t hChip);
	void set_dialog_parameter();
	void clear_list();
	void set_list();
	void get_register();
	void set_register();
	U16 ChipGetRegIdFromAdd(STCHIP_Handle_t hChip,U16 Add);
	long reg_id_from_address(long address);
	long stb0899_demod_getdata(long address);
	void stb0899_demod_setdata(long address, long data);
	void set_dialog_address_data(long address, long data);
	void get_dialog_address_data();
	void init_combo();

//	void stb0899_set_initial_value(FE_STB0899_Handle_t *Handle);
//	void stb0899_initialize_register(FE_STB0899_Handle_t *Handle);
	void stb0899_set_initial_value(FE_STB0899_InitParams_t *Init);
//	void stb0899_initialize_register(FE_STB0899_InitParams_t *Init);


//	void stb0899_set_initial_value();
//	void stb0899_initialize_register();
	void initialize_stb0899_register();
	void bus_close();
	void bus_open();
	void message_box(CString t);
	FE_DVBS2_State FE_STB0899_DVBS2Algo(FE_STB0899_InternalParams_t *pParams);
	FE_STB0899_Error_t FE_STB0899_Search(FE_STB0899_Handle_t	Handle,FE_STB0899_SearchParams_t	*pSearch,FE_STB0899_SearchResult_t	*pResult);
//	U32* init_stv0899_register_value(U32 *DefVal);
//	void init_stv0899_register_value(U32 *DefVal);

	void STB0899_tst_main();
	void FE_STB0899_InitialCalculations_test(FE_STB0899_InternalParams_t *pParams);
	STCHIP_Handle_t STB0899_Init(STB0899_InitParams_t *InitParams);
	int FE_STB0899_GetAlpha(STCHIP_Handle_t hChip);
	U32 FE_STB0899_GetMclkFreq(STCHIP_Handle_t hChip, U32 ExtClk);
	void FE_STB0899_InitialCalculations(FE_STB0899_InternalParams_t *pParams);
//	void FE_STB0899_SetStandard(STCHIP_Handle_t hChip,STB0899_STANDARD Standard);
	void FE_STB0899_SetStandard(STCHIP_Handle_t hChip,FE_STB0899_CodingStandard_t Standard);//掕媊曄峏
	
	FE_STB0899_Handle_t FE_STB0899_Init(FE_STB0899_InitParams_t *pInit);
	U32 CalcCorrection(U32	SymbolRate,U32	MasterClock);
	U32 DVBS2CalclSymbRate(U32 SymbolRate,U32 MasterClock);
	long Log2Int(int number);
	void FE_DVBS2_AutoConfigCSM(STCHIP_Handle_t hChip);
	void FE_DVBS2_ConfigUWP(STCHIP_Handle_t hChip,FE_DVBS2_UWPConfig_Params_t UWPparams);
	void FE_DVBS2_BtrInit(STCHIP_Handle_t hChip);
	void FE_DVBS2_SetBtrLoopBW(STCHIP_Handle_t hChip, FE_DVBS2_LoopBW_Params_t LoopBW);
	void FE_DVBS2_SetSymbolRate(STCHIP_Handle_t hChip,U32 SymbolRate,U32 MasterClock);
	void FE_DVBS2_InitialCalculations(STCHIP_Handle_t hChip,FE_STB0899_DVBS2_InitParams_t *InitParams);
	U32 FE_DVBS2_GetSymbolRate(STCHIP_Handle_t hChip,U32 MasterClock);
	int FE_DVBS2_GetDataLock(STCHIP_Handle_t hChip,int TimeOut);
	void test5();
	int ChipGetFieldImage(STCHIP_Handle_t hChip,U32 FieldId);
	int ChipGetOneRegister(STCHIP_Handle_t hChip, U16 RegId);
	int ChipGetField(STCHIP_Handle_t hChip,U32 FieldId);
	STCHIP_Error_t ChipGetRegisters(STCHIP_Handle_t hChip, int FirstReg, int NbRegs);
	long PowOf2(int number);
	void FE_DVBS2_SetCarrierFreq(STCHIP_Handle_t hChip,S32 CarrierFreq,U32 MasterClock);
	void test4();
	void test3();

//	void init();
	void FE_DVBS2_Reset(STCHIP_Handle_t hChip);
	void FE_DVBS2_Reacquire(STCHIP_Handle_t hChip,FE_DVBS2_ReacquireParams_t *ReacquireParams);
	void FE_DVBS2_StartUWP(STCHIP_Handle_t hChip);
	STCHIP_Error_t ChipSetOneRegister(STCHIP_Handle_t hChip,U16 RegId,U32 Data);
	STCHIP_Error_t ChipSetFieldImage(STCHIP_Handle_t hChip,U32 FieldId, int Value);
	//message view
	CString	msg	;
	CString	message_gloval	;
	CString	string	;
	void message(CString message);
	void message_reset();
	void show_message();
	void message_add(CString message);

	I2C_RESULT I2cReadWrite(I2C_MODE mode,unsigned char ChipAddress,unsigned char *Data,int NbData);
	STCHIP_Error_t ChipSetRegisters(STCHIP_Handle_t hChip,int FirstReg, int NbRegs);
	U32 CreateMask(char NbBits, char Pos);

	//---


	STCHIP_Error_t ChipAddReg(STCHIP_Handle_t hChip,STCHIP_RegSize_t 	Size,
		U16 RegId,char * Name,U16 Address,U32 Default,STCHIP_Access_t Access,
		STCHIP_Pointed_t Pointed,U16 PointerRegAddr,U32 BaseAdress);
	void i2c_write(int *data, int num);
	BOOL Create();
	Cdemod(CWnd* pParent = NULL);   // 昗弨偺僐儞僗僩儔僋僞

// 僟僀傾儘僌 僨乕僞
	//{{AFX_DATA(Cdemod)
	enum { IDD = IDD_DIALOG_demod };
	CString	m_address;
	CString	m_data;
	CString	m_mclk;
	CString	m_xtal;
	CString	m_baseaddress;
	//}}AFX_DATA


// 僆乕僶乕儔僀僪
	// ClassWizard 偼壖憐娭悢偺僆乕僶乕儔僀僪傪惗惉偟傑偡丅
	//{{AFX_VIRTUAL(Cdemod)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 僒億乕僩
	//}}AFX_VIRTUAL

// 僀儞僾儕儊儞僥乕僔儑儞
protected:
	CWnd* m_pParent;
	int m_nID;

	// 惗惉偝傟偨儊僢僙乕僕 儅僢僾娭悢
	//{{AFX_MSG(Cdemod)
	virtual void OnOK();
	virtual void OnCancel();
	virtual BOOL OnInitDialog();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ 偼慜峴偺捈慜偵捛壛偺愰尵傪憓擖偟傑偡丅

#endif // !defined(AFX_DEMOD_H__4A527E9C_2D46_4EDA_A760_C026C8D9DCD6__INCLUDED_)

⌨️ 快捷键说明

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