This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TVP5158 lock问题

Other Parts Discussed in Thread: TVP5158

我写了一个TVP5158的测试程序,但是发现读出的寄存器是如下:

REG_VIDEO_STD(0x0D)=c

REG_VIDEO_STD_STATUS(0x0C)=b8

REG_STATUS1(0x00)=d

REG_STATUS2(0x01)=1

表示没有锁定啊??

我的测试程序如下所示:

int main(int argc,char**argv)

 {  int k,res,i2c_fd;  int regAddr[2];  int regVal[2];

   k=0;  regAddr[k] = 0xFE;  //write encoder core

  regVal[k]  = 0xF;

 k++;

 DRV_i2cWrite(i2c_fd, regAddr, regVal, k);

regAddr[k] = 0xBA;  //OFM_Soft_Reset  

regVal[k]  = 0x01;

 k++;

 printf("******OFM_Soft_Reset*****\n");  

DRV_i2cWrite(i2c_fd, regAddr, regVal, k);

 

 k=0;  

regAddr[k] = 0x0D; //REG_VIDEO_STD

 regVal[k]  = 0x00; //CVBS Standard

 k++;

  regAddr[k] = 0x81; //REG_CLEAR_LOST_LOCK

 regVal[k]  = 0x01; //CLEAR_LOST_LOCK

 k++;  

DRV_i2cWrite(i2c_fd, regAddr, regVal, k);

 /////////////////////////////

 k=0;

 regAddr[k] = 0xB0;  regVal[k]  = 0x00;  k++;  

regAddr[k] = 0xB1;  regVal[k]  = 0x90;  k++;

 regAddr[k] = 0xB2;  regVal[k]  = 0x25;  k++;   

regAddr[k] = 0xB3;  regVal[k]  = 0xE4;  k++;   

regAddr[k] = 0xB4;  regVal[k]  = 0xE4;  k++;   

regAddr[k] = 0xB5;  regVal[k]  = 0x00;  k++; 

 regAddr[k] = 0xB6;  regVal[k]  = 0x1B;  k++;   

regAddr[k] = 0xB7;  regVal[k]  = 0x04;  k++;  

 DRV_i2cWrite(i2c_fd, regAddr, regVal, k);

 /////////////////////////////

 ////////////////////////////

 k=0;  regAddr[k] = 0xFF; //write encoder core

 regVal[k]  = 0x1;  k++;  

DRV_i2cWrite(i2c_fd, regAddr, regVal, k);

 ////////////////////////////

 k=0;  regAddr[k] = 0x0D; //REG_VIDEO_STD  k++;

 regAddr[k] = 0x0C; //REG_VIDEO_STD_STATUS  k++;  

regAddr[k] = 0x00; //REG_STATUS1  k++;

 regAddr[k] = 0x01; //REG_STATUS2  k++;  

res = DRV_i2cRead(i2c_fd, regAddr, regVal, k);  

printf("REG_VIDEO_STD(0x0D)=%x\n",regVal[0]);  

printf("REG_VIDEO_STD_STATUS(0x0C)=%x\n",regVal[1]);

 printf("REG_STATUS1(0x00)=%x\n",regVal[2]);  

printf("REG_STATUS2(0x01)=%x\n",regVal[3])

 return 0;    

//close(i2c_fd);  }