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

ADC fastest channel sampling rate

I need to sample ADC channel at the fastest deterministic rate.

If i use burst mode with 3us acquisition time, do i get a sample exactly every 5us? 

does t(conv) is always 2us or does it vary?

should i use a timer instead of burst mode to get the rate predicted?

If yes - can i use timer that clocks every 5us when using t(acq)=3us? or can i go lower?

Parents
  • Hi,

    How long sample time you get with BURST enabled will depend on the configuration of OVERSAMPLE register. From the SAADC peripheral documentation:

    CH[n].CONFIG.BURST can be enabled to avoid setting SAMPLE task 2OVERSAMPLE times. With BURST = 1 the ADC will sample the input 2OVERSAMPLE times as fast as it can (actual timing: <(tACQ+tCONV)×2OVERSAMPLE). Thus, for the user it will just appear like the conversion took a bit longer time, but other than that, it is similar to one-shot mode. Scan mode can be combined with BURST=1, if burst is enabled on all channels.

    If OVERSAMPLE is not enabled, enabling BURST mode will have no effect. If OVERSAMPLE is enabled, the sample time will be <(tACQ+tCONV)×2OVERSAMPLE

    You would need a timer to trigger the SAMPLE task, regardeless of if BURTS mode is enabled or not. If you do OVERSAMPLE and BURST, you need to increase the triggering of SAMPLE task to the actual sample timing from above.

    tCONV is specified at typical <2µs, you cannot expect it to be lower than this, and it is without specs to sample more often.

    Best regards,
    Jørgen

  • Not sure i understood - i using oversampling=0 since i do not want oversampling at all.

    I just want to find a way to sample 1000 times the ADC channel as fast as i can and fill in a memory buffer with these 1000 samples (with sa,pling rate of 5us, 7us, or as fast as the nRF52 can do with EasyDMA).

    I only asked about BURST since i thought it can provide me a way to sample a channel faster than a timer would.

    Another question - you said t(conv) is typical 2us. Can it be greater than 2us? how big can it get?

    thanks for the fast response 

Reply
  • Not sure i understood - i using oversampling=0 since i do not want oversampling at all.

    I just want to find a way to sample 1000 times the ADC channel as fast as i can and fill in a memory buffer with these 1000 samples (with sa,pling rate of 5us, 7us, or as fast as the nRF52 can do with EasyDMA).

    I only asked about BURST since i thought it can provide me a way to sample a channel faster than a timer would.

    Another question - you said t(conv) is typical 2us. Can it be greater than 2us? how big can it get?

    thanks for the fast response 

Children
No Data
Related