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
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
UCA2IFG &= ~UCTXIFG;
while(!(UCA2IFG & UCRXIFG)); //Wait for data to be ready on RX buffer
adc_read_val_lsb = UCA2RXBUF; //read RXBUF for LSB