ix2273drv.c
来自「QPSK Tuner details, for conexant chipset」· C语言 代码 · 共 171 行
C
171 行
/*************************************************************************
* IX2273DRV.C *
* Copyright ? Shenzhen Coship Electronics Co.#,LTD. 2002.3 *
* All rights reserved. *
* *
* Author: Zhou Cheng *
* Date: 2002/3/13 *
* Compiler: *
* *
* Description: PLL IC IX2273 Driver ( used in SHARP1173 Tuner ) *
* Notes: *
* Update: 2002/3/6 Zhou Cheng *
*************************************************************************/
// For 1173 Tuner
#include "CSQpskCFG.h"
#include "cs_typedef.h"
#include "CSHDI_typedef.h"
#include "cs_i2c.h"
#include "cs_os.h"
#include "IX2273DRV.h"
#include "cs_frnpublic.h"
#define TUNER_IF 0
#define TUNE_STEP 125
#define TUNELIMIT_LOW 900000 // KHz 9f8qJiION*(950M - 2150M)
#define TUNELIMIT_HIGH 2200000 // KHz Ub@oJJ517E?m
#define BANDFREQREF 1450000 // KHz
#define IX2273ADDR 0xc0
#define PLLLOCK_MASK 0x40
#define PLLLOCK_FLAG 0x40
static HCSHANDLE hIX2273I2C[MAX_TUNER_NUM];
//ADD BY SFG FOR COMPILER
extern CSQPSK_Error_t STV0299EnableTunerI2C ( CSHDITunerIndex bTunerIndex );
extern CSQPSK_Error_t STV0299DisableTunerI2C (CSHDITunerIndex bTunerIndex);
//add end
CSQPSK_Error_t IX2273Init(CSHDITunerIndex bTunerIndex)
{
int ErrorCode;
hIX2273I2C[bTunerIndex] = 0;
ErrorCode = CSI2COpen(bTunerIndex,IX2273ADDR,&hIX2273I2C[bTunerIndex]);
if (ErrorCode != CSI2C_SUCCESS)
{
return CSQPSK_I2C_ERROR;
}
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t IX2273Term(CSHDITunerIndex bTunerIndex)
{
int ErrorCode;
ErrorCode = CSI2CClose(hIX2273I2C[bTunerIndex]);
if (ErrorCode != CSI2C_SUCCESS)
{
return CSQPSK_I2C_ERROR;
}
return CSQPSK_SUCCESS;
}
/* +==========================================================================+ */
/* | Function: IhVC TUNER 5wP3F5BJ | */
/* | Input: | */
/* | Output: N^ | */
/* | Return: 2YWw3I9&1jV> | */
/* +==========================================================================+ */
CSQPSK_Error_t IX2273WrtFreq( CSHDITunerIndex bTunerIndex,BYTE *pbTune ,DWORD dwDataLen)
{
int ErrorCode;
if ( CSI2CRequestBus_inner(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
{
STV0299EnableTunerI2C(bTunerIndex);
ErrorCode = CSI2CWriteWithStop ( hIX2273I2C[bTunerIndex], pbTune, dwDataLen ) ;
STV0299DisableTunerI2C(bTunerIndex);
CSI2CReleaseBus_inner(bTunerIndex);
if ( ErrorCode == CSI2C_SUCCESS )
{
return CSQPSK_SUCCESS;
}
}
return CSQPSK_I2C_ERROR;
}
/* +==========================================================================+ */
/* | Function: <l2b TUNER PLL W4L, | */
/* | Input: N^ | */
/* | Output: 6A3v5DJ}>] | */
/* | Return: 0 -- PLL Lost Lock, 1 -- PLL Lock | */
/* +==========================================================================+ */
CSQPSK_Error_t IX2273GetPLLStatus ( CSHDITunerIndex bTunerIndex, int *pnPllLock )
{
int nResult;
BYTE bValue;
if ( CSI2CRequestBus_inner(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
{
STV0299EnableTunerI2C(bTunerIndex);
nResult = CSI2CReadWithStop ( hIX2273I2C[bTunerIndex], &bValue, 1 ) ;
STV0299DisableTunerI2C(bTunerIndex);
CSI2CReleaseBus_inner(bTunerIndex);
if ( nResult == CSI2C_SUCCESS )
{
if (( bValue & PLLLOCK_MASK ) == PLLLOCK_FLAG )
*pnPllLock = TRUE;
else
*pnPllLock = FALSE;
return CSQPSK_SUCCESS;
}
}
return CSQPSK_I2C_ERROR;
}
/* +==========================================================================+ */
/* | Function: IhVC TUNER 5wP3F5BJ | */
/* | Input: F5BJ (KHzN*5%N;) | */
/* | Output: N^ | */
/* | Return: 2YWw3I9&1jV> | */
/* +==========================================================================+ */
CSQPSK_Error_t IX2273SetFreq( CSHDITunerIndex bTunerIndex,DWORD dwTuneFreq)
{
BYTE pbValue[4], bTemp;
DWORD dwFrequency;
pbValue[2] = 0x95;
if ( dwTuneFreq < BANDFREQREF )
pbValue[3] = 0x88;
else
pbValue[3] = 0x80;
dwFrequency = ( dwTuneFreq + TUNER_IF ) / TUNE_STEP ;
pbValue[0] = (BYTE)( ( dwFrequency >> 8 ) & 0x7F );
pbValue[1] = (BYTE)( dwFrequency & 0xFF );
bTemp = (BYTE)( ( dwFrequency >> 15 ) & 0x3 );
pbValue[2] |= ( bTemp << 5 );
return ( IX2273WrtFreq ( bTunerIndex,pbValue ,4 ) ) ;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?