nRF52832 (on a ublox NINA B112): Sampling via SAADC unreliable in certain conditions

    1. We use code similar to the existing sample code to repeatedly sample a 0 - 2.25V voltage range using the SAADC.
    2. Settings: 30s interval, single-ended input, burst-mode, internal reference 0.6V, triggered via PPI or by MCU (doesn't seem to matter)
    3. In some cases we see values that are far too low (for example by 0.5V below of the voltage really present at the pin), often over a period of 30s - 5min.

    This often occurs after intense radio activity (incoming connection, BLE notification setup phase), but not always.
    
    We monitored as much conditions as possible via oscilloscope while logging via firmware.
    
    Temperature/Calibration doesn't seem to play a role, here.
    
    VDD seems to be affected a bit during radio activity (drop), but we use the 0.6V internal reference exclusively.

    The problem seems to occur more often when our battery powered device is fully charged (somewhat higher battery voltage, but still within range).
    
    Questions:

      * Are there known issues/workaround for problems with the 0.6V reference/SAADC somehow becoming unstable?
      * What could be a typical mistake in a design that could cause this?

  • I've not experience the SAADC to be that inaccurate, there's something else going on here. Can you share schematics, or at least more information about the signal source? 

    My first guesses would be a floating ground or a too high internal impedance in the signal source. 

  • Thank you for your suggestion. We can almost certainly exclude *floating ground*, currently verifying the *high internal impedance* point.

    Will keep you posted.

  • If the internal impedance is > 100kohm you need to increase the acquisition time according to Table 1 in the Acquisition time chapter. 

    Generally the SAADC will be less accurate during radio operation, the same is true if the HFXO is not running. That being said, I've never encountered samples that are ~25%, off as inn your case, due to the previously mentioned states. 

    One typical scenario I often encounter is when a signal source is derived from a battery that is also the main power source for the device, and the ADC signal is either a direct sample of the battery voltage or of an N/PTC resistor voltage divider circuit.
    The issue is that the battery voltage drops as the battery cannot handle instanteneous power loads from the radio, flash erasing, CPU, external sensors, etc.

Related