9.4.6.14 Automatic Error Correction

The ADC features automatic error correction of conversion results. Offset and gain error corrections are available. The correction can be enabled for each channel and correction values (offset and gain) are .

To enable error correction, the corresponding ECORRx bit must be set in the Channel Error Correction register (ADC_CECR). The offset and gain values used to compensate the results are .

The error correction for channels used with the touchscreen is available in the ADC Touchscreen Correction Values register (ADC_TSCVR).

The ADC_EMR.ADCMODE field is used to configure a running mode of the ADC Normal mode, Offset Error mode, or Gain Error mode (see ADC_EMR). ADCMODE uses 3 internal references to be measured and to extract the offset and gain error from 3 point-measurement codes. If some references already exist on the final application connected to some input channel ADx, they can be used as a replacement of the ADCMODE to generate the 2 or 3 points of calibration and used to extract the GAINCORR and OFFSETCORR.

After a reset, the running mode of the ADC is Normal mode. Offset Error mode and Gain Error mode are used to determine values of offset compensation and gain compensation, respectively, to apply to conversion results. The table below provides formulas to obtain the compensation values, with:

  • OFFSETCORR—the Offset Correction value. OFFSETCORR is a signed value.
  • GAINCORR—the Gain Correction value
  • GCi—the intermediate Gain Compensation value
  • Gs—the value 15
  • ConvValue—the value converted by the ADC (as returned in ADC_LCDR or ADC_CDR)
  • Resolution—the resolution used to process the conversion (either RESOLUTION, RESOLUTION+1 RESOLUTION+2, RESOLUTION+3, RESOLUTION+4).
    Table 9-10. ADC Running Modes
    ADC_EMR.ADCMODEModeDescription
    0NormalNormal mode of operation to perform conversions
    1Offset ErrorFor unsigned conversions: OFFSETCORR = ConvValue − 2(Resolution − 1)
    For signed conversions: OFFSETCORR = ConvValue
    2Gain ErrorGCi = ConvValue
    3
    GAINCORR=3584GCiConvValue×2Gs

The final conversion result after error correction is obtained using the following formula:

Corrected Data=Converted Data+OFFSETCORR×GAINCORR2Gs