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.

ADS1248 EVM Internal Reference

Other Parts Discussed in Thread: ADS1248

Hi there,

I'm working with a stand-alone ADS1248 EVM and am trying to hook it up to my EKS-LM4F232.  I'm having issues with the internal reference, though.  I use this piece of code to turn on the internal reference and select it for use in conversions:

//write to MUX1 to set up internal reference
ROM_SSIDataPut(SSI3_BASE, 0x42);
ROM_SSIDataPut(SSI3_BASE, 0x00); //0x00 is # of bytes to write minus 1
ROM_SSIDataPut(SSI3_BASE, 0x30); //0x30 sets up internal reference for use

When I measure the internal reference on the board, it is always 0V and not the expected 2.048V.  So, whatever analog input I try to measure spits back the maximal return value (this is even the case when I use the system monitor to measure the internal temperature diode.)  (I'm just in a test phase...the ADS1248 is running in SDATAC mode; I keep start and reset tied high and just request conversion results periodically.)  I've confirmed, by reading the MUX1 register, that the ADS1248 has been configured appropriately.  I'm not sure what could be going wrong.  

Obviously, the culprit could be my connections.  Here's how I have everything connected:

 Jumper J7 Serial Interface Pins: 

J7.1: is connected to CS (FSS) on my Stellaris board

J7.2: is tied high.

J7.3: is connected to the SPICLK on my Stellaris board.

J7.4: is grounded.

J7.5: unusued

J7.6: is tied high

J7.7: unused

J7.8: unusued

J7.9: unused (I'm not monitoring DRDY to get conversions)

J7.10: is grounded.

J7.11: attached to SPITx on my Stellaris board

J7.12: unused

J7.13: attached to SPIRx on my Stellaris board 

J14-17: unused

J18: grounded

J19-20: unused

Jumper J11: Power-Supply Input:

J11.1 - J11.2: unused

J11.3: connected to 5V from a power supply

J11.4: grounded

J11.5: connected to ground on my Stellaris board

J11.6: connected to the ground from my 5V power supply

J11.7-8: unused

J11.9: connected to 3.3V output off of my Stellaris board

J11.10: unused

Jumper J1 is in position 1-2.

I really appreciate any feedback.  Thank you!

-David 

  • Hi David,

    It appears that the digital supply is working, but the analog is not.  There is a rather interesting configuration for the analog supply, and I would suggest bypassing the bipolar control circuit altogether.  You should be able to measure from AVDD to AVSS and you should see a supply voltage of 5V to verify.  One thing you could do is connect the analog supply to J10.  Pull the jumpers and connect AVDD to pin 2, and ground to pin 4.

    Best regards,

    Bob B  

  • Hi again Bob,

    We made the changes you suggested, but are still running into some issues.  We confirmed that we get 5V from AVDD to AVSS, but are still getting 0V for our internal reference (measured between REFCOM and TP3).  What else might we be doing wrong?  Thanks again!

    -David

  • Hi David,

    It appears from the descriptions that it should be working.  One thing you should do is verify your communications with an oscilloscope.  If your communications is incorrect, you may still appear to be reading back the same as what you think you wrote as they were both incorrect.  Can you send me scope shots of your register write for MUX1?  SCLK should dwell low, and data should be changing on the rising edge of SCLK and stable on the falling edge.

    Best regards,

    Bob B

  • Hi again Bob,

    We made the changes you suggested and eventually got the readings we wanted.  I still have one question about setting up the registers on the ADS1248, though.  I'd like to set up the ADS1248 to run at 20 SPS and use the internal reference as I've described above.  The current code I have gives me some issues...:  

    First I send the SDATAC command and then delay the filter resets (I delay for the time indicated in table 16 of the data sheet).  Then I write to the SYS0 register to change to 20 SPS and delay as the filter resets again (again for the appropriate time specified in table 16).  Then I write to the Mux1 register and delay appropriately again.  

    This code sequence gives me trouble though...often times the ADS1248 will return a max value if I have the delay after writing to the Mux1 register.  When I comment that last delay out, the ADC reads out fine.  (It seems like the write operation I make to Mux1 either doesn't work or gets wiped out by the time I start trying to read out values.)

    Am I doing something pretty wrong here?  

    -David 

  • Hi David,

    You really shouldn't have to wait between sending commands except for SDATAC.  The SDATAC command takes place following the current conversion.  You should be able to do a register block write.  If you do write individual registers, then if you have control over CS, I would toggle CS between transactions to reset the SPI communication in case it has been corrupted in some way (like a spurious noise on the SCLK line.)

    When you are reading out the data, are you using the RDATA command?  Or are you going to RDATAC mode?

    Best regards,

    Bob B

  • Okay.  That sounds good.  So, I should be able to do something like...send SDATAC, delay appropriately.  Then, send 0x42, 0x2, followed by the two bytes I'd like to write into the Mux1 and Sys0?  

    We are using the RDATA command to get conversions (the device stays in SDATAC mode throughout operation).

    Thanks again!

    -David

  • Hi David,

    Yes, that would be the appropriate way to write the registers.

    Best regards,

    Bob B