ADS1259: ADC conversions returning duplicate values.

Part Number: ADS1259

Tool/software:

Hi,

We are using the ADS1259 to get a precise ADC measurement for our application. The ADC signal is used to measure the stabilization of the voltage of a measurement circuit. In short we send a start command to the chip, check for the conversion finished flag (Register 2 = 0x10) and then read out the value, we wait 250ms and repeat the measurement. Once the difference is within a tolerance we consider the circuit stable and use this for our measurements.

We have been using the chip like this for months on a few prototypes, but after shipping some samples, we ran into an issue were very occasionally the ADC measurement would return the exact same value a few times in a row. This would cause us to consider the measurement to be stable and we would fail our checks. Connecting an oscilloscope to this signal we clearly see the signal is still stabilizing, so it does not make sense for the value to be exactly the same especially since this is a 24-bit ADC.

It looks like the chip is not performing the measurement, and returning the previous measurement? Is this something that is known or are we using the chip incorrectly?

Thanks for your help!

Our Configuration for the registers:

#define ADS1259_REG_0_VALUE (0x05U) // SPI timeout enabled
#define ADS1259_REG_1_VALUE (0x50U) // Check sum enabled, sinc2 filter, external reference disabled
#define ADS1259_REG_2_VALUE                                                                        \
    (0x10U) // 10SPS (samples per second) (33.7 ms settling time), pulse control mode
#define ADS1259_REG_3_VALUE                      (0U)    // default value
#define ADS1259_REG_4_VALUE                      (0U)    // default value
#define ADS1259_REG_5_VALUE                      (0U)    // default value
#define ADS1259_REG_6_VALUE                      (0U)    // default value
#define ADS1259_REG_7_VALUE                      (0U)    // default value
#define ADS1259_REG_8_VALUE                      (0x40U) // default value

Our Conversion Sequence:

1. Send the start command (0x08)

2. Check whether the conversion is finished every 50ms by reading Register 2 until it equals 0x10

3. After reading register 2 about 4 times it equals 0x10

4. Read the data (0x12)

5. We check the checksum of the data and store the full 24-bit result.