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

nrf52 SAADC noise

Hi, I would like to know how much noise I have to expect with the SAADC.

I tried the example "saadc_pca10036" and attached the pin P0.02 (AIN0) to a ground pin on the pca10036 board and I get values between -2 and -5, that is a noise of about 3. Is this correct? Moreover why I get negative values? I tried also with a custom board and I get similar results.

From the electrical I read that the "differential offset error" is +-15, what exactly means this value?

I noticed also that that there is a "tasks_calibrateoffse", what is the purpose of this?

  • The noise levels of the SAADC depends on the GAIN setting. But with GAIN=1/6 and 12-bit mode you should expect a standard deviation of a few LSB.

    If you average the output over a long time with a zero input you get what is called the "differential offset error", this is the static deviation from the ideal output code (0).

    Single ended mode is actually differential mode with negative input to ground. Since there is offset and noise in the ADC there can be negative outputs.

    The TASKS_CALIBRATEOFFSET can be used to calibrate the offset of the SAADC.

  • I did some more experiments trying to reduce the noise and I get the best results with gain=1 and oversampling, but using a gain of 1 is somehow restrictive, moreover oversampling slows down the sampling. I would like to know what is the best configuration to decrease as much as possible the noise? From the electrical spec I encountered "Effective number of bits", that says using 12-bit I finally get 9 bit of usable information; the remaining is noise? What is the maximum effective resoulution I can achieve?

  • How much you can reduce noise depends on the input signal range. For example, if you know that you input signal is < 100mV differential, then using GAIN=4 will give best performance. But irrespective of input range you will get ~9-bit ENOB in the 12-bit mode without oversampling. With oversampling you can increase that by around 0.5-bit per OVERSAMPLE code. I've measured 10.5-bit at OVERSAMPLE=4. Beyond that it starts to be limited by non-linerarities, and although noise will reduce, the ENOB will not get much better.

  • Hi,

    I'm having similar issue. I would like to know how to use the task_calibrateoffset. Have I to connect the analog pin to some specific value?

Related