我写了一个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); }