# ADAS3022 code to voltage conversion

Hi,

I'm working with the ADAS3022 and would like to convert the 16 bit codes it produces into voltages. I am currently using the following formula:

V = (CODE / GAIN) * (2*VREF)/32768

This produces reasonable values, but it appears that the LSB value is double what it should be for a given PGIA gain. E.g. with a gain of 0.8, LSB = 312.5 uV.

Am I misunderstanding the way the ADC is converting values differentially? I attempted to follow the formula given in an earlier answer, but I can't quite grasp it:

((CODE-32768)/(2^15-1) = V * GAIN/VREF

## Top Replies

Parents
• Tech1,

Your LSB weight is off by a factor of 2.   (2*VREF)/((2^16-1)*0.8) = VREF/((2^15-1)*0.8 = 4.096/(32767*0.8) =  156.25uV.

That should take care of your factor of two.

Sean

• Sean,

Thanks for that. Your formula does indeed fix the factor of two error.

It seems that all single-ended inputs have to be doubled. Am I right in assuming this is due to the differential structure of the ADC?

Cheers

• Tech1,

You are close but the real reason is the output encoding as it is fixed to account for the bipolar range which gives 2x the voltage span but as a consequence the LSB weight is also 2x larger than if you could select unipolar operation.  Later products like the LTC2358 family address this limitation of the ADAS3022 by adding unipolar input ranges in addition to the bipolar input range.   The measurement is still differential but allowable input range is now fixed to positive voltages only.

Sean

• Thanks Sean. That's very helpful.