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

SAADC scan + burst & oversmaple

  • SDK14.2
  • Segger Embedded Studio
  • nRF52 development board

According to this post https://devzone.nordicsemi.com/f/nordic-q-a/20556/how-does-the-saadc-scan-mode-use-the-burst-1 the SAADC can use multichannel scan mode with burst enabled  on all channels and oversampling set on any other value other than disabled. The product specification of the nRF52832 is a bit confussion as stated by the linked post.With the necessary changes I got oversamping with burst on three channels working as expected.

However the power consumption direclty increases after the first ADC conversion to roughly 1mA and doesn't go back to the expected 2uA when I only measure a single channel:

Multichannel

Single channel:

From what I read on the forum, this is due to the easyDMA staying active after the conversion completes. I've tried disabling the SAADC peripheral and the ADC channels after the convertion completes, as is done with the low power SAADC multichannel example on Nordic's github, but nothing disables the easyDMA's current consumption.

So my question is if there's a remedy for the power consumption after a scan with burst and oversampling or do I need a different approach to quickly measure all channels?

Code with which I've been testing:

saadc_test.zip

Parents
  • Hi,

    There should not be any additional current consumption between the sampling events when you have disabled the SAADC peripheral (calling the nrf_drv_saadc_uninit()). In this case, the SAADC peripheral should not keep the DMA logic active.

    I have not been able to test your code. There are some asserts when in nrf_drv_saadc.c (I use the one you included in saadc_test.zip). Can you make sure to include all modified SDK files and check that they are sufficient in order to run the example on the nRF52832 DK with an otherwise unmodified SDK 14.2?

  • Thank you for your reply Einar,

    In the example the definitions SAMPLES_IN_BUFFER was set  to 1, but it should have been 3, since I used three channels.That's why you got an assert.nRF5_SDK_14.2.zip

    In the saadc callback I un-init the saadc and all channels, the ADC results are as expected and there are no asserts. Still there is a continous 1mA current consumption when I measure with a power profiler after the first saadc initialization.

    Here is the edited project with a stripped down sdk 14.2. The project can be found under nRF5_SDK_14.2\examples\peripheral\saadc_burst.

  • I have tested your code and see the same behavior. I do not have an explanation for it, but we have seen similar issues before. I will look into it and hopefully get back to you tomorrow.

Reply Children
No Data
Related