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.