ADC Gain with bias voltage

I have a single-ended signal that spans [0V,3.3V] and is centered around V_bias=1.65V (=3.3V/2).

I want to use the NRF54L internal gain to amplify only the AC parts of the signal and then add back V_bias so that my signal stays in the range [0V,3.3V]. This way the signal is still centered around V_bias.

I don't know what type of amplifier is internal to the gain stage of the NRF54L SAADC so it is difficult for me to configure external circuitry (e.g. bias resistors, ac-coupling capacitors) appropriately.

Some guidance on how to do this from a hardware and software perspective this would be appreciated.

  • I do something similar, but note this is an unofficial response. The input amplifier after the Mux and the following SAADC both have true-differential inputs. This allows a simple resistor divider from 3.3V to provide the 1.65V (3.3/2) negative input, with the signal applied to the positive input such that the SAADC only sees the AC voltage being the difference between signal and bias. The output value is then the AC voltage with no DC (bias) offset scaled up with as large a gain setting allowed that keeps the AC peak-peak within the VDD range; small AC signal variations allow a very large gain, but if the AC component moves the signal towards VDD or Gnd then a gain of x1 or x2 would be required.

    The resistor chain should model the sensor excitation; ideally the sensor excitation has no filter capacitors and uses nRF54 VDD directly, in which case the resistor divider should also have no filter capacitors as a ratiometric result is required by ensuring VDD noise couples equally to both sensor and resistor negative reference. If the sensor uses other than VDD, the resistor divider should be attached to the sensor supply and not VDD. The impedance/capacitance of the sensor (if any) should be matched by the resistor divider.

    Applying an SAADC calibration periodically will introduce a discontinuity in the sensor AC reading with the same period. Preferably minimise calibration steps and instead remove residual SAADC offsets by reversing the SAADC pins (in software) used for the differential measurement - so take two measurements of opposite polarity - and average the results. I show an example below.

    The nRF52 series of SAADC have internal analogue resistors which allows internal VDD/2 as the negative input without requiring the external resistors, but that is not documented on the nRF54L15.

    If the amplified SAADC output value requires restoring to 1.65V bias level, simple do a dual-differential measurement on the resistor reference input and Gnd input preferably with the latter on external Gnd at the resistor but if no spare pins then internal Gnd (dual means reversing the inputs as described above for the AC signal). Restored value is then obtained simply by addition of the measured reference.

    No coupling capacitors are required; resistor and sensor impedance only affects sampling time required.

    This is an example of removing residual SAADC offset by reversing the inputs (via PSEL registers) in SAADC differential mode. Measured 14-bit value of 905.0 Ohm 2-Wire test resistor using 128 samples is 904.9 Ohms with -0.01% error

    // Internal 0.6v Ref 14-bit S0S1 2-Wire RTD actual value 905.0 Ohm (reference 2001.4 Ohm) - Pos-Neg ADC
    // VDD mV Iref uA  RdsOn  V1 mV V2 mV V3 mV    Vrtd    Vref   Rrtd  Error
    // ====== ======= ======  ===== ===== =====  ======  ====== ====== ======
    //   2974    1008     41   2932   911    -3  3108.5  6883.3  903.8 -0.13%
    //   2975    1007     41   2933   912    -2  3108.3  6882.6  903.8 -0.13%
    //   2974    1007     37   2936   913    -2  3107.9  6882.4  903.8 -0.14%
    //   2976    1007     42   2933   914    -2  3108.5  6882.0  904.0 -0.11%
    //   2973    1007     38   2934   911    -2  3108.3  6881.3  904.0 -0.11%
    //   2977    1007     42   2934   911    -1  3110.3  6882.9  904.4 -0.07%
    //   2978    1008     40   2937   913    -1  3110.1  6884.8  904.1 -0.10%
    //   2977    1008     40   2936   913    -1  3109.8  6885.3  903.9 -0.12%
    //
    // Internal 0.6v Ref 14-bit S0S1 2-Wire RTD actual value 905.0 Ohm (reference 2001.4 Ohm) - Neg-Pos ADC
    // VDD mV Iref uA  RdsOn  V1 mV V2 mV V3 mV    Vrtd    Vref   Rrtd  Error
    // ====== ======= ======  ===== ===== =====  ======  ====== ====== ======
    //   2977    1010     41   2935   912    -3  3120.1  6896.4  905.5  0.05%
    //   2976    1009     40   2935   912    -2  3119.5  6893.8  905.7  0.07%
    //   2973    1009     39   2933   912    -2  3119.4  6892.3  905.8  0.09%
    //   2976    1010     40   2935   911     0  3121.9  6896.3  906.0  0.11%
    //   2975    1010     39   2935   913    -2  3120.9  6896.3  905.7  0.08%
    //   2975    1009     40   2934   911    -1  3120.0  6891.4  906.1  0.12%
    //   2976    1009     41   2934   912     0  3118.6  6892.3  905.6  0.07%
    //   2975    1009     38   2936   913    -1  3118.3  6891.4  905.6  0.07%
    //
    // Measured 14-bit value of 905.0 Ohm 2-Wire test resistor using 128 samples is 904.9 Ohms with -0.01% error
    

Related