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 Always Pulled High and DOUT does not respond to read commands

Part Number: ADS1299

We are using an nrf52 base to communicate to the ADS1299-4 and on powerup we are seeing DRDY constantly pulled high. I`ve followed the startup sequence detailed in the data sheet and am still seeing no effect on the DRDY pin. Pulling START pin low and PWDN pin low also have no impact on DRDY state. The SDATAC command also has no impact.

SPI Library works as expected and SCLK/MOSI pins are working as expected. The frequency we are running at is 2MHz. This behaviour is happening on two different boards constructed using the diagrams and layouts detailed on the data sheet for bipolar operation.

Any help is appreciated.

  • Hi Thomas,

    Welcome to our e2e Forum! A schematic showing your connections to the ADS1299 would be very helpful. Seeing your SPI communication bus would also be beneficial to try and understand what the problem might be with your ADS1299 setup.
  • Hi Tom, 

    I've attached an image of the ADS breakout we created. The SPI connection we have connects SCLK on both the NRF52. MISO is connected to DOUT, MOSI is connected to DIN, both boards are grounded together but are currently running on separate power supplies. The reset pin is just a digital IO on the NRF. I've attached a snippet of the SPI startup code below. Please let me know if this is sufficient. We are using a created SPI library that works in the Arduino IDE connecting to the NRF. All other pins such as chip select, start, data ready, and clksel are attached to DigIO pins.

    //PowerUP Sequence
    delay(10); //Need to wait a bit for power supply to let signals stabilize
    digitalWrite(CLOCK_SELECT,HIGH);
    digitalWrite(ADS_POWER_ON,HIGH);
    digitalWrite(ADS_RESET, HIGH);
    delay(150); //wait at least 128 ms to let stabilize

    //RESET Pulse
    digitalWrite(ADS_RESET, LOW);
    delayMicroseconds(15);
    digitalWrite(ADS_RESET, HIGH);
    delay(150); //need to wait at least 9us to start operating
    //double check RC-cap to see if this needs to be longer

    digitalWrite(CHIP_SELECT, LOW);
    //Stop Continuous data mode
    SPI.transfer(0x11);

    //Initialize ADS

    //write config 1/2/3 registers
    SPI.transfer(0x43); //write 3 registers
    SPI.transfer(0x01); //starting at address 1
    SPI.transfer(0b11010010); //specifies multiple readback mode, clock output disabled, and sampling frequency of 4kHz
    SPI.transfer(0b11000001); //specifies external signals at 1x amplitude and fclk/2^20 frequency - NEED TO VERIFY
    SPI.transfer(0b01100000); //specifies close internal buffer
    delayMicroseconds(5); //wait a couple clock cycles for internal reference to settle

  • Truthfully, a schematic would be better. Is this a four layer board with a couple internal layers 'turned off'?
  • Hey Tom,

    I'll provide you with a schematic later today. This is a two layer board with one circuit layer and one ground layer. Power goes direct to the relevant pins.

  • Cool - I see red and blue traces (2 layers), but I don't see how your DGND pin connects to (for example) the via by C11, which I suspect is a bypass cap between pins 48 and 49.
  • Hey Tom, Sorry for the delay, here is a copy of the schematic.

  • Thanks Thomas,

    I still don't see how C13 and C11 are actually tied to any ground (0V or VSS) node. Your schematic does not seem to match the layout, at least not from the partial portion that you posted initially.
  • Hey Tom, 

    Both C11 and C13 are tied to vias leading to the ground plane @ 0V. On the schematic they are in the bottom left tied from 3v3 and VDD to 0V respectively.

  • OK - are you able to read back your configuration registers? What voltage levels do you see across VCAP1-VCAP4? What do you have connected to VSS?
  • Hey Tom, no I am unable to read anything off the registers. I can use the oscilloscope to see the correct command being sent, but there is nothing returned on the DOUT pin.

    VCAP1-4 are respectively, 2.5,1.2,3.9,0.4. We have -2.5V connected to VSS as we are running a bipolar setup. The grounds are tied together so that the reference is correct.

  • Can you send over the scope shots?
  • Here is a picture of the Scope (I only have two channels on this one). One channel here is the Serial Clock and the top is the DIN pin. I am sending 0xAA which is the SDATAC command and there is no effect. DRDY remains high at 3.28V and DOUT remains low even with a read register command.

  • Thanks Thomas,

    Please change the phase on your SPI settings, the data into the device should be valid on a falling SCLK edge, not rising. See Figure 1 on page 12 - CPOL = 0, CPHA = 1 is the setting you should be using (SPI mode 1). Let us know if that resolves the issues.

  • Hi Tom,

    This has not resolved the issue. A point to make is that VCAP1 is 1.2V with respect to AVSS (-2.5V), but not with respect to ground. Is this potentially causing issues?

  • Hi Thomas,

    If your power scheme is setup as shown in Figure 78, VCAP1 is fine. How are you controlling /CS, /RESET and /PWDN?
  • Hey Tom,

    Glad to hear. CS, RESET, and PWDN are all controlled by GPIOs on the NRF52832.

  • Quickly running out of ideas here... what is CLKSEL tied to? What are the logic states of your GPIO's?
  • Mode CPOL CPHA
    0 0 0
    1 0 1
    2 1 0
    3 1 1

    Don't you mean mode 1?
  • Hey Tom,

    CLKSEL is just tied high for now from the GPIO from the NRF with the plan to tie it directly to 3.3V in the future. The NRF outputs are attached below from the spec sheet, but I am observing about ~0.2V for OL and 3.3V for OH.

    For normal operation, START, /PWDN, CLKSEL, and /RESET are all pulled high. As I mentioned before I have followed the startup procedure detailed in the data sheet to appropriately toggle those pins differently during the startup phase.

  • Hey David,

    Yes you are correct, it should be mode 1. I have made that change, but don't see any difference in the DRDY pin as of yet.
  • Hi Tom,

    I've resolved the issue, the CLKSEL pin was indeed being correctly toggled in my Software, but evidently the GPIO I was using on the nrf was reserved and would never go high. Once I switched to a different GPIO, the ADS started working. Thanks for all the help!
  • You are welcome! Happy New Year to you Thomas!