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

SAADC very high noise.

Hardware: nrf52 DK Software: SDK v13

I want to use SAADC to sample some analog data (main function of my device), but It seems to be noisy. In attachment spreadsheet with chart and recorded data.

Reference = VDD/4, input = VDD, gain = 1/5, sampling triggered by app_timer with interval 200 ms.

Is it normall for nrf52 to have as much noise as I have?

Spreadsheet

Parents
  • Without oversampling:

    /* Configure ADC */
    memset(&saadc_config, 0 , sizeof(saadc_config));
    saadc_config.interrupt_priority = 7;
    saadc_config.low_power_mode = true;
    saadc_config.oversample = NRF_SAADC_OVERSAMPLE_DISABLED;
    saadc_config.resolution = NRF_SAADC_RESOLUTION_14BIT;
    
    /* Configure channel */
    memset(&saadc_channel_1, 0 , sizeof(saadc_channel_1));
    saadc_channel_1.acq_time 	= NRF_SAADC_ACQTIME_3US;
    saadc_channel_1.burst 		= NRF_SAADC_BURST_ENABLED;
    saadc_channel_1.gain		= NRF_SAADC_GAIN1_5;
    saadc_channel_1.mode		= NRF_SAADC_MODE_SINGLE_ENDED;
    saadc_channel_1.pin_p		= NRF_SAADC_INPUT_VDD;
    saadc_channel_1.pin_n		= NRF_SAADC_INPUT_DISABLED;
    saadc_channel_1.reference	 = NRF_SAADC_REFERENCE_VDD4;
    saadc_channel_1.resistor_n	= NRF_SAADC_RESISTOR_DISABLED;
    saadc_channel_1.resistor_p  = NRF_SAADC_RESISTOR_DISABLED;
    
Reply
  • Without oversampling:

    /* Configure ADC */
    memset(&saadc_config, 0 , sizeof(saadc_config));
    saadc_config.interrupt_priority = 7;
    saadc_config.low_power_mode = true;
    saadc_config.oversample = NRF_SAADC_OVERSAMPLE_DISABLED;
    saadc_config.resolution = NRF_SAADC_RESOLUTION_14BIT;
    
    /* Configure channel */
    memset(&saadc_channel_1, 0 , sizeof(saadc_channel_1));
    saadc_channel_1.acq_time 	= NRF_SAADC_ACQTIME_3US;
    saadc_channel_1.burst 		= NRF_SAADC_BURST_ENABLED;
    saadc_channel_1.gain		= NRF_SAADC_GAIN1_5;
    saadc_channel_1.mode		= NRF_SAADC_MODE_SINGLE_ENDED;
    saadc_channel_1.pin_p		= NRF_SAADC_INPUT_VDD;
    saadc_channel_1.pin_n		= NRF_SAADC_INPUT_DISABLED;
    saadc_channel_1.reference	 = NRF_SAADC_REFERENCE_VDD4;
    saadc_channel_1.resistor_n	= NRF_SAADC_RESISTOR_DISABLED;
    saadc_channel_1.resistor_p  = NRF_SAADC_RESISTOR_DISABLED;
    
Children
No Data
Related