7710 에서(cut2.1 & cut3.1) 튜너의 튜닝문제에 대한 문제점 및 해결방안에 대해서 정리했다.
현재 7710 cut3.1 까지는 LG tunner(모델명 : TDVS-H061P 2004.12.23) 를 사용한다. 이 튜너는 HDT HD 보드에도 동일하게 사용하고 있다.

문제점

기존의 DAC5000 에서 사용했던 H/W Debugging 프로그램을 DACS7000 용으로 포팅해서 테스트 했다. 아래는 처음에 특정 주소에 값을 쓴 뒤에 값을 읽어서 제대로 동작하는지 테스트하는 루틴이다.

void i2cTunerInit ( void )
	{
 
	U8	temp8, temp9,temp10,temp11;   //2004.01.08
	STI2C_OpenParams_t  OpenParams;
 
	U8	 TunerB[6]=0;
 
	TunerB[0]=44 ;
	TunerB[1]=144;
	TunerB[2]=134;
	TunerB[3]=4;
 
	printf("\nLG VSB TUNNER TEST START\n");
 
 
//SCL1,SDA1
	OpenParams.I2cAddress        = SS_MT2111_TUNER;
	OpenParams.AddressType       = STI2C_ADDRESS_7_BITS;
	OpenParams.BusAccessTimeOut  = 100000;
	STI2C_Open(I2C_DeviceName[I2C_3125_SC0], &OpenParams, &SS_MT2111_Handle);
 
	OpenParams.I2cAddress        = SS_OOB_DOWN_TUNER;
	OpenParams.AddressType       = STI2C_ADDRESS_7_BITS;
	OpenParams.BusAccessTimeOut  = 100000;
	STI2C_Open(I2C_DeviceName[I2C_3125_SC0], &OpenParams, &SS_OOB_DOWN_Handle);
 
//lgtuner
	OpenParams.I2cAddress        = tunerAddr;
	OpenParams.AddressType       = STI2C_ADDRESS_7_BITS;
	OpenParams.BusAccessTimeOut  = 100000;
	STI2C_Open(I2C_DeviceName[I2C_3125_SC0], &OpenParams, &LGtuner_Handle);
 
//lgt3302
	OpenParams.I2cAddress        = chipAddr;
	OpenParams.AddressType       = STI2C_ADDRESS_7_BITS;
	OpenParams.BusAccessTimeOut  = 100000;
	STI2C_Open(I2C_DeviceName[I2C_3125_SC0], &OpenParams, &LGDT3303I2C_chip_Handle);
 
 
writeOneByteforQAM(chipAddr, 0x00, 0xaa);
readOneByteforQAM(chipAddr,0x00, &temp8);
printf("\nfirst_value == 0x%X", temp8);
 
 
writeOneByteforQAM(chipAddr, 0x0d, 0xbb);
readOneByteforQAM(chipAddr,0x0d, &temp9);
printf("\nfirst_value == 0x%X", temp9);
 
 
writeMoreByteforQAM(tunerAddr, TunerB[0], &TunerB[1], 3);
readOneByteforQAM(tunerAddr, 0xc2, &temp10);
 
printf("\nfirst_value == 0x%X", temp10);
 
 
if(temp8 == 0x03 && temp9 == 0x40 && temp10 == 0x7a)
{
	printf("\nLG VSB TUNER [OK]\n");
}else
{
	printf("\nLG VSB TUNER [FAIL]\n");
}
}

테스트 결과, 모두 0x0 값이 나오거나, 전혀 엉뚱한 값이 나왔다. 또한 튜너에서 튜닝되어 나가는 신호('VSBIN_DATA') 를 찍어봐도, 신호가 나오지 않았다.

해결 방안

해결은 간단했다. 기존의 HDT HD 회로에서 7710 으로 바뀌면서 GPIO 핀인 VSB_RESET 의 위치가 바뀌었다. 또한 위의 테스트 루틴을 하기 전에 H/W RESET 을 수행하지 않고 바로 R/W 를 하기 때문에 처음 값은 0x0 이 나왔다. 리셋하는 루틴을 넣고 수행했더니, 제대로 된 값이 R/W 되었고 'VSBIN_DATA' 핀에서 신호가 나왔다.
수정해야 할 부분은 아래와 같다.

void VSB_Tuner_Reset() //PIO 5_1
{
	ST_ErrorCode_t      Err=ST_NO_ERROR;
	STPIO_OpenParams_t OpenParams;
	STPIO_Handle_t		HandlePIO;	
	OpenParams.ReservedBits     = PIO_BIT_5;
	OpenParams.BitConfigure[5]  = STPIO_BIT_OUTPUT;
	OpenParams.IntHandler         = NULL;
 
	STPIO_Open(PIO_DeviceName[2], &OpenParams, &HandlePIO);//init = PIO[0-6], opened PIO = PIO_DEVICE_3
 
	STPIO_Clear(HandlePIO, PIO_BIT_5);
 
	task_delay(78);
 
	STPIO_Set(HandlePIO, PIO_BIT_5);
 
	task_delay(78);
 
	STPIO_Clear(HandlePIO, PIO_BIT_5);
 
	task_delay(78);
 
	STPIO_Set(HandlePIO, PIO_BIT_5);
 
	STPIO_Close(HandlePIO);
}
//  tuner test start!!
 
printf("\n ===== NIM Test Mode Start=====\n");
//	Init_Tuner();
//	nimInit ();
         VSB_Tuner_Reset();     // 추가할 것!!
	i2cTunerInit();	
	task_delay(TICKS_SECOND);
	OnRun(579000000, 4);
	//initEprom();
 
//	nimRtn = nimTuneFATfreq(3, 579000000, 4, 500);//SBS:579M,KBS2:585M,KBS1:573M,MBC:597M
printf("\n ===== Tunning Result(Digital Channel) = %d =====\n", nimRtn);
  • computer/digitalarena/7710_tunner_뚫기.txt
  • Last modified: 3 years ago
  • by likewind