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.

ADS8860: SPI Interface between msp430 and ADS8860

Part Number: ADS8860

 Hello TI Team


I am Dhiren presently working on 16Bit ADC ADS8860 which is interfaced with msp430 on its SPI lines of UCA2. I am using 3-Wire CS Mode Without a Busy Indicator where DI pin of ADS8860 is pulled up to DVDD using 4.7K, CNV pin(P5.7) is connected to CONVST pin of ADS8860, CLK pin is connected to SCLK pin of ADS8860, SOMI pin of msp430 is connected to DOUT pin of ADS8860.

I tried to read ADC count as follows(SCLK = 4MHz):

Set the CONV pin and after delay of 1millisecond reset the CONV pin(Conversion time = 1Us). After reset of the CONV pin I  set UCA2TXBUF to 0xff and send data to SIMO pin and then waited for UCRXIFG to get set. Now this bit UCRXIFG got set but I received only data = 0 even after changing the voltage on AINP pin to 1 V w.r.t. grond. My reference is 3.3V

I have following questions:

1)    As per the state machine for SPI of msp430, is it necessary that the buffer UCA2TXBUF be written everytime  to read data from RXBUF even though as per ADS8860 SDI pin needs to be pulled up and no data can be sent to it?

2) I have pulled up SDI pin via 4.7K and not connected it directly to DVDD. Would it affect the output on DOUT?

2)    Now after sending data on MISO pin and waiting for UCRXIFG to set, I am still getting data = 0 for input = 1V. Also found that I am not getting DOUT waveform as desired as the amplitude is lower than expected. I am sending the software and the waveform of SCLK(Green waveform), DOUT(blue waveform) and CONV pin(yellow waveform). Here I would like you to tell me whether my connection and method of reading data is correct?

Connection:  SOMI of msp430 connected to DOUT of ADS8860, CLK of msp430 connected to SCLK of ADS8860, P5.7 of msp430 connected to CONVST pin of ADS8860

                          Just for checking we did not use ref0063 as recommended and connected REF pin , AVDD, DVDD to 3.3V, DI pin of ADS8860 is connected to 3.3V via pullup resistor of 4.7K                                                                                                                                             

Software for SPI communication being called in while loop:

P5OUT |= 1 << 7;//CONV pin is set and reset after delay of 100Us

__delay_cycles(240000);//100Us delay

P5OUT &= ~(1 << 7);

UCA2TXBUF = 0xFF;//data = 0xff sent via MOSI pin

while (!(UCA2IFG & UCTXIFG));//wait for TX data sent

UCA2IFG &= ~UCTXIFG;//Clear TXIFG flag

while(!(UCA2IFG & UCRXIFG));//Wait for data to be ready on RX buffer

adc_read_val_msb = UCA2RXBUF;//read RXBUF for MSB

UCA2TXBUF = 0xFF; //data = 0xff sent via MOSI pin

while (!(UCA2IFG & UCTXIFG)); //wait for TX data sent


while(!(UCA2IFG & UCRXIFG)); //Wait for data to be ready on RX buffer

adc_read_val_lsb = UCA2RXBUF; //read RXBUF for LSB

  • Hello Dhiren,

    Based on your description, you are setting CONV high for 100uS to 1mS, and then taking it low.  This is more than enough time to complete a conversion (maximum time is 710nS).  I also see 16 SLCK's at 4MHz, which meets all timing requirements.  There is nothing else the MCU needs to do to get data out of the ADS8860.  

    This is likely a hardware issue.  Are you using 1uF capacitors on DVDD and AVDD?  If these capacitors are missing, the part will not operate correctly and not provide any data.  Also, the REF pin should have >10uF capacitor.  In order to get datasheet performance, you must use a precision reference.  However, the part will still function if the REF pin is connected to the 3.3V analog supply.

    Can you take some voltage measurements with a DMM to verify each of the pins have the expected voltage?

    1.  Verify 3.3V on REF (pin 1), AVDD (pin 2), DVDD (pin 10), and DIN (pin 9).

    a.  It is O.K. to connect DIN through 4.7kohm resistor to DVDD.

    2.  Verify that AINN (pin 4) is 0 volts.

    3.  Measure voltage on AINP (pin 3), should be a non-zero voltage between 0V and 3.3V.

    Please refer to the ADS8860EVM evaluation board schematic for an example.

    Keith Nicholas
    Precision ADC Applications