Document created by analog-archivist on Feb 23, 2016Last modified by carol.nelson on Jan 24, 2018
Version 2Show Document

Q

Can you get the equation of the output code and calibration register? Like the
one in below of AD7793.
Unipolar:
Data = [ (0.75*Vin*PGA_Gain/Vref) * (2^23) - (Offset_Reg-800000h) ] *
Full_Scale_Reg/400000h * 2
Bipolar:
Data = [ (0.75*Vin*PGA_Gain/Vref) * (2^23) - (Offset_Reg-800000h) ] *
Full_Scale_Reg/400000h + 800000h
The nominal values of Offset_Reg is 800000h and of Full_Scale_Reg is 555555h.
The 0.75 number will vary slightly from part-to-part because of manufacturing
tolerances.

A

The Gain register is a 24-bit number that adjusts the gain of the ADC transfer
function.
For example, if the GN0 register value is increased by +10%, then the ADC
result will also increase by +10%.
e.g. on the 2.56V range and bipolar coding, VIN=1.28V normally converts to
0xC00000.
If the GN0 register is increased by 10%, VIN=1.28V will convert to 0xC66666.

The Offset register is a little more complex to describe.
The basic function is that when the OF0 register is increased, the ADC0 DAT
register will decrease.
A value of 0x800000 in OF0 means no offset is removed.
However the weight of 1 LSB of OF0 is not equal to 1LSB of ADC0 DAT.
1 LSB of OF0 subtracts more that 1 LSB of ADC0 DAT.

This relationship is given by:  1 OF0 LSB is equal to (4 / 3.072) ADC0 DAT LSB.
This assumes that:
(i) The ADC is in Bipolar mode (the UNI bit is equal to 0)
(ii) The PGA Range is not on the +/-20mV range.
(iii) The GN0 register is at its default value, i.e. it has not been modified
by a user System-Full-Scale calibration.

If the ADC uses Unipolar coding or the PGA Range = 20mV then 1 OF0 LSB weight
is 2X bigger.
If the ADC GN0 value is modified, then the weight of 1 OF0 LSB changes, because
the Gain scaling occurs after the ADC output is adjusted by the OF0 register.