Part Number: LM98722
Hello,
I'm using an LM98722 with a CIS sensor, which reacts accordingly to the signals generated by the AFE but the output of the ADC seems to be just random noise. When I activate a test pattern on the output I got a correct value so I know the reading of the 2*8bits is OK.
Output of the CIS sensor is directly connected to the OSR input (mode 1), its value is between VRef (=0.9V) and VRef+1.2V. VRef is also connected to VCLP to serve as the black level reference. I tried to tie OSR to VRef and I still get random values instead of 0 or something close. Same with intermediate voltages.
Here is my configuration :
afe_write(0x1F,0x00); // Page 0
afe_write(0x00,0x26); // Registers unlocked (state machine stopped)
wait(500);
afe_write(0x01,0x48);//Software reset : state machine + registers
wait(500);
afe_write(0x1F,0x00); // Page 0
afe_write(0x00,0x26); //
afe_write(0x02,0x44); //
afe_write(0x03,0x80); //
afe_write(0x04,0x0F); //
afe_write(0x05,0xE0); // .
//afe_write(0x06,0x07);//test pattern
afe_write(0x1F,0x02); // Page 2
afe_write(0x00,0x04);
afe_write(0x01,0x01);//calibration active for 1 line 0xFF == infinite calibration
afe_write(0x02,0x0D);
afe_write(0x06,0x00);
afe_write(0x07,0x00);
afe_write(0x08,0x04);
afe_write(0x09,0x00);
afe_write(0x10,0x08);//mode CISa
afe_write(0x0A,0x7C);
afe_write(0x0B,0x28);
afe_write(0x0C,0xFC);
afe_write(0x0D,0x28);//line length MSB
afe_write(0x0E,0xFF);//line length LSB
afe_write(0x1B,0x01);//enable clock multiplication
afe_write(0x1C,0x00);//
afe_write(0x1D,0x03);//
afe_write(0x1F,0x03); // Page 3
afe_write(0x00,0x14);
afe_write(0x1F,0x04); // Page 4
afe_write(0x00,0x01);
afe_write(0x1F,0x05); // Page 5
afe_write(0x00,0x08);
afe_write(0x1F,0x06); // Page 6
afe_write(0x0C,0x00);
afe_write(0x0D,0x00);
afe_write(0x0E,0x00);
afe_write(0x0F,0x1F);
afe_write(0x10,0xFF);
afe_write(0x11,0xFF);
afe_write(0x1F,0x07); // Page 7
afe_write(0x0C,0xFF);
afe_write(0x1F,0x08); // Page 8
afe_write(0x02,0x40);
afe_write(0x04,0x04);//SH2 for CLKOUT
afe_write(0x05,0x04);
afe_write(0x08,0xA2);
afe_write(0x1F,0x00); // Page 0
while(!(rafe_read(0)&0x80)) {
//PLL not locked
wait(100);
read_val = afe_read(0);
}
afe_write(0x00,0x27);//master
//afe_write(0x00,0x25);//slave
Do you see any obvious reason for my problem ?
Thank you.