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.

ADS1246: Help with ADS1246 and Arduino Uno

Part Number: ADS1246
Other Parts Discussed in Thread: ADS1247, ADS1248

Hello, I recently purchased a few ADS1246 to accurately measure the voltage on a laser diode thermistor. I am using an Arduino Uno to interface with the chip and am using a power supply at 1.25V and a 2.048V external reference to test the chip. I am not able to communicate with the chip and do not receive any data ready signal. I saw in the datasheet it mentions that the SCLK needs to be a multiple of eight but it also says later that the minimum SCLK period corresponds to a frequency of no more than 2MHz. The Arduino Uno's pre-scaler does not allow for it to generate any frequency below that that is a multiple of eight. I am just wondering if I am doing something wrong or if this chip is incompatible with the Arduino Uno. If this is the case what microcontrollers are recommended for use with this product?

  • Andrew,


    I'm not too familiar with Arduino programming, but I believe that plenty of people have used the Arduino to talk to our devices. If you do a quick search, you may even find code for the ADS1246 (or ADS1247 and ADS1248).

    Note that the device requires a minimum supply of 2.7V. If you are using 1.25V, the ADS1247 will not power on. Also note that if you are using a reference of 2.048V, you'll need to use a minimum supply that is even higher. The reference should be 1V below the analog supply, so the new minimum is 3.048V.

    If your supply is really higher than 1.25V, and are having problems communicating with the device, then there are other things to check. For your setup, I would start debugging by checking the basic connections first. Make sure that the ground is connected to DGND and AVSS (presuming that you want a unipolar supply). Make sure power is connected to AVDD and DVDD. Also, check to see that START and /RESET are pulled high to ensure the device is operational. After checking those connections, then check to see that there is a /DRDY pulse (indicating that the device is converting). Use an oscilloscope (or logic analyzer) to check the pulse. Remember that this pulse will occur every 200ms, but the pulse width is very narrow (only a few microseconds). Make sure that you trigger off the pulse. If you don't have enough resolution on the oscilloscope, you may not be able to see it. If you aren't able to get the /DRDY pulse, there's likely a bad connection, bad layout, or a damaged device.

    If you are able to get the /DRDY pulse, you should be able to communicate with the device. When debugging communications, I always recommend looking at the signal, verifying the correct version of SPI, making sure the SCLK idles low, and data is clocked in at the falling edge of SCLK. Also make sure that /CS stays low for the entire command (if you are reading or writing a regsiter, make sure /CS is low through the entire read or write).

    Go through my comments, run a few tests and let me know how it goes. If you continue to have problems post back to this thread.


    Joseph Wu
  • Andrew,


    One other connection that I'd missed is to make sure the CLK line is grounded to enable the internal oscillator. Alternately, you can connect the pin to an external clock. Regardless you'll need some sort of clock to get the device running.

    Eventually, you'll need to connect the reference an analog inputs, but with this connection and the others I mention above, the device should start up.


    Joseph Wu
  • Hi Joseph,

    I worded that poorly in my post, I am using a 5V power supply to power the board and a 1.25V power supply as a test voltage for the ADC to read. I am using the arduino's 3.3V output and ground for the digital circuitry so maybe I will try only using the 5V power supply for both analog and digital circuits. I will also hookup an oscilliscope and see if I can read the data ready pulses. Everything else is as you described, CLK is grounded, Start and /Reset are pulled high, and CS is pulled low when trying to receive bits. I will reply after I implement these changes and see if this fixes the problem.
    Thank You,

    Andrew
  • Thank you for the help. After running the tests you recommended and trying a few other things I determined it was just a bad chip and switched it out with a new ADS1246. My design now runs perfectly on the Arduino.