ADAS3022 code to voltage conversion


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

Thanks for your help

Parents Reply
  • 0
    •  Analog Employees 
    •  Super User 
    on May 11, 2021 4:27 PM in reply to 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.