📄 devtuner.h
字号:
/******************************************************************************
Copyright (c) 2005 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: DevTuner.c
[Date]: 30-JUN-2004
[Comment]:
TV tuner subroutines.
[Reversion History]:
*******************************************************************************/
#ifndef _DEVTUNER_H_
#define _DEVTUNER_H_
#ifdef _DEVTUNER_C_
#define _DEVTUNERDEC_
#else
#define _DEVTUNERDEC_ extern
#endif
//-----------------------------------------
#if (TUNER_TYPE==TUNER_XUGUANG_JS_6H1_111)
#define TN_IF_I2C_ADDR 0x86
#define TN_PROG_I2C_ADDR 0xC0
#define TN_SWITCHING_SUBADDR 0x00
#define TN_ADJUST_SUBADDR 0x01
#define TN_DATA_SUBADDR 0x02
#define SwitchDataPAL 0xd6
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0xC6
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0x16
#define AdjustDataNTSC 0x30
////////////////////////////
// Band Switching Byte
////////////////////////////
#define TN_CTL_BYTE 0xC0
#define TN_LOW_BAND 0x01
#define TN_MID_BAND 0x02
#define TN_HIGH_BAND 0x0C
////////////////////////////
// sound control byte
////////////////////////////
#define SoundPALI 0x0E
#define SoundPALDK 0x0F
#define SoundPALBG 0x0D
#define SoundPALM 0x0C
#define SoundNTSC 0x0C
#define SoundSECAML 0x0A
#define TN_READ_AFCWIN _BIT7
#define TN_FREQ_SS 50//62.5 // kHz 50.0
#define TN_FREQ_IF 38//38.9//45.75 // MHz
#define STEP_100K 2
#define STEP_200K 4
#define STEP_500K 10
#define STEPS_1M 20
////////////////////////////////
// TDA9886 Read Mode
////////////////////////////////
#define TN_READ_AFCWIN _BIT7
#define TN_READ_VIFL _BIT6
#define TN_READ_FMIFL _BIT5
#define TN_READ_AFC4 _BIT4
#define TN_READ_AFC3 _BIT3
#define TN_READ_AFC2 _BIT2
#define TN_READ_AFC1 _BIT1
#define TN_READ_PONR _BIT0
#define TN_READ_AFC (TN_READ_AFC1 | TN_READ_AFC2 | TN_READ_AFC3 | TN_READ_AFC4)
//-----------------------------------------
#elif (TUNER_TYPE==TUNER_PTI_5PF17M)
#define TN_IF_I2C_ADDR 0x86
#define TN_PROG_I2C_ADDR 0xC0
#define TN_SWITCHING_SUBADDR 0x00
#define TN_ADJUST_SUBADDR 0x01
#define TN_DATA_SUBADDR 0x02
#define SwitchDataPAL 0x56
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0x46
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0x16
#define AdjustDataNTSC 0x30
/*
#define SwitchDataPAL 0xd6
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0xC6
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0x16
#define AdjustDataNTSC 0x30
*/
////////////////////////////
// Band Switching Byte
////////////////////////////
#define TN_CTL_BYTE 0xC0
#define TN_LOW_BAND 0x01
#define TN_MID_BAND 0x02
#define TN_HIGH_BAND 0x08//0x08
////////////////////////////
// sound control byte
////////////////////////////
#define SoundPALI 0x8A
#define SoundPALDK 0x8B
#define SoundPALBG 0x89
#define SoundPALM 0x88
#define SoundNTSC 0x88
#define TN_READ_AFCWIN _BIT7
#define TN_FREQ_SS 50//62.5 // kHz 50.0
#define TN_FREQ_IF 38.9//45.75 // MHz
#define STEP_100K 2
#define STEP_200K 4
#define STEP_500K 10
#define STEPS_1M 20
////////////////////////////////
// TDA9886 Read Mode
////////////////////////////////
#define TN_READ_AFCWIN _BIT7
#define TN_READ_VIFL _BIT6
#define TN_READ_FMIFL _BIT5
#define TN_READ_AFC4 _BIT4
#define TN_READ_AFC3 _BIT3
#define TN_READ_AFC2 _BIT2
#define TN_READ_AFC1 _BIT1
#define TN_READ_PONR _BIT0
#define TN_READ_AFC (TN_READ_AFC1 | TN_READ_AFC2 | TN_READ_AFC3 | TN_READ_AFC4)
//-----------------------------------------
//-----------------------------------------
#elif (TUNER_TYPE==TUNER_XUGUANG_VFT_5A_118)
#define TN_IF_I2C_ADDR 0x86
#define TN_PROG_I2C_ADDR 0xC0
#define TN_SWITCHING_SUBADDR 0x00
#define TN_ADJUST_SUBADDR 0x01
#define TN_DATA_SUBADDR 0x02
#define SwitchDataPAL 0xd6
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0xC6
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0x16
#define AdjustDataNTSC 0x30
////////////////////////////
// Band Switching Byte
////////////////////////////
#define TN_CTL_BYTE 0xC0
#define TN_LOW_BAND 0x01
#define TN_MID_BAND 0x02
#define TN_HIGH_BAND 0x08
#define SoundSECAML 0x0A
////////////////////////////
// sound control byte
////////////////////////////
#define SoundPALI 0x40
#define SoundPALDK 0xC0
#define SoundPALBG 0x80
#define SoundPALM 0x0C
#define SoundNTSC 0x0C
#define TN_READ_AFCWIN _BIT7
#define TN_FREQ_SS 50//62.5 // kHz 50.0
#define TN_FREQ_IF 38//38.9//45.75 // MHz
#define STEP_100K 2
#define STEP_200K 4
#define STEP_500K 10
#define STEPS_1M 20
////////////////////////////////
// TDA9886 Read Mode
////////////////////////////////
#define TN_READ_AFCWIN _BIT7
#define TN_READ_VIFL _BIT6
#define TN_READ_FMIFL _BIT5
#define TN_READ_AFC4 _BIT4
#define TN_READ_AFC3 _BIT3
#define TN_READ_AFC2 _BIT2
#define TN_READ_AFC1 _BIT1
#define TN_READ_PONR _BIT0
#define TN_READ_AFC (TN_READ_AFC1 | TN_READ_AFC2 | TN_READ_AFC3 | TN_READ_AFC4)
#elif (TUNER_TYPE==TUNER_XF_6A)
#define TN_IF_I2C_ADDR 0x86
#define TN_PROG_I2C_ADDR 0xC0
#define TN_SWITCHING_SUBADDR 0x00
#define TN_ADJUST_SUBADDR 0x01
#define TN_DATA_SUBADDR 0x02
#define SwitchDataPAL 0xD6
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0x46 //0xC6 Nelson
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0xD6 //0x96 Nelson
#define AdjustDataNTSC 0x70 //0x30
////////////////////////////
// Band Switching Byte
////////////////////////////
#define TN_CTL_BYTE 0xC0
#define TN_LOW_BAND 0x01
#define TN_MID_BAND 0x02
#define TN_HIGH_BAND 0x08
////////////////////////////
// sound control byte
////////////////////////////
#define SoundPALI 0x0A
#define SoundPALDK 0x0B
#define SoundPALBG 0x09
#define SoundPALM 0x0C
#define SoundNTSC 0x08
#define SoundSECAML 0x4B
#define TN_READ_AFCWIN _BIT7
#define TN_FREQ_SS 50//62.5 // kHz 50.0
#define TN_FREQ_IF 38.9//45.75 // MHz
#define STEP_100K 2
#define STEP_200K 4
#define STEP_500K 10
#define STEPS_1M 20
////////////////////////////////
// TDA9886 Read Mode
////////////////////////////////
#define TN_READ_AFCWIN _BIT7
#define TN_READ_VIFL _BIT6
#define TN_READ_FMIFL _BIT5
#define TN_READ_AFC4 _BIT4
#define TN_READ_AFC3 _BIT3
#define TN_READ_AFC2 _BIT2
#define TN_READ_AFC1 _BIT1
#define TN_READ_PONR _BIT0
#define TN_READ_AFC (TN_READ_AFC1 | TN_READ_AFC2 | TN_READ_AFC3 | TN_READ_AFC4)
#elif (TUNER_TYPE==TUNER_LG_TALN_Z200T)
#define TN_IF_I2C_ADDR 0x86
#define TN_PROG_I2C_ADDR 0xC0
#define TN_SWITCHING_SUBADDR 0x00
#define TN_ADJUST_SUBADDR 0x01
#define TN_DATA_SUBADDR 0x02
#define SwitchDataPAL 0xd6
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0xC6
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0x16
#define AdjustDataNTSC 0x30
////////////////////////////
// Band Switching Byte
////////////////////////////
#define TN_CTL_BYTE 0xC0
#define TN_LOW_BAND 0x01
#define TN_MID_BAND 0x02
#define TN_HIGH_BAND 0x08
////////////////////////////
// sound control byte
////////////////////////////
#define SoundPALI 0x4A
#define SoundPALDK 0x4B
#define SoundPALBG 0x49
#define SoundPALM 0x48
#define SoundNTSC 0x48
#define SoundSECAML 0x0A
#define TN_READ_AFCWIN _BIT7
#define TN_FREQ_SS 50//62.5 // kHz 50.0
#define TN_FREQ_IF 38.9//45.75 // MHz
#define STEP_100K 2
#define STEP_200K 4
#define STEP_500K 10
#define STEPS_1M 20
////////////////////////////////
// TDA9886 Read Mode
////////////////////////////////
#define TN_READ_AFCWIN _BIT7
#define TN_READ_VIFL _BIT6
#define TN_READ_FMIFL _BIT5
#define TN_READ_AFC4 _BIT4
#define TN_READ_AFC3 _BIT3
#define TN_READ_AFC2 _BIT2
#define TN_READ_AFC1 _BIT1
#define TN_READ_PONR _BIT0
#define TN_READ_AFC (TN_READ_AFC1 | TN_READ_AFC2 | TN_READ_AFC3 | TN_READ_AFC4)
//-----------------------------------------
#elif (TUNER_TYPE==TUNER_LG_TALN_S200T)
#define TN_IF_I2C_ADDR 0x86
#define TN_PROG_I2C_ADDR 0xC0
#define TN_SWITCHING_SUBADDR 0x00
#define TN_ADJUST_SUBADDR 0x01
#define TN_DATA_SUBADDR 0x02
#define SwitchDataPAL 0xd6
#define AdjustDataPAL 0x70
#define SwitchDataSECAM 0xC6
#define AdjustDataSECAM 0x70
#define SwitchDataNTSC 0x16
#define AdjustDataNTSC 0x30
////////////////////////////
// Band Switching Byte
////////////////////////////
#define TN_CTL_BYTE 0xC0
#define TN_LOW_BAND 0x01
#define TN_MID_BAND 0x02
#define TN_HIGH_BAND 0x08
////////////////////////////
// sound control byte
////////////////////////////
#define SoundPALI 0x4A
#define SoundPALDK 0x4B
#define SoundPALBG 0x49
#define SoundPALM 0x48
#define SoundNTSC 0x48
#define SoundSECAML 0x0A
#define TN_READ_AFCWIN _BIT7
#define TN_FREQ_SS 50//62.5 // kHz 50.0
#define TN_FREQ_IF 38.9//45.75 // MHz
#define STEP_100K 2
#define STEP_200K 4
#define STEP_500K 10
#define STEPS_1M 20
////////////////////////////////
// TDA9886 Read Mode
////////////////////////////////
#define TN_READ_AFCWIN _BIT7
#define TN_READ_VIFL _BIT6
#define TN_READ_FMIFL _BIT5
#define TN_READ_AFC4 _BIT4
#define TN_READ_AFC3 _BIT3
#define TN_READ_AFC2 _BIT2
#define TN_READ_AFC1 _BIT1
#define TN_READ_PONR _BIT0
#define TN_READ_AFC (TN_READ_AFC1 | TN_READ_AFC2 | TN_READ_AFC3 | TN_READ_AFC4)
//-----------------------------------------
#endif
#define TN_SCAN_ERR 0xFF
#define TN_SCAN_STEP 10
#define TN_SCAN_NEXT_CH (4 * TN_FREQ_UNIT) // 4 MHz
#define TN_MANUAL_STEP (3 * TN_FREQ_UNIT) // 3 MHz
typedef struct _TunerProgramType
{
// Divide ratio:
// N = 16 * {Frf(pc) + Fif(pc)}, where (pc) is picture carrier and Frf and Fif
// are expressed in MHz.
// Fosc = N / 16 (MHz)
// N = (n13 * 2^13) + (n12 * n^12) + ... + (n1 * 2) + n0
WORD ProgDivide; // Program divider 2 byte (n14-n0)
BYTE ControlInfo1; // Control information byte 1
BYTE ControlInfo2; // Control information byte 1(P7-P0)
// BYTE AuxilliaryByte; // Auxilliary byte
}TunerProgramType;
typedef enum _TnAutoDrctType
{
TN_AUTO_TGL,
TN_AUTO_PLS,
TN_AUTO_MNS,
TN_AUTO_NONE
}TnAutoDrctType;
//////////////////////////////////////////////
// Frequency Table
// Fosc = Frf + Fif(45.75 MHz)
// N = Fosc / Fss(step-size)(kHz)
//////////////////////////////////////////////
#define TN_N(Frf) ((WORD)((Frf*1000)/TN_FREQ_SS))
#define TN_LOWBAND_END TN_N(144.25)
#define TN_MIDBAND_END TN_N(424.25)
//////////////////////////////////////////////
// Channel Information
//////////////////////////////////////////////
// Channel setting
typedef struct _TunerChSettingType
{
BYTE bSignal : 1; // signal bit
BYTE FreqOffset : 7; // frequency offset
}TunerChSettingType;
_DEVTUNERDEC_ TunerProgramType xdata g_bTunerParm;
_DEVTUNERDEC_ BOOL XDATA g_bSaveChannel;
/////////////////////////////////////
// Subroutines
/////////////////////////////////////
_DEVTUNERDEC_ void devTunerInitialize(void);
_DEVTUNERDEC_ BYTE devTunerGetStatus(BYTE ucLoopCount);
_DEVTUNERDEC_ void DevTunerWrite(WORD wFreq);
_DEVTUNERDEC_ BYTE devTunerGetStatus(BYTE ucLoopCount);
_DEVTUNERDEC_ void devTunerSetChromaToPal(void);
_DEVTUNERDEC_ void devTunerSetChromaToNtsc(void);
_DEVTUNERDEC_ void devTunerSetChromaToSECAM(void);
_DEVTUNERDEC_ void devTunerSetSoundToPalBG(void);
_DEVTUNERDEC_ void devTunerSetSoundToPalI(void);
_DEVTUNERDEC_ void devTunerSetSoundToPalDK(void);
_DEVTUNERDEC_ void devTunerSetSoundToNTSCMN(void);
_DEVTUNERDEC_ void devTunerSetSoundToSECAML(void);
_DEVTUNERDEC_ void devTunerSetAGCValue(value);
_DEVTUNERDEC_ BYTE devTunerAutoTuneFreq( WORD wOriFreq, WORD* pwResultFreq );
_DEVTUNERDEC_ void devSetSWF(BYTE ColorSoundSystem);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -