An analog-to-digital converter (ADC) exhibiting an uncorrected non-linear
transfer function receives measured analog voltage amplitudes and outputs
uncorrected digital values. A calibration circuit receives each
uncorrected digital value and outputs a corrected digital value. The
measured analog voltage amplitudes received by the ADC and the
corresponding corrected digital values output by the calibration circuit
define points approximating an ideal linear transfer function of the ADC.
The calibration circuit performs piecewise-linear approximation of the
uncorrected transfer function and associates each uncorrected digital
value with the applicable linear segment that passes through a segment
endpoint on the uncorrected transfer function. The calibration circuit
calculates each corrected digital value using calibration coefficients
associated with the applicable linear segment, such as the slope of the
linear segment. The calibration circuit determines the calibration
coefficients by calculating the second derivative of the uncorrected
transfer function. The calibration coefficients are stored in
non-volatile memory.