This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1299: DRDY pin is dropping for long periods

Part Number: ADS1299

Hello,

I'm trying to collect data from a single channel using the ADS1299 at 1000 Hz. We have implemented a C function that uses the libsoc_gpio library to collect the data from the ADS1299 chip at that rate, but regardless of data rate, I see long periods where the DRDY pin stays down. It will pull up for a brief moment so that a falling edge occurs precisely at the data rate. This results in a set number of samples being collected slower than anticipated. Below is a trace of our DRDY pin and the SCLK pin. If it was a matter of overlapping events and data transfers taking too long, I would expect that only 1 sample would be skipped at a time, but in the example below, it's on the 3rd falling edge that the transfer picks back up. 

Based on this post (https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/526781/ads1299-unexpected-drdy-behaviour-above-250sps) we suspected that our interrupt strategy to trigger data transfer was causing the issues. We initially used libsoc_gpio_wait_interrupt with a wait time of 10 ms. After reading that post and some forums, we tried libsoc_gpio_callback_interrupt, but both of these implementations resulted in the same behavior. Is there a way to use the libsoc_gpio functions efficiently enough to not miss any DRDY pins and avoid this gap, or is there a recommended interrupt technique that's recommended? 

  • Hi Chris,

    Thanks for the post.

    Unfortunately, I am not familiar with the libosc C function libraries used to interface to the ADS1299. Therefore, it is best to consult with the original owner of the library for advice and recommended interrupt usage.

    Thanks

    -TC