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.

ADS1292R: Cannot start conversion

Part Number: ADS1292R
Other Parts Discussed in Thread: ADS1292

Hi,

I'm currently working with the ADS1292R. I can read and write any register but I'm unable to read conversion data in either RDATAC or RDATA mode (DRDY pin doesn't seems to work).

I'm using the internal clock oscillator, the internal reference buffer is enabled and set at 2.42V. The oversampling rate is set to 500SPS and both channels input are set to input short (as suggest in figure 63 of the datasheet).

I followed figure 63 procedure from the datasheet but DRDY never toggle. If I try to get the output without starting a conversion, I don't even receive the correct status bits (0xC00).

By probing with an oscilloscope, I can see DVDD = 3.2V, AVDD = 3.2V, VCAP1 = 1.52V but VCAP2 = 0V and Vrefp = 0V.

I would think that the device might be broken since VCAP2 and Vrefp = 0, but since the spi communication still works, I'm not sure what is going on?

I'm I missing any step in the device setup?

Thanks a lot!

Jacob.

  • Hello Jacob,

    Thank you for your post and welcome to our forum!

    Can you tell us the status of the START pin? If the START pin is pulled low to ground, you must send the START SPI command to begin ADC conversions. That might explain why you do not see the /DRDY pin pulsing at the configured data rate.

    Make sure that you can read the register values back to verify they are written correctly. We have some other initialization debug tips on our ADS129x E2E FAQ page that might be helpful.

    Best regards,

  • Hi Ryan,

    Thank you for your time.

    I've tried both setting the start pin high (with and without start command) and setting start pin low with start command.

    When writing in a register, I can read back the written value without problems.

    Here's my setup code, by the time this code runs, the device has been powered up, the spi communication established and clksel pin has been set high.

    The SPIComTransfer function is used in Ads1292ReadID and has been proven to work.

    nrf_gpio_pin_set(SPI_PWDN_PIN);                                                    /*Reset pin high*/
    nrf_delay_ms(1000);                                                                            /*Wait 1 second*/
    nrf_gpio_pin_clear(SPI_PWDN_PIN);                                                 /*Reset pin low*/
    nrf_delay_ms(100);                                                                              /*Wait 0.1 second*/
    nrf_gpio_pin_set(SPI_PWDN_PIN);                                                    /*Reset pin high*/
    nrf_delay_ms(1000);                                                                            /*Wait 1 second*/

    Ads1292_Sdatac(&m_ads);                                                                 /*Stop contiuous mode*/
    nrf_delay_ms(10);                                                                                /*Wait 0.01 second*/
    Ads1292_WriteRegister(ADS1292_REG_CONFIG2, 0xA0);              /*Enable reference buffer 2.42V*/
    nrf_delay_ms(1000);                                                                            /*Wait 1 second*/
    Ads1292_WriteRegister(ADS1292_REG_CONFIG1, 0x02);               /*Set oversampling at 500 SPS*/
    nrf_delay_ms(10);                                                                                /*Wait 0.01 second*/
    Ads1292_WriteRegister(ADS1292_REG_CH1SET, 0x01);                 /*Set channel input to shorted*/
    nrf_delay_ms(10);                                                                                /*Wait 0.01 second*/
    Ads1292_WriteRegister(ADS1292_REG_CH2SET, 0x01);                 /*Set channel input to shorted*/
    nrf_delay_ms(10);                                                                                /*Wait 0.01 second*/
    Ads1292ReadID(&m_ads);                                                                  /*Read device ID*/
    nrf_delay_ms(10);                                                                                /*Wait 0.01 second*/
    nrf_gpio_pin_set(SPI_ADC_CONV_PIN);                                           /*Start pin high*/
    nrf_delay_ms(10);                                                                                /*Wait 0.01 second*/
    Ads1292_Rdatac(&m_ads);                                                                 /*Start continuous mode*/
    nrf_delay_ms(100);                                                                              /*Wait 0.1 second*/

    SPIComTransfer(NULL, 0, &rx_buffer[0], sizeof(rx_buffer));               /*Read 9 bytes*/

    Once again, thank you for your time!

    Jacob.

  • Hi Jacob,

    Forgetting the register read/write commands for a moment, I'm surprised that the /DRDY pin is not toggling after power-up when the START and CLKSEL pins are pulled high. Since you are using the internal oscillator, there is nothing else you need to do after power-up in order for conversions to begin.

    The /RESET pulse in the beginning of your code is too long. After 2^10 clock periods (2 ms), the device will enter a power-down state. Instead, we want you to issue a /RESET pulse of 2^9 clock periods or less. The minimum /RESET pulse width is only 4 clock periods or 7.8 us. 

    If you still do not see /DRDY toggling, check two things:

    1. Set the CLK_EN bit to 1 in the CONFIG2 register and probe the CLK pin. You should see the internal 512-kHz square wave.
    2. If possible, disconnect the /DRDY pin from anything else to ensure it's not being overloaded.

    Best regards,

  • Hi Ryan,

    You are right about the RESET pulse in the beginning, I forgot this detail. I changed it but it still doesn't toggle the DRDY pin.

    I can the internal 512-kHz square wave and the DRDY pin goes directly into the oscilloscope but it still isn't toggling.

    I'll try changing the chip for a new one since  VCAP2 and Vrefp both are at 0V even if their alimentation are working as expected.

    I'll keep you update if this solve my problem or not.

    Many thanks.

    Jacob

  • Hi Ryan,

    As it turned out, the chip wasn't working properly. We checked our design once more and found the reason why the chip broke.

    By changing the chip and using your test, we were able to make it work.

    Thanks a lot!

    Jacob