mirror of
https://github.com/rtlsdrblog/rtl-sdr-blog.git
synced 2024-11-12 21:42:52 +01:00
d64c969bd6
We now use Hz instead of KHz for calculating the PLL parameters, and use the actual crystal frequency in Hz, which allows to correct the frequency error in ppm. Signed-off-by: Steve Markgraf <steve@steve-m.de>
196 lines
3.8 KiB
C
196 lines
3.8 KiB
C
#ifndef _R820T_TUNER_H
|
|
#define _R820T_TUNER_H
|
|
|
|
#define R820T_I2C_ADDR 0x34
|
|
#define R820T_CHECK_ADDR 0x00
|
|
#define R820T_CHECK_VAL 0x69
|
|
|
|
#define R820T_IF_FREQ 3570000
|
|
|
|
//***************************************************************
|
|
//* INCLUDES.H
|
|
//***************************************************************
|
|
#define VERSION "R820T_v1.49_ASTRO"
|
|
#define VER_NUM 49
|
|
|
|
#define USE_16M_XTAL FALSE
|
|
#define R828_Xtal 28800
|
|
|
|
#define USE_DIPLEXER FALSE
|
|
#define TUNER_CLK_OUT TRUE
|
|
|
|
#ifndef _UINT_X_
|
|
#define _UINT_X_ 1
|
|
typedef unsigned char UINT8;
|
|
typedef unsigned short UINT16;
|
|
typedef unsigned int UINT32;
|
|
#endif
|
|
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
|
|
#define FUNCTION_SUCCESS 0
|
|
#define FUNCTION_ERROR -1
|
|
|
|
typedef enum _R828_ErrCode
|
|
{
|
|
RT_Success,
|
|
RT_Fail
|
|
}R828_ErrCode;
|
|
|
|
typedef enum _Rafael_Chip_Type //Don't modify chip list
|
|
{
|
|
R828 = 0,
|
|
R828D,
|
|
R828S,
|
|
R820T,
|
|
R820C,
|
|
R620D,
|
|
R620S
|
|
}Rafael_Chip_Type;
|
|
//----------------------------------------------------------//
|
|
// R828 Parameter //
|
|
//----------------------------------------------------------//
|
|
|
|
extern UINT8 R828_ADDRESS;
|
|
|
|
#define DIP_FREQ 320000
|
|
#define IMR_TRIAL 9
|
|
#define VCO_pwr_ref 0x02
|
|
|
|
extern UINT32 R828_IF_khz;
|
|
extern UINT32 R828_CAL_LO_khz;
|
|
extern UINT8 R828_IMR_point_num;
|
|
extern UINT8 R828_IMR_done_flag;
|
|
extern UINT8 Rafael_Chip;
|
|
|
|
typedef enum _R828_Standard_Type //Don't remove standand list!!
|
|
{
|
|
NTSC_MN = 0,
|
|
PAL_I,
|
|
PAL_DK,
|
|
PAL_B_7M, //no use
|
|
PAL_BGH_8M, //for PAL B/G, PAL G/H
|
|
SECAM_L,
|
|
SECAM_L1_INV, //for SECAM L'
|
|
SECAM_L1, //no use
|
|
ATV_SIZE,
|
|
DVB_T_6M = ATV_SIZE,
|
|
DVB_T_7M,
|
|
DVB_T_7M_2,
|
|
DVB_T_8M,
|
|
DVB_T2_6M,
|
|
DVB_T2_7M,
|
|
DVB_T2_7M_2,
|
|
DVB_T2_8M,
|
|
DVB_T2_1_7M,
|
|
DVB_T2_10M,
|
|
DVB_C_8M,
|
|
DVB_C_6M,
|
|
ISDB_T,
|
|
DTMB,
|
|
R828_ATSC,
|
|
FM,
|
|
STD_SIZE
|
|
}R828_Standard_Type;
|
|
|
|
extern UINT8 R828_Fil_Cal_flag[STD_SIZE];
|
|
|
|
typedef enum _R828_SetFreq_Type
|
|
{
|
|
FAST_MODE = TRUE,
|
|
NORMAL_MODE = FALSE
|
|
}R828_SetFreq_Type;
|
|
|
|
typedef enum _R828_LoopThrough_Type
|
|
{
|
|
LOOP_THROUGH = TRUE,
|
|
SIGLE_IN = FALSE
|
|
}R828_LoopThrough_Type;
|
|
|
|
|
|
typedef enum _R828_InputMode_Type
|
|
{
|
|
AIR_IN = 0,
|
|
CABLE_IN_1,
|
|
CABLE_IN_2
|
|
}R828_InputMode_Type;
|
|
|
|
typedef enum _R828_IfAgc_Type
|
|
{
|
|
IF_AGC1 = 0,
|
|
IF_AGC2
|
|
}R828_IfAgc_Type;
|
|
|
|
typedef enum _R828_GPIO_Type
|
|
{
|
|
HI_SIG = TRUE,
|
|
LO_SIG = FALSE
|
|
}R828_GPIO_Type;
|
|
|
|
typedef struct _R828_Set_Info
|
|
{
|
|
UINT32 RF_Hz;
|
|
UINT32 RF_KHz;
|
|
R828_Standard_Type R828_Standard;
|
|
R828_LoopThrough_Type RT_Input;
|
|
R828_InputMode_Type RT_InputMode;
|
|
R828_IfAgc_Type R828_IfAgc_Select;
|
|
}R828_Set_Info;
|
|
|
|
typedef struct _R828_RF_Gain_Info
|
|
{
|
|
UINT8 RF_gain1;
|
|
UINT8 RF_gain2;
|
|
UINT8 RF_gain_comb;
|
|
}R828_RF_Gain_Info;
|
|
|
|
typedef enum _R828_RF_Gain_TYPE
|
|
{
|
|
RF_AUTO = 0,
|
|
RF_MANUAL
|
|
}R828_RF_Gain_TYPE;
|
|
|
|
typedef struct _R828_I2C_LEN_TYPE
|
|
{
|
|
UINT8 RegAddr;
|
|
UINT8 Data[50];
|
|
UINT8 Len;
|
|
}R828_I2C_LEN_TYPE;
|
|
|
|
typedef struct _R828_I2C_TYPE
|
|
{
|
|
UINT8 RegAddr;
|
|
UINT8 Data;
|
|
}R828_I2C_TYPE;
|
|
//----------------------------------------------------------//
|
|
// R828 Function //
|
|
//----------------------------------------------------------//
|
|
R828_ErrCode R828_Init(void *pTuner);
|
|
R828_ErrCode R828_Standby(void *pTuner, R828_LoopThrough_Type R828_LoopSwitch);
|
|
R828_ErrCode R828_GPIO(void *pTuner, R828_GPIO_Type R828_GPIO_Conrl);
|
|
R828_ErrCode R828_SetStandard(void *pTuner, R828_Standard_Type RT_Standard);
|
|
R828_ErrCode R828_SetFrequency(void *pTuner, R828_Set_Info R828_INFO, R828_SetFreq_Type R828_SetFreqMode);
|
|
R828_ErrCode R828_GetRfGain(void *pTuner, R828_RF_Gain_Info *pR828_rf_gain);
|
|
R828_ErrCode R828_RfGainMode(void *pTuner, R828_RF_Gain_TYPE R828_RfGainType);
|
|
|
|
int
|
|
r820t_SetRfFreqHz(
|
|
void *pTuner,
|
|
unsigned long RfFreqHz
|
|
);
|
|
|
|
int
|
|
r820t_SetStandardMode(
|
|
void *pTuner,
|
|
int StandardMode
|
|
);
|
|
|
|
int
|
|
r820t_SetStandby(
|
|
void *pTuner,
|
|
int LoopThroughType
|
|
);
|
|
|
|
#endif /* _R820T_TUNER_H */
|