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.

ADS1216: Low output voltage on MISO line

Part Number: ADS1216

Hello folks,

I bringing up a new design that uses two ADS1216 ADCs and a MAX7301 (a GPIO expander) all on the same SPI bus. I was able to bring up the GPIO expander just fine, but am having some trouble with the two ADS1216 chips. For the time being, the biggest problem is that the output voltage level on MISO from these two chips is about 800mV instead of DVDD (3.3V). Here are some things I have tried in an attempt to resolve the problem:

  • Checked power supplies (analog = 5V, digital = 3.3V, VREF = 2.5V)
  • Added pullup resistors (100K and 10K) to the MISO line
  • Verified that none of the analog inputs are above the analog supply voltage or below the chip's ground
  • Verified that the master is not attempting to drive the DRDY pin
  • Verified that the master is controlling CS correctly
  • Increasing the bus speed to 5MHz and trying as low as 1MHZ (from the datasheet limits)
  • Verified that I see a ~5MHz signal from the crystal with an oscilloscope probe (I saw a 500mV sine wave at ~5MHz)
  • Searched this forum for similar issues ;-)

Here is an oscilloscope trace showing the weak MISO output (MISO is green, MOSI is red, and clock is blue) below. Note the low MISO voltage (3.3V expected!).

I don't believe there is a problem on the MISO trace itself, as I was able to get a different SPI device working on the same bus as I've mentioned above. To be sure, I verified that there were no shorts or very low resistances on that line to ground etc. From MISO to ground my multimeter reads about 500K.

Here is a schematic:

Let me know if perhaps I've wired the chip wrong or if there's something else I should be checking. One more note, on the microcontroller side the driver for this ADC is set to use SPI mode 3. I believe the corresponds best to the timing diagram given in the datasheet.

Thanks all and take care,

Ryan

  • Hi Ryan,

    Welcome to the E2E forum!  The only issue I see with configuration is the DYSNC pin should be pulled high and not floating.  I don't think this is the issue you are seeing, but it is important that this pin does not float.

    Check the DRDY pin with a scope to see if it goes fully high.  You should see this pin pulsing at the default data output rate.  Also check to see if you have inadvertently left CS low on another pin where there might be an issue with output driver contention.

    You also should try swapping scope probes around to verify there is not an issue with a probe.

    Best regards,

    Bob B

  • Hi Bob,

    Thanks for taking the time to help me here! I can confirm that without connecting DSYNC to 3.3V, I do not see a pulse on the DRDY pin. After connecting DSYNC to 3.3V with a small wire, the pulse I see on DRDY corresponds to the default values in the appropriate registers. The pulse does go fully high.

    I checked the other CS pins, they are being held high as expected.

    Lastly, I did try swapping scope probes with no change in results. Still the ADS1216's MISO output is a mere 800mV...

    If there is anything else you can think of to try, I am all ears! Take care,

    Ryan

  • Hi Ryan,

    From the scope shot it appears that you are attempting to do a RREG (read register) block read from register 0 through register 15.  Even if the the output of the ADC was showing fully high at the various locations indicated, the values would not be the expected default value.  So you should check your board layout for any possible crosstalk with other digital signals.

    I do not see the CS signal for the communication, but you should verify that the CS signal stays low throughout the entire communication transaction.  So when requesting the register read, the CS should go low prior to the SCLK going low, then stay low until both the command and data are transmitted/received.  If the CS toggles or goes high, the communication is canceled.

    Best regards,

    Bob B 

  • Hello Bob,

    Thanks again for your reply! I have noted the same things as you after reflecting on the problem more. Our firmware engineer is working to correct the behavior of CS and ensure it stays low throughout the entire transaction, as well as ensuring that the proper time delay is respected between command and data-clock-out.

    In the mean time, I discovered last night that the cause for the low-voltage on the MISO line was the bad behavior another chip on the bus, the MAX7301 I mentioned in my original post. This chip does not let its MISO (data out) port go to high impedance when CS is high, so in effect the ADS1216 was fighting the MAX7301. After cutting the MISO trace on the PCBA that goes to the MAX7301, I was able to get a nice 3.3V signal from the ADS1216. I will create some kind of fix for this in our next PCBA revision.

    Thanks for all of your support, I truly appreciate you taking the time to help!

    Ryan