After nrfx_saadc_mode_trigger, power consumption raised 1.3mA and not drop.

Hi,

I am working on ncs 2.9.1 @ nRF54L15.

I followed this academy course to add a single channel saadc in simple mode:

	/* STEP 5.1 - Connect ADC interrupt to nrfx interrupt handler */
	IRQ_CONNECT(DT_IRQN(DT_NODELABEL(adc)), DT_IRQ(DT_NODELABEL(adc), priority), nrfx_isr, nrfx_saadc_irq_handler, 0);

	/* STEP 5.2 - Initialize the nrfx_SAADC driver */
	nrfx_err_t err = nrfx_saadc_init(DT_IRQ(DT_NODELABEL(adc), priority));
	if (err != NRFX_SUCCESS) {
		LOG_ERR("nrfx_saadc_mode_trigger error: %08x", err);
		return -1;
	}

	/* STEP 5.3 - Configure the SAADC channel */
	channel.channel_config.gain = NRF_SAADC_GAIN1_4;
	err = nrfx_saadc_channels_config(&channel, 1);
	if (err != NRFX_SUCCESS) {
		LOG_ERR("nrfx_saadc_channels_config error: %08x", err);
		return -1;
	}

	/* STEP 5.4 - Configure nrfx_SAADC driver in simple and blocking mode */
	err = nrfx_saadc_simple_mode_set(nrfx_saadc_channels_configured_get(), NRF_SAADC_RESOLUTION_12BIT, NRF_SAADC_OVERSAMPLE_DISABLED, NULL);
	if (err != NRFX_SUCCESS) {
		LOG_ERR("nrfx_saadc_simple_mode_set error: %08x", err);
		return -1;
	}

	/* STEP 5.5 - Set buffer where sample will be stored */
	err = nrfx_saadc_buffer_set(&sample, 1);
	if (err != NRFX_SUCCESS) {
		LOG_ERR("nrfx_saadc_buffer_set error: %08x", err);
		return -1;
	}
	
	err = nrfx_saadc_offset_calibrate(NULL);
		if (err != NRFX_SUCCESS) {
			LOG_ERR("nrfx_saadc_offset_calibrate error: %08x", err);
			return rc;
		}

		/* Step 7.2 - Trigger the sampling */
		err = nrfx_saadc_mode_trigger();
		if (err != NRFX_SUCCESS) {
			LOG_ERR("nrfx_saadc_mode_trigger error: %08x", err);
			return rc;
		}

		/* STEP 7.3 - Calculate and print voltage */
		int adc_voltage = ((900 * 4) * sample) / ((1<<12));
		int battery_voltage = adc_voltage * 1220 / 220;

		LOG_DBG("SAADC sample: %d Battery Voltage: %d mV", sample, battery_voltage);
	

ADC read works properly, but the current read from PPK2 raised from 30uA to 1.3mA when nrfx_saadc_mode_trigger been called.

How to disable saadc after sampling is triggered?

I tried call nrfx_saadc_abort but the current is still high

Regards,

Anthony

Parents
  • Hi Anthony

    We'll get back to you next week with some more input on this issue, but 1.3mA sounds very high (way more than what just the ADC peripheral should draw). Can you show us how you have connected the PPK2 to the nRF54L15 DK? Most likely it's the CPU being left running for some reason after ADC has been called, so you should make sure nothing else is keeping the CPU running. If you have enabled logging that might be it.

    Best regards,

    Simon

Reply
  • Hi Anthony

    We'll get back to you next week with some more input on this issue, but 1.3mA sounds very high (way more than what just the ADC peripheral should draw). Can you show us how you have connected the PPK2 to the nRF54L15 DK? Most likely it's the CPU being left running for some reason after ADC has been called, so you should make sure nothing else is keeping the CPU running. If you have enabled logging that might be it.

    Best regards,

    Simon

Children
No Data
Related