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.

ADS1263: Status byte never shows new data with GPIO enabled

Part Number: ADS1263
Other Parts Discussed in Thread: ADS1261, ADS1262, ADS1261EVM

Hello,

I'm having trouble trying to use both the GPIO and ADC functionality.

#define GPIO_PIN 0b00011110
#define GPIO_DIR 0b00000000
#define GPIO_DAT 0b00001100

#define B_MUX 0b00001010

I'm setting the above registers (INPMUX is being set to B_MUX above), enabling status, setting the ADC is Pulse Mode, and sending a read command every 5 ms.  I parse the returned status byte and read the value if the ADC1 bit is set  Everything works if I don't set any of the GPIO registers after bootup.  Setting the GPIO_DAT register to 0b00011110 slows down the ADC quite a bit, but I still get a new data point every 3 seconds,

But when I set the GPIO_DAT register to 0b00001100 or 0b00010010, I stop getting any new data from the ADC.  The GPIO is being used to control the gate voltage on two FETs.

I'm not sure how to proceed, please let me know if you need any additional information.

  • Hi Jeffrey,

    The GPIOs should not have any material affect on the ADC speed. Some questions for you:

    • How fast are you sampling? What data rate and filter setting?
    • What do you mean by the GPIOs slow down the ADC? Is that the time between bit 6 toggling in the STATUS byte (ADC1)? If so, what time are you expecting, and what time are you getting?
    • Is there any chance you are overdriving the GPIOs and they are corrupting the SPI communication? If you disconnect the GPIOs from the FETs does the problem still occur?
    • Do you have a schematic to share so I can see how the GPIOs are connected?

    Let me know.

    -Bryan

  • Hi Byran,

    Thanks for getting back to me so fast!

    Other than the changes above, everything else is left as defaults, here's a dump of the registers:

    ADDR: 0x00, VAL: 0x23;
    ADDR: 0x01, VAL: 0x11;
    ADDR: 0x02, VAL: 0x05;
    ADDR: 0x03, VAL: 0x40;
    ADDR: 0x04, VAL: 0x80;
    ADDR: 0x05, VAL: 0x04;
    ADDR: 0x06, VAL: 0x00;
    ADDR: 0x07, VAL: 0x00;
    ADDR: 0x08, VAL: 0x00;
    ADDR: 0x09, VAL: 0x00;
    ADDR: 0x0a, VAL: 0x00;
    ADDR: 0x0b, VAL: 0x00;
    ADDR: 0x0c, VAL: 0x40;
    ADDR: 0x0d, VAL: 0xbb;
    ADDR: 0x0e, VAL: 0x00;
    ADDR: 0x0f, VAL: 0x00;
    ADDR: 0x10, VAL: 0x00;
    ADDR: 0x11, VAL: 0x00;
    ADDR: 0x12, VAL: 0x00;
    ADDR: 0x13, VAL: 0x00;
    ADDR: 0x14, VAL: 0x00;
    ADDR: 0x15, VAL: 0x00;
    ADDR: 0x16, VAL: 0x01;
    ADDR: 0x17, VAL: 0x00;
    ADDR: 0x18, VAL: 0x00;
    ADDR: 0x19, VAL: 0x00;
    ADDR: 0x1a, VAL: 0x40;



    As for the "slowing down"; when I do not have any GPIO enabled I get a new sample (STATUS bit 6 = 1) every ~100ms, when I enable GPIO with GPIO_DAT = 0b00000000 or GPIO_DAT = 0b00011110 I only get a new sample every ~3.5 seconds.

    I'll explore disconnecting the FETs and let you know if the behavior changes (requires some board reworking)

    I can't share the schematic, but here is the basic circuit:

    2 channel P MOSFET, Sources connected to 5V, Gates connected to GPIO pins 1 and 3 (pulled up to 5V with 10k ohm), Drain connected to load
    2 channel N MOSFET, Sources connected to GND, Gates connected to GPIO pins 2 and 4 (pulled down to GND with 10k ohm), Drain connected to load

    The goal is to switch the current direction across the load (AC Excitation). 

    Even when I set the GPIO to match the pulled up/pulled down state (0b00010100) (minimally driving the FETs), I stop getting new values from the ADC.

  • Hi Jeffrey,

    Using the default settings on the ADS1263, data should be available in ~52ms (measured between toggling START high or the end of the START command to DRDY dropping low). So it seems like something else is going on here.

    Is there any reason you are not polling DRDY to see when new data is ready?

    Would you be willing to share a schematic via private message? If so, you can click on my name and request me as a friend, and then we can share this information offline.

    I am concerned that something is going on that is either collapsing the DVDD supply or causing it to droop. There is really no reason why the GPIOs would cause data to be ready slower than normal.

    I will also point out that our ADS1261 has the AC excitation integrated (not the FETs, but the GPIO switching is done automatically in AC excitation mode).

    -Bryan

  • Hi Bryan,

    Just a quick update, removing the pull up/down resistors and the gate connection to the FETs (basically leaving the GPIO floating) and I'm back to the "normal" behavior (~100ms new data).  So it does look like the driving circuitry is to blame.

    We could pursue polling DRDY, but I believe the circuit was designed to minimize connections between the ADC and the micro. (DRDY is left floating on our current design)

    I'll reach out for authorization to release the schematic over private message.

    We're using the IDAC ports to measure two thermistors in the current design, let me know if that is the AC excitation mode you're suggesting or if I'm missing something.  I'll definitely give the feedback that we should evaluate the IDAC ports for driving the AC excitation though!

    Thanks again for your time!

  • Hi Jeffrey,

    If sending the schematic is an issue, it is not necessary. It at least seems like you have isolated the issue to the FET connection, which allows you to focus your troubleshooting. If you need more help from TI with diagnosing the issue however, a schematic would probably help. Please let me know.

    There is a reference design available for the ADS1262 that uses AC excitation, if you were not already aware: https://www.ti.com/tool/TIPD188. Maybe this can help you figure out what has gone wrong in your current design.

    My comments about AC excitation were in regard to the ADS1261 (a different ADC). I was just pointing out that this ADC exists and has some of the AC excitation control functionality integrated, while recognizing that it is probably too late to switch to a different device. Maybe this is just something to keep in mind for the future. The ADS1261EVM also has AC excitation functionality built into the board (using a gate driver instead of discrete FETs), so that might be another piece of collateral to review for help.

    -Bryan

  • Ohh my mistake, misread the model number in your post!

    We're not at the point where we're locked into a specific chip, I'll make sure to note the suggestions on the different chips.

    I removed the pull-up/pull-down resistors from the GPIO pins and let them control the gate voltage directly, it seems to be working as expected now, I'll go ahead and close out the ticket, thank you again for your time!

    Ohh and one other note, I had a typo in my source and I was only sending the read command every 50ms, which explains why I was only seeing new data every 100ms, reading every 5ms shows new data more frequently (appox 0.5 seconds to collect 10 samples)

    thanks again!