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

📄 tidtv_tuneralps.c

📁 ti的数字电视芯片 tvp9000的源码
💻 C
字号:
/*******************************************************************************
*	@ModuleName	::	TiDTV_TunerAlps.c
*	
*	@Copyright	::	Copyright 2005- Texas Instruments, Inc.
*	
*	@Description::	TI DTV Tuner control module for Alps(TDHU2-551A)/ATI NXT2004
*	
*	@History	::
*---------------------------------------
*	06-01-2005	W.Shi	Created
*******************************************************************************/

#include	<stdio.h>
#include	<string.h>
#include	"ucos_ii.h"

#include	"TvpArch.h"
#include	"TvpDefs.h"
#include	"Tvp9000.h"
#include	"TvpError.h"
#include	"TvpInt.h"
#include	"TvpHdm.h"
#include	"TvpInt926.h"
#include	"TvpUarts.h"
#include	"TvpEbi.h"
#include	"TvpTpp.h"
#include	"TvpIrrf.h"
#include	"TvpGpio.h"
#include	"TvpVideo.h"
#include	"TvpAudio.h"
#include	"TvpEncoder.h"
#include	"TvpI2c.h"
#include	"TvpTimer.h"
#include	"TvpSdTables.h"
#include	"TvpSdram.h"
#include	"TvpSystem.h"

#include	"TiDTV_DataType.h"
#include	"TVP9K_I2C_Def.h"
#include	"TiDTV_SysCtrl.h"
#include	"TiDTV_Timer.h"

#include	"TiDTV_Tuner.h"

#define	TDHU2_551A_I2C_CHANNEL		TVP_I2C_1
#define	TDHU2_551A_I2C_DEVICE_ADDR	0xC2

static const UINT8 TvChanFreq[82][2] = {
	 {6, 80},   {6, 176}, {7, 16}, {7, 176}, {8, 16}, {13, 208}, {14, 48}, {14, 144}, {14, 240}, {15, 80}, 		//# channel  2-11	#//
	{15, 176}, {16, 16}, {32, 80}, {32, 176}, {33, 16}, {33, 112}, {33, 208}, {34, 48}, {34, 144}, {34, 240}, 	//# channel 12-21	#//
	{35, 80}, {35, 176}, {36, 16}, {36, 112}, {36, 208}, {37, 48}, {37, 144}, {37, 240}, {38, 80}, {38, 176}, 	//# channel 22-31	#//
	{39, 16}, {39, 112}, {39, 208}, {40, 48}, {40, 144}, {40, 240}, {41, 80}, {41, 176}, {42, 16}, {42, 112},	//# channel 32-41	#//
	{42, 208}, {43, 48}, {43, 144}, {43, 240}, {44, 80}, {44, 176}, {45, 16}, {45, 112}, {45, 208}, {46, 48}, 	//# channel 42-51	#//
	{46, 144}, {46, 240}, {47, 80}, {47, 176}, {48, 16}, {48, 112}, {48, 208}, {49, 48}, {49, 144}, {49, 240}, 	//# channel 52-61	#//
	{50, 80}, {50, 176}, {51, 16}, {51, 112}, {51, 208}, {52, 48}, {52, 144}, {52, 240}, {53, 80}, {53, 176},	//# channel 62-71	#//
	{54, 16}, {54, 112}, {54, 208}, {55, 48}, {55, 144}, {55, 240}, {56, 80}, {56, 176}, {57, 16}, {57, 112}, 	//# channel 72-81	#//
	{57, 208}, {58, 48}																							//# channel 82-83	#//
};

