📄 tidtv_tuneralps.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 + -