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.

MSP430 --> ADS1298 SPI UCB0RXBUF Problem

Other Parts Discussed in Thread: MSP430F2274, ADS1298, ADS1293

Hi

I am currently working with data converter ADS1298 (self made PCB board). The MSP430F2274 from http://www.ti.com/tool/ez430-rf2500 going to program the ADS1298. I have a problem on reading Register ID of the ADS1298.

I can manage to send data via SPI sending :0x11 (Stop Data Continuous) , 0x20 (ID register address) , 0x00 (number of register to read), then 0xAA (Dummy code).

The problem is, I suppose to get the ID = 0x92(10010010), but the the MSP430 always receive 0x0F (the picture below). It seems like the MSP430 outputting 0x0F to the SIMO pin.

I tried to disconnect MSP430 SOMI pin to the ADS1298 and directly connect the output of ADS1298 DOUT pin to the oscilloscope. And the result is fine 0x92(10010010) (picture below)

I suspect the problem is because the MSP430 running with 3.6V, and the ADS1298 is powered with 1.8V DVDD which output the SPI in 1.8V as well.

But, I have checked the MSP430 datasheet, the positive threshold voltage is 1.25-2.25V. As a reference I copy part of my SPI code I used here.

//-------SPI----------------

unsigned char ADS1298_SPI_Data(unsigned char data){        //Write to Register(WREG)
UCB0CTL0 &= ~UCCKPH;
UCB0CTL0 &= ~UCCKPL;

IFG2 &= ~UCB0RXIFG; //RX flag clear

UCB0TXBUF = data;
while(!(IFG2 & UCB0RXIFG)); //while loop check
IFG2 &= ~UCB0RXIFG; //TX & RX flag clear
IFG2 &= ~UCB0TXIFG;

Clear_ADS1298_Enable(); //CLEAR ADS1298 enable

return UCB0RXBUF;
}

Am I missing something in the program? or is it because of the voltage problem?

Thanks..

 

**Attention** This is a public forum