/*******************************************************************************
*	@RoutineName:: TiDTV_SetTunerPhyChan
*
*	@Description:: Set TV Tuner Channel
*
*	@Input		::
*		int TvChannel	: TV Channel [2-69]
*
*	@Output		:: none
*
*	@Return		::
*		int		: OK/NG
*******************************************************************************/
int TiDTV_SetTunerPhyChan(int TvChannel)
{
	UCHAR WorkUCHAR[4];
	
	if (2 > TvChannel || TvChannel > 69)
		return -1;	// error: out of Range !
	
	WorkUCHAR[0] = TvChanFreq[TvChannel - 2][0];	// divider Byte-1
	WorkUCHAR[1] = TvChanFreq[TvChannel - 2][1];	// divider Byte-2
	
	// Control Data-1
	WorkUCHAR[2] = 0x85;
	
	// Control Data-2
	if (TvChannel <= 5)
		WorkUCHAR[3] = 0x01;	// Band-1
	else if (TvChannel == 6)
		WorkUCHAR[3] = 0x05;	// Channel-6 (Analog)
	else if (7 <= TvChannel &&  TvChannel <= 13)
		WorkUCHAR[3] = 0x02;	// Band-2
	else if (14 <= TvChannel &&  TvChannel <= 65)
		WorkUCHAR[3] = 0x08;	// Band-3
	else
		WorkUCHAR[3] = 0x88;	// Band-4
	
	TiDTV_I2cWrite(TDHU2_551A_I2C_CHANNEL, 0, TDHU2_551A_I2C_DEVICE_ADDR, 4, WorkUCHAR, OS_TICKS_PER_SEC);
	
#ifdef _DEBUG
	TiDTV_GetTunerPllStatus();
#endif	/* _DEBUG */
	
	return 0;
}

/*******************************************************************************
*	@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(TDHU2_551A_I2C_CHANNEL, 0, TDHU2_551A_I2C_DEVICE_ADDR, 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)
{
	TvpTppFEConfig TppFeConfig;
	UINT16 Result;
	
	// Configure TPP Front End
	TppFeConfig.serial = 1;
	TppFeConfig.dclk_active_edge = 1;
	TppFeConfig.pacval_polarity = 1;
	TppFeConfig.bytestrt_polarity = 1;
	TppFeConfig.derror_polarity = 0;
	TppFeConfig.serial_lsb_first = 0;
	TppFeConfig.serial_bitsel = 0;
	TppFeConfig.framer_enable = 1;
	TppFeConfig.parser_ctrl = 0;
	tvpTppInputConfig(&TppFeConfig);
	
	// Initialize the Driver: Only one Nxt2004 is used
//	Result = NxtInit2004Driver(NULL);
	
	// set FAT AGC data
//	Result = NxtSetFatAgcData(NULL, m_pFatAgcData);
	
	// set FAT AGC Polarity
//	Result = NxtSetFatAgcSdmPolarity(NULL,);
	
	// set MPEG modes
//	Result = NxtSetMPegMode(NULL, FALSE, TRUE, FALSE, TRUE);
	
	// set MPEG polarities
//	Result = NxtSetMpegPolarity(NULL, NON_INVERTED, NON_INVERTED, INVERTED, NON_INVERTED);
		
#ifdef	_DEBUG
{
//	NxtModFormat_t mode;
	
//	NxtGetFatModFormat(NULL, &mode);
}
#endif	/* _DEBUG */
}

/*******************************************************************************
*	@RoutineName:: TiDTV_SetTuner
*
*	@Description:: Set Tuner
*
*	@Input		::
*		UCHAR TvChannel	: TV Channel [2-69]
*
*	@Output		:: none
*
*	@Return		:: none
*******************************************************************************/
void TiDTV_SetTuner(UCHAR TvChannel)
{
	TI_DTV_CHAN_STATUS *pTvChanStatus = TiDTV_SysCtrl.ChanStatus + TvChannel - TI_DTV_MIN_PHY_CHANNEL_NO;
	UINT16 Result;
	
	pTvChanStatus->Bits.Locked = 0;	// Locked/Not-locked flag
	
	// Stop current acquisition before tuning a new channel
//	Result = NxtStop(NULL, NXT_STOP_FAT);
	
	// switch the host IIC to the auxiliary IIC
//	Result = NxtIicBypass(NULL, NXT_IIC_BYPASS);
	
	// use the Tuner Driver to set the PHY channel
	Result = TiDTV_SetTunerPhyChan(TvChannel);
	
	// switch the host IIC off the auxiliary IIC
//	Result = NxtIicBypass(NULL, NXT_IIC_UC_CONTROL);
	
	// start digital channel acquisition
//	Result = NxtStart(NULL, NXT_CONFIG_8VSB, &Result);	// 8VSB Channels
}

⌨️ 快捷键说明

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