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.

ADS7924: ADS7924 I2C register read/write

Part Number: ADS7924

Dear Evan,

unfortunately the old thread (same name) seems to be closed so I have to start a new one.

Got new hardware now, this time produced in a professional reflow process instead of hand soldered. Unfortunately still the same problem: Can't read/write the ADS7924 registers.

Did exactly the sequence you told me:

1) Read the device ID (register 16), before resetting the device
2) Reset the device by programming 0xAA to register 16
3) Read the device ID again
4) Program register 0 with 0x80 to put it into awake mode as you were previously trying

That's all in one sequence, first action after powering the device.

I even can't read the device ID of the ADS7924 but the device acknowledges it's address.

Have checked the supplies:
AVDD: 4.99V
DVDD 5.16V

Have also checked the levels on the I2C lines, looks good.

Schematics:

Have tried to get the ADS7924EVM-PDK but failed: got just the ADS7924EVM, twice.

All other I2C devices respond on their addresses, so there is no other one using the same address.

What can we do?

Best regards

René

  • Hi Rene,

    I looked at your previous logic shots and it appears to me you are using the wrong value for addressing the device.  It appears you are writing 0x48 (the address shown in the datasheet) but you should be sending 0x90.  It is easy to forget to left shift the 7-bit address by one.  See Figure 29 on page 22 of the ADS7924 datasheet as an example.

    Best regards,

    Bob B

  • Dear Bob,

    I did use addresss 0x90 (and you see in the trace that the MSB is 1 - it's just the analyzer interpreting the address that way).

    Have tried to attach the trace again (now Edge, yesterday Firefox).

    Have tried the read both with repeated start and with a separate message.

    Same for any ADC readings, that also failed so we started with the easiest Task - read the device ID.

    Best regards

    René

    2018_02_15.docx

  • Hi Rene,

    I sense your frustration and I apologize for my quick response without taking a closer look at the logic analyzer shots with a tool I'm unfamiliar seeing.

    When I have used the ADS7924 in the past, I always set the device to Awake in the 0 register first when reading and writing the remaining registers. The default startup mode is Idle. This would seem to be an unnecessary step as you write to register 0 when in idle, but the ADS7924 is in a low power state and it has never been clear to me what is powered down in the idle state. Anyway, using this method has always worked for me in the past and is worth a try.

    If this added step does not help, then I would suggest getting a regular oscilloscope shot of the SDA and SCL close as possible to the ADS7924 pins. There may be a glitch in the signals that may be causing an issue not clearly visible in the logic analyzer. This would seem highly unlikely based on the device ACKs.

    One other consideration is to make sure that you give some wait time following the RESET to allow for the device to stabilize and release from the reset condition before attempting to communicate.

    Best regards,
    Bob B
  • Dear Bob,

    thank you very much for your reply,

    By setting to awake mode first I've been able to read the Device ID now.

    So hopefully all the rest will also work.

    Best regards

    René