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.

Data from Converter seems to be complete wrong

Other Parts Discussed in Thread: ADS1248

We are using the ADS1248 in our project.

I'm trying to debug my ADS1248 driver. Communication via SPI seems to be OK.

The ADS1248 is connected to following supplies: AVDD = +5V DVDD = +3.3V     AVSS and DVSS = 0V   VREF_P1 = 2.5V VREF_N1 = 0V (VREF_P0/VREF_N0 are not important for now)

I can read and write all the registers. I also tested the SELFOCAL and other commands.

To understand an test the device I first tried to measure AVDD and DVDD via 6 and 7 in MUXCAL2:0   REFSELT1:0 = 01

But then I try to get some conversion data I get unusable values. After programming all the registers I apply a 1ms START Pulse.

After finding DRDY low I sent  RDATA  NOP NOP NOP commands reading back data at the same time.

Here you can find the register read back before the START pulse and the Value I read back.

Info: Readback registers 0 .. 14: 00 00 2F 00 40 AA FC 80 09 40 86 FF 00 00 00
Info: DATA: 03 03 59 F7
Info: DATA: 03 03 59 97
Info: Readback registers  0 .. 14: 00 00 2E 00 40 AA FC 80 09 40 86 FF 00 00 00
Info: DATA: 2F 2F 11 14
Info: DATA: 2F 2F 11 04

As you can see I read back data twice for testing. After the first RDATA + NOPs I gave a second START Pulse.

I wonder why The first byte is send out without the RDATA command completely sent.

The value 035997 was read back for the DVDD 3.3V

The value 2F1104  was read back for the AVDD 5V

The 2.5V VREF has been used.

Are the registers set up OK for the System Monitor Test?

The data don't seem to make any sense. Is the data OK, but my calculation not?

I thought LSB has the value of VREF/ 2^23-1 ~ 296nV

I also measure external values also with no sense making values. But I first want to fix the System Monitor Problem.

Thanks for your help.

Michael

  • Hi Michael,

    I think your issue is related to the operational mode.  The default at powerup is RDATAC mode.  What happens here is the result data is posted to the output register as soon as the conversion is complete automatically.  In this mode, all you have to do is send 24 clocks and the data can be read out.  In this case you do not need to send the RDATA command.

    The other mode of operation is SDATAC, which does not automatically post the results to the output register.  In this case you must send the RDATA command.

    Unless you are continuously reading data at a high data rate, I would issue a SDATAC command.  The RDATAC mode can be problematic when reading/writing to registers too, so I would also issue SDATAC command before writing and reading registers then return to RDATAC mode if desired.

    For what it appears that you are doing, I would just issue a SDATAC command early in your program sequence and leave everything else the way it is to see if you get the expected results.

    Best regards,

    Bob B

  • Hi Bob,

    thank for your answer. I'll try to send SDATAC at the beginning. Good hint !

    But the other problem is that the values I read seem no to fit to the AVDD and DVDD I connected.

    What value are correct for AVDD +5V and DVDD 3.3V in those System Monitor modes?

    Where my register settings OK for reading the AVDD and DVDD with MUXCAL 6 and 7 ?

    Maybe the chip is not working. Maybe I made something wrong. Setting registers, giving START pulse, waiting for DRDY, sending RDATA and read back the data ist all what I have to do. But this seemd not to work.

    Thanks.

    Michael

  • Hi Michael,

    When you use the system monitor functions, you will not get a precise value.  It will be about 1/4 the actual, and can be quite noisy.  It is not meant to be a precise measurement, just a sanity check for operation.

    Best regards,

    Bob B

  • Hi Bob,

    I just checked the SDATAC command. Now I get the 3 Bytes after RDATA. First Problem solved.

    Now I'm trying to understand the calculation of the measured values. Even if it only a sanity check the measured values should not differ in a factor of 14. For 3.3V and 5V.

    Now I get these Values:

    Info: Readback registers (0..14): 00 00 2F 00 5E AE FC 80 09 40 86 FF 00 00 00
    Info: DATA: 00 03 54 BB
    Info: DATA: 00 03 55 3B
    Info: Readback registers (0..14): 00 00 2E 00 5E AE FC 80 09 40 86 FF 00 00 00
    Info: DATA: 00 2F 16 DD
    Info: DATA: 00 2F 16 A7

    This means: 0x354BB for 3.3V and 0x2F16DD for 5V

    I calculated the result: ~0.5V for 3.3V and ~7.35 for 5V    This seems to be not only not precise it seems to be completely wrong.

    When I measure external pins I also get the same values. All around 0x30000.  It even makes no difference when I change gain or idac values.

    The measured values stay constant no matter what I change.

    So I hoped to be able to use the sanity check to find out if the chip is broken or not. But I don't know which values I can await for monitoring AVDD 5V and DVDD 3.3V.

    Thanks.

    Michael

  • Hi Michael,

    I'm not sure what is going on.  You could try using the internal reference instead of the external.  You could try doing a self offset calibration.  You could try leaving the START pin high instead of toggling it.  Also remember, START must be high when writing and reading registers.  See page 37 of the datasheet under SPI Communication During Sleep Mode.

    Best regards,

    Bob B