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.

ADS1148: unable to clock out conversion result

Part Number: ADS1148
Other Parts Discussed in Thread: ADS1120, ADS114S08

I am controlling the chip with an arduino Uno Rev3. The arduino built-in SPI interface did not work for me for some reason; therefore, I'm using bit banging for all spi communications. 

The code was based on the pseudocode provided in the datasheet. I have attached the code and the scope captures at the bottom of this post. 

- Able to write to the registers and did a sanity check by reading back the registers. 

- Pulsed the START pin high to start the conversion 

- DRDY pin did go low after start pin pulsed high

- polling for DRDY 0 instead of an interrupt 

- DRDY did force high on the first falling clock edge 

- sent the RDATA command and 16 clks afterwards to try to clock out the conversion data... however MISO just kept returning 0

- everything seems to be working but I just cannot clock out the result!!

Please provide some assistance. Thanks in advance. 

scope captures:

https://www.dropbox.com/s/bj81xcmidpah292/scope%20captures.pdf?dl=0

arduino code:

https://www.dropbox.com/s/et9cm1jrhfwir3u/adc.zip?dl=0

  • Hi Jessica,

    Thanks for your post!

    Can you please post the pictures and code here on the forum? I cannot access dropbox on the network.
  • Sure, sorry about that... 

    Here is the code:

    4544.adc.zip

    and here are the scope captures: 

    scope captures.pdf

  • HI Jessica,

    No worries and thank you for re-posting the data.

    Looking at page 2 of the scope shots, I see that the command is separated from the read command from clocking out data with /CS going high (between 0x12h and 0xFFh). Since /CS goes high, the read is turned off. /CS must stay low throughout the entire communication transaction.

    Also, since the read and write registers are a contiguous block of 15 registers, I suggest writing 2 separate blocks and not attempting to write to the calibration registers to prevent issues later on. Typically you do not want to write to these calibration registers as there are built in routines, incorrectly programming these registers can cause many issues.

    A few other things, for this device the reference must be no greater than AVDD -1V, which is currently in violation. Additionally, you cannot take a single-ended measurement with respect to AGND using a unipolar supply since the input will be outside of the common-mode input range. You may want to consider using the ADS1120 or ADS114S08 as they will allow single-ended measurements with a 5V reference.
  • I lowered the reference voltage and now am able to get conversion results! Thank you so much!