📄 tidtv_tunerxg.c
字号:
/*******************************************************************************
* @ModuleName :: TiDTV_TunerXG.c
*
* @Copyright :: Copyright 2005- Texas Instruments, Inc.
*
* @Description:: TI DTV Tuner control module for Xuguang PAL/NTSC/SECAM Tuner
*
* @History ::
*---------------------------------------
* 07-06-2005 W.Shi Created
* 07-07-2005 L.Yu Updated
*******************************************************************************/
#include <stdio.h>
#include <string.h>
#include "ucos_ii.h"
#include "TiDTV_DataType.h"
#include "TiDTV_SysCtrl.h"
#include "TVP9K_I2C_Def.h"
#include "TiDTV_Timer.h"
#define JS_6B1_I2C_CHANNEL 1
#define JS_6B1_I2C_DEVICE_ADDR1 0xC0
#define JS_6B1_I2C_DEVICE_ADDR2 0x86
#define JS_6B1_VHF_LOW 3975 // 198.75MHz * 20
#define JS_6B1_VHF_HIGH 10035 // 501.75MHz * 20
static const UINT16 TvChanFreq[] = {
995, 1155, 1315, 1545,
1705, 3365, 3525, 3685,
3845, 4005, 4165, 4325,
2245, 2405, 2565, 2725,
2885, 3045, 3205, 4485, 4645,
4805, 4965, 5125, 5285,
5445, 5605, 5765, 5925,
6085, 6245, 6405, 6565,
6725, 6885, 7045, 7205,
7365, 7525, 7685, 7845,
8005, 8165, 8325, 8485,
8645, 8805, 8965, 9125,
9425, 9585, 9745, 9905,
10065, 10225, 10385, 10545,
10705, 10865, 11025, 11185,
11345, 11505, 11665, 11825,
11985, 12145, 12305, 12465,
12625, 12785, 12945, 13105,
13265, 13425, 13585, 13745,
13905, 14065, 14225, 14385,
14545, 14705, 14865, 15025,
15185, 15345, 15505, 15665,
15825, 15985, 16145, 16305,
16465, 16625, 16785, 16945,
17105, 17365
};
static const UCHAR XgTunerInitData[][2] = {
#if defined(PAL_I)
{0x00, 0xD6}, // SWITCHING (B DATA)
{0x01, 0x71}, // ADJUST (C DATA)
{0x02, 0x0E}, // Pal D data
#elif defined(PAL_B_G)
{0x00, 0xD6}, // SWITCHING (B DATA)
{0x01, 0x71}, // ADJUST (C DATA)
{0x02, 0x0D}, // Pal D data
#elif defined(NTSC_M_N)
{0x00, 0x16}, // SWITCHING (B DATA)
{0x01, 0x31}, // ADJUST (C DATA)
{0x02, 0x0C}, // Pal D data
#else //PAL_D_K
{0x00, 0xD6}, // SWITCHING (B DATA)
{0x01, 0x71}, // ADJUST (C DATA)
{0x02, 0x0F}, // Pal D data
#endif
{0xff, 0xff}, // End mark
};
/*******************************************************************************
* @RoutineName:: TiDTV_SetTunerPhyChan
*
* @Description:: Set TV Tuner Channel
*
* @Input ::
* int TvChannel : TV Channel [1 - ???]
*
* @Output :: none
*
* @Return ::
* int : OK/NG
*******************************************************************************/
int TiDTV_SetTunerPhyChan(int TvChannel)
{
UINT16 Freq = TvChanFreq[TvChannel - 1];
UINT16 Divider = Freq + 20 * 38;
UCHAR WorkUCHAR[4];
if (TvChannel > sizeof(TvChanFreq)/sizeof(UINT16))
return TI_DTV_E_NG;
WorkUCHAR[0] = (UCHAR) ((Divider >> 8) & 0x7f);
WorkUCHAR[1] = (UCHAR) (Divider & 0xff);
WorkUCHAR[2] = 0xC8; // CP = 1, RSA=RSB=0, OS=0
if (Freq < JS_6B1_VHF_LOW)
WorkUCHAR[3] = 0x01;
else if (Freq < JS_6B1_VHF_HIGH)
WorkUCHAR[3] = 0x02;
else
WorkUCHAR[3] = 0x04;
return TiDTV_I2cWrite(JS_6B1_I2C_CHANNEL, 1, JS_6B1_I2C_DEVICE_ADDR1, 4, WorkUCHAR, OS_TICKS_PER_SEC);
}
/*******************************************************************************
* @RoutineName:: TiDTV_GetTunerPllStatus
*
* @Description:: Get Tuner PLL status
*
* @Input :: none
*
* @Output :: none
*
* @Return ::
* int : 0 = Not locked yet, 1 = Locked
*******************************************************************************/
int TiDTV_GetTunerPllStatus(void)
{
UCHAR TunerStatus;
TiDTV_I2cRead(JS_6B1_I2C_CHANNEL, 1, JS_6B1_I2C_DEVICE_ADDR1, 0, 0, 1, &TunerStatus, OS_TICKS_PER_SEC / 2);
return (TunerStatus & 0x40);
}
/*******************************************************************************
* @RoutineName:: TiDTV_InitTuner
*
* @Description:: Initialize the Tuner
*
* @Input :: none
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_InitTuner(void)
{
UCHAR (*pWorkI2cData)[2];
for (pWorkI2cData = (UCHAR (*)[2]) XgTunerInitData; (*pWorkI2cData)[0] != 0xff; pWorkI2cData++)
TiDTV_I2cWrite(JS_6B1_I2C_CHANNEL, 1, JS_6B1_I2C_DEVICE_ADDR2, 2, &((*pWorkI2cData)[0]), OS_TICKS_PER_SEC / 2);
}
/*******************************************************************************
* @RoutineName:: TiDTV_SetDtvRfChan
*
* @Description:: Set DTV RF Channel (not used for Analog TV Tuner)
*
* @Input ::
* int RfChanNo : TV Channel [2-69]
* int Retry : number of Retries
*
* @Output :: none
*
* @Return :: none
*******************************************************************************/
void TiDTV_SetDtvRfChan(int RfChanNo, int Retry)
{
}
int LGDTcheckStatus(void)
{
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -