This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

SAADC aquracy vs. VDD_GPIO

We noticed strange behavior when measuring voltages with the SAADC with our custom board.
When VDD_GPIO is at 1.8V (which is our target), the ADC measurement error is about 8%, which is quite high. If we increase VDD_GPIO to about 2.1V or above the ADC measurement error drops below 1%.We did also the same measurements with the DK 0.8.5 and the error there was below 1% with VDD_GPIO even at 1.8V.

We used this adc sample with a few changes:

  • GAIN = 1/3
  • Calibration bevor each measurement
  • Oversampling = 7 (x128 for smother readings)

The DK 0.8.5 and our custom board have different HV revisions of the nrf960

DK 0.8.5: INFO.VARIANT = 0x41414143 (AAAC)
Custom board: INFO.VARIANT = 0x41414230 (AAB0)

Measurements with the custom board:

VDDIO = 1.8V VDDIO=2.1V
Input [V] ADC value [V] Error ADC value [V] Error
0.0 0.000   0.000  
0.3 0.274 8.7% 0.300 0.0%
0.6 0.548 8.7% 0.600 0.0%
0.9 0.823 8.6% 0.900 0.0%
1.2 1.099 8.4% 1.201 -0.1%
1.5 1.374 8.4% 1.504 -0.3%
1.8 1.648 8.4% 1.798 0.1%

Measurements with the DK 0.8.5:

VDDIO = 1.8V
Input [V] ADC value [V] Error
0.0 0.000  
0.3 0.302 -0.7%
0.6 0.598 0.3%
0.9 0.899 0.1%
1.2 1.201 -0.1%
1.5 1.499 0.1%
1.8 1.794 0.3%

Is there an explanation for this strange behavior?

Best Regards,

Ueli

 
Parents
  • Hi,

     

    I am able to reproduce this behavior sporadically, but only just after the initial flashing of the device. It seems to be related to the offset calibration task that is called just before entering the loop, as this event seems to trigger an isr in the underlying adc wrapper.

    I haven't been able to reproduce this behavior if I reset the device after programming. Could you check if this is the same on your end?

     

    Kind regards,

    Håkon

Reply
  • Hi,

     

    I am able to reproduce this behavior sporadically, but only just after the initial flashing of the device. It seems to be related to the offset calibration task that is called just before entering the loop, as this event seems to trigger an isr in the underlying adc wrapper.

    I haven't been able to reproduce this behavior if I reset the device after programming. Could you check if this is the same on your end?

     

    Kind regards,

    Håkon

Children
Related