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.

ADS131A04: How to set the ADC data rate?

Part Number: ADS131A04


Hello! I am using MSP432 to communicate with ADS131A04 ADC using 32 bit words (M1 = 1), asynchronous interrupt mode (M0 = 1), without Hamming code validation (M2 = 0), at 1MHz SPI clock, with external reference voltages and 16.384MHz crystal. The problem is that the ADC works with a different data rate than the one set by me. This is my program flow:

1. Wait for READY word;

2. UNLOCK;

3. Write registers:

#define ADS131A04_A_SYS_CFG_VALUE	0x60
#define ADS131A04_D_SYS_CFG_VALUE	0x3C
#define ADS131A04_CLK1_VALUE	    0x02
#define ADS131A04_CLK2_VALUE	    0x26 // for 10.24kHz data rate
#define ADS131A04_ADC_ENA_VALUE     0x00
#define ADS131A04_ADC1_VALUE	    0x00
#define ADS131A04_ADC2_VALUE	    0x00
#define ADS131A04_ADC3_VALUE	    0x00
#define ADS131A04_ADC4_VALUE	    0x00

4. Enable ADCs;

5. WAKEUP;

6. Loop where I wait for DRDY interrupt and read sampled data.

I have attached the logic analyzer capture (it can be opened using the free Salae Logic Pro software). As you can see on Channel 4, the time between two DRDY pulses is ~4us, and it should be ~100us.

What am I doing wrong? Also, why do I get DRDY fault after issuing the WAKEUP command?

12 MHz, 360 M Samples [25].zip

  • Hi Cristain,

    Are you sure channel 4 is the DRDY output from your ADS131A04? It's odd that it exactly maps to the SPI-ENABLE signal on channel 3. Also odd, is the fact that the data you read ~250msec after you send the WAKEUP command never seems to change. Are you able to read back the configuration registers to verify that you've programmed them correctly?
  • Hi Tom,

    It was my mistake. I sampled the wrong signal. It works fine, DRDY has the correct frequency. The 250ms delay is the start-up time for the internal reference voltage, but I removed it because I use external reference. Yes, the register values were as expected.

    Thank you,

    Cristian