📄 tunertest.c
字号:
/* Functions -------------------------------------------------------------- */
static U8 DefVal[][2] = {
{ 0x0006,0x0f},{ 0x0002,0x40},{ 0x0003,0x00},{ 0x0004,0x00},{ 0x0005,0x10},
{ 0x0007,0x00},{ 0x000a,0x00},{ 0x000b,0x00},{ 0x000e,0x00},{ 0x000f,0x00},
{ 0x0010,0x77},{ 0x0011,0x50},{ 0x0012,0x00},{ 0x0013,0x03},{ 0x0014,0x5a},
{ 0x0015,0x00},{ 0x0016,0xff},{ 0x0017,0x0b},{ 0x0018,0x99},{ 0x0019,0x09},
{ 0x001a,0x68},{ 0x001b,0x0e},{ 0x0020,0x67},{ 0x0021,0x0e},{ 0x0022,0xff},
{ 0x0023,0x03},{ 0x0024,0x00},{ 0x0025,0x89},{ 0x0026,0x50},{ 0x0027,0x55},
{ 0x0028,0xf6},{ 0x0029,0xf0},{ 0x002a,0x97},{ 0x002b,0x20},{ 0x002c,0x0d},
{ 0x002d,0x01},{ 0x0030,0xfe},{ 0x0031,0xff},{ 0x0032,0x0f},{ 0x0033,0x00},
{ 0x0034,0x0f},{ 0x0035,0x32},{ 0x0036,0x46},{ 0x0037,0x7a},{ 0x0038,0x89},
{ 0x0039,0x5e},{ 0x003a,0x7f},{ 0x003b,0x02},{ 0x003c,0x0d},{ 0x003d,0x82},
{ 0x0040,0x90},{ 0x0041,0x66},{ 0x0042,0x80},{ 0x0043,0xba},{ 0x0044,0x2f},
{ 0x0045,0xbf},{ 0x0046,0x2d},{ 0x0047,0x0d},{ 0x0048,0x20},{ 0x0049,0x16},
{ 0x004a,0xd2},{ 0x004b,0x46},{ 0x004c,0x54},{ 0x004d,0xd8},{ 0x004e,0x91},
{ 0x004f,0x4c},{ 0x0050,0xc4},{ 0x0051,0xe4},{ 0x0052,0x48},{ 0x0053,0x55},
{ 0x0054,0x3b},{ 0x0055,0x47},{ 0x0056,0x00},{ 0x0057,0x85},{ 0x0058,0x28},
{ 0x0064,0x20},{ 0x0070,0x28},{ 0x0071,0x44},{ 0x0072,0x22},{ 0x0073,0x03},
{ 0x0074,0x04},{ 0x0075,0x11},{ 0x0076,0x20},{ 0x0080,0xb0},{ 0x0081,0x08},
{ 0x0083,0x00},{ 0x0084,0x00},{ 0x0085,0x23},{ 0x0086,0x00},{ 0x0087,0x00},
{ 0x0088,0x00},{ 0x0089,0x32},{ 0x0097,0x00},{ 0x009b,0x06},{ 0x009e,0x00},
{ 0x009f,0x00},{ 0x00a4,0xc3},{ 0x00a5,0x80},{ 0x00a8,0x00},{ 0x00a9,0x00},
{ 0x00aa,0x36},{ 0x00ab,0xaa},{ 0x00ac,0x00},{ 0x00ae,0x63},{ 0x00af,0xdf},
{ 0x00b0,0x88},{ 0x00b1,0x41},{ 0x00b2,0xc1},{ 0x00b3,0xa7},{ 0x00b4,0x06/*CTR_INC_GAIN=1*/},
{ 0x00b5,0x95},{ 0x00b6,0xe2},{ 0x00b7,0x20},{ 0x00b8,0x00},{ 0x00b9,0x00},
{ 0x00ba,0x00},{ 0x00bb,0x00},{ 0x00bc,0x40},{ 0x00bd,0x90},{ 0x00be,0x99},
{ 0x00c0,0x82},{ 0x00c1,0x82},{ 0x00c2,0x12},{ 0x00c3,0x10},{ 0x00c4,0x0d},
{ 0x00c5,0x82},{ 0x00c6,0x82},{ 0x00c7,0x82},{ 0x00c8,0x16},{ 0x00c9,0x18},
{ 0x00d8,0x0E},{ 0x00d9,0x0b},{ 0x00da,0x88},{ 0x00db,0x02},{ 0x00e4,0x03},
{ 0x00e5,0x06},{ 0x00e8,0x81},{ 0x00e9,0x24},{ 0x00ea,0x00},{ 0x00ec,0x01},
{ 0x00ed,0xc6},{ 0x00ef,0x43},{ 0x00f0,0x00},{ 0x00f1,0x00},{ 0x00f2,0x00},
{ 0x00f3,0x00},{ 0x006d,0x20},{0xFF, 0xFF}
};
/*Read Register Value of STV0297e*/
static ST_ErrorCode_t demodf_Read( STI2C_Handle_t hdlDemod, U8 bRegAddr, U8 *pbReadBuf, U32 dwReadNum)
{
ST_ErrorCode_t Error = ST_NO_ERROR;
U32 dwActLen;
Error = STI2C_Write(hdlDemod, &bRegAddr, 1, 1000, &dwActLen);
if (Error != ST_NO_ERROR)
{
printf("[demodf_Read]STI2C_Write Failure, Error code: 0x%x\n", Error);
return Error;
}
Error = STI2C_Read(hdlDemod, pbReadBuf, dwReadNum, 1000, &dwActLen);
if (Error != ST_NO_ERROR)
{
printf("[demodf_Read]STI2C_Read Failure, Error code: 0x%x\n", Error);
return Error;
}
return ST_NO_ERROR;
}
/*Write Register Value of STV0297e*/
static ST_ErrorCode_t demodf_Write( STI2C_Handle_t hdlDemod, U8 bRegAddr, U8 *pbWriteBuf, U32 dwWriteNum)
{
ST_ErrorCode_t Error = ST_NO_ERROR;
U32 dwActLen;
U8 pbTmp[100];
pbTmp[0] = bRegAddr;
memcpy(&pbTmp[1], pbWriteBuf, dwWriteNum);
Error = STI2C_Write(hdlDemod, pbTmp, dwWriteNum+1, 1000, &dwActLen);
if (Error != ST_NO_ERROR)
{
printf("[demodf_Write]I2CF_Write Failure, Error code: 0x%x\n", Error);
return Error;
}
return ST_NO_ERROR;
}
static ST_ErrorCode_t demodf_SetRegister( STI2C_Handle_t hdlDemod, U8 bRegAddr, U8 bRegValue)
{
return demodf_Write(hdlDemod, bRegAddr, &bRegValue, 1);
}
static ST_ErrorCode_t demodf_GetRegister( STI2C_Handle_t hdlDemod, U8 bRegAddr, U8 *pbRegValue)
{
return demodf_Read(hdlDemod, bRegAddr, pbRegValue, 1);
}
static ST_ErrorCode_t demodf_SetRegField( STI2C_Handle_t hdlDemod, U8 bRegAddr, U8 bFieldMask, U8 bFieldValue)
{
ST_ErrorCode_t Error = ST_NO_ERROR;
U8 bRegValue;
Error = demodf_Read(hdlDemod, bRegAddr, &bRegValue, 1);
if (Error != ST_NO_ERROR)
return Error;
printf("demodf_SetRegField: Reg%02x, %x\n", bRegAddr, bRegValue);
bRegValue &= ~bFieldMask;
bRegValue |= bFieldValue;
return demodf_Write(hdlDemod, bRegAddr, &bRegValue, 1);
}
ST_ErrorCode_t TunerTest( void )
{
ST_ErrorCode_t Error = ST_NO_ERROR;
U8 bRegAddr, bRegValue, bChipId;
STI2C_OpenParams_t sOpenParams;
STI2C_Handle_t DemodHandle;
STI2C_Handle_t TunerHandle;
U32 dwActLen;
int iCounter;
sOpenParams.AddressType = STI2C_ADDRESS_7_BITS;
sOpenParams.BusAccessTimeOut = 100;
sOpenParams.I2cAddress = 0x38;
Error = STI2C_Open(I2C_DeviceName[0], &sOpenParams, &DemodHandle);
if (Error != ST_NO_ERROR)
{
printf("[Demod]STI2C_Open Failure, Error code: 0x%x\n", Error);
return Error;
}
sOpenParams.AddressType = STI2C_ADDRESS_7_BITS;
sOpenParams.BusAccessTimeOut = 100;
sOpenParams.I2cAddress = 0xC0;
Error = STI2C_Open(I2C_DeviceName[0], &sOpenParams, &TunerHandle);
if (Error != ST_NO_ERROR)
{
printf("[Tuner]STI2C_Open Failure, Error code: 0x%x\n", Error);
return Error;
}
/* Reset chip */
Error = demodf_SetRegister(DemodHandle, 0x02, 0x42);
Error += demodf_SetRegister(DemodHandle, 0x42, 0x40);
Error += demodf_GetRegister(DemodHandle, 0x00, &bChipId);
if (Error != ST_NO_ERROR)
{
printf("[Demod]demodf_SetRegister Failure, Error code: 0x%x\n", Error);
return Error;
}
if ( (bChipId & 0xF0) != 0x10)
{
printf("[STV0297eF_Open] fail device not found (0x%02x)\n", bChipId);
return(ST_ERROR_UNKNOWN_DEVICE);
}
else
{
printf("[STV0297eF_Open] device found, release/revision=%u\n", bChipId & 0x0F);
}
iCounter = 0;
while(1)
{
bRegAddr = DefVal[iCounter][0];
bRegValue = DefVal[iCounter][1];
iCounter++;
if (0xFF == bRegAddr)
break;
demodf_SetRegister(DemodHandle, bRegAddr, bRegValue);
}
demodf_SetRegField(DemodHandle, 0x05, 0x08, 0x08);
demodf_SetRegField(DemodHandle, 0x05, 0x04, 0x04);
demodf_SetRegister(DemodHandle, 0x06, 0x1c);
demodf_SetRegField(DemodHandle, 0x05, 0x04, 0);
iCounter = 0;
while(iCounter++<10)
{
demodf_GetRegister(DemodHandle, 0x05, &bRegValue);
if((bRegValue & 0x80) == 0)
break;
task_delay(6250 ); /*1 msec delay*/
}
/*if (ChipGetField(Instance->IOHandle,F297e_PLL_LOCK) == 0)*/
printf("[Demod]PLL Locked\n");
demodf_SetRegField(DemodHandle, 0x05, 0x08, 0);
Error = demodf_SetRegField(DemodHandle, 0x04, 0x80, 0x80);
if (Error != ST_NO_ERROR)
{
printf("[Demod]demodf_SetRegister Failure, Error code: 0x%x\n", Error);
return Error;
}
bRegAddr = 0x00;
printf("[Tuner]STI2C_WriteNoStop\n");
Error = STI2C_WriteNoStop(TunerHandle, &bRegAddr, 1, 100, &dwActLen);
if (Error != ST_NO_ERROR)
{
printf("[Tuner]STI2C_WriteNoStop Failure, Error code: 0x%x\n", Error);
task_delay(10000);
return Error;
}
printf("[Tuner]STI2C_Read\n");
Error = STI2C_Read(TunerHandle, &bChipId, 1, 100, &dwActLen);
if (Error != ST_NO_ERROR)
{
printf("[Tuner]STI2C_Read Failure, Error code: 0x%x\n", Error);
task_delay(10000);
return Error;
}
printf("bChipId = %x\n", bChipId);
task_delay(10000);
return ST_NO_ERROR;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -