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.

TMP102: Stops responding part way through returning data

Part Number: TMP102

I have seen a number of instances where the TMP102 appears to stop responding part way through returning data.

It then does not respond to the next few addresses, then starts responding OK again.

I2C clock speed 200kHz. All timings appear to be within spec.

The TMP102 thermometer IC stops returning data (sometimes part way through a cycle) then does not return an ACK when subsequent addresses are sent. This gets worse with increased temperature (30°C - 60°C). This has been seen on some, but not all, of the systems in test.

Have included 2 images. Yellow = SCL, blue = SDA. Decode shows address to the TMP102 in yellow and data from the TMP102 in blue.

First image shows zoomed out view. Device working OK, then stops responding part way through returning data. Remains unresponsive when the address is repeatedly sent, then comes back to life again.

Second image shows a zoomed in view of the device stopping to respond part way through sending the second byte of data.

Shows device stop responding, then start again.Detail showing TMP102 stop responding part way through sending 2nd byte of data

As a temporary 'fix' I have found that the following appear to stop this issue from happening:

  • Slow down I2C clock rate from 200kHz to 125kHz.
  • Increase delay between end of receiving data to start of sending next address from 4us to 100us.

Although these 'fixes' appear to work, I've no evidence that they will work across all device and across the full temperature range.

I need to understand the root cause of the problem (which has been seen in approx. 5 out of 40 systems).

Any ideas please?

  • Hi Roger,

    Can you get me a zoomed-in image which measures Hold Time? See red highlight in reference image.

    Thanks,

    Ren

  • First clock cycle after start, master writing address to TMP102.

    Cursors from end of SCL falling edge to SDA falling edge shown at 350ns.

    1st clock after start showing T(hd dat) > 350ns

    Subsequent clock cycles during master writing address to TMP102

    Cursors show delta 420ns.

    Subsequent clock cycles, master writing address, T(hd dat) 420ns

  • Hi Roger,

    Thanks for the thorough explanation and analysis. I'll need to ask for your patience while I try to re-create your issue on my bench. Please allow me a couple business days to get back to you.

    In the meantime, I do have one side comment which may not be related to your issue. It's standard practice in an I2C write transaction for the master to provide an acknowledge following each 8 bit byte. However, during an I2C read transaction, the master should provide a not-acknowledge (NACK) after the last byte it wishes to receive. If an ACK is provided in this instance, the slave device may pull down on the bus in preparation for the next byte.

    Thanks,
    Ren
  • Thanks Ren,

    It is an odd one. I've been using I2C for 30 years and I've not come across this behaviour before.

    I take your point about the NACK at the end, hadn't spotted that one. Wouldn't have thought that it could be having an effect on this particular problem as the start condition should reset everything. What do you think?

    The strange thing is that the TMP102 just seems to stop responding. Sometimes this will be when it's part way through sending a byte of data, not necessarily at the byte boundary. It's not doing it on all devices, only on a few boards (maybe 10%). Not seen any which do it at room temperature, only as the temperature rises (but for some this can be from around 30°C, on others it's higher).

    A few more traces to look at. In this one the data should be 0x25 0x60. Part way through returning the first byte the TMP102 apparently stops responding and the data line goes high (which the master interprets as all 1's). After the master sends a few addresses with no response, the TMP starts responding again (see zoomed out view at the top).

    Stop resonding part way through 1st byte.

    Zoomed in further showing the point when it stops responding:

    Zoomed in to where response stops

    FYI, setup is with 1.5GHz active probes, 1GHz 'scope, sampling at 1GS/s, channels set to full bandwidth.

  • Have done a firmware change to the master to give NACK (rather than ACK) at the end of the cycle.

    Still have the same problem.

    First image is for the good cycle (showing the NACK):

    Change to give NACK (from master) after receiving 2nd byte

    Second image shows the failure still occurring. Data should be 0x25 0x00:

    Still fails in the same way when master gives NACK at end of cycle

  • Hi Roger,

    Sorry for the delay getting back to you. Is it possible for you to reduce your update rate? Please note that, by default, TMP102 makes a temperature measurement every 250ms. It can be configured to measure temperature every 125ms. There isn't any value in polling it at fast as you are.

    Thanks,
    Ren
  • Hi Ren,

    I've tried 2 things:
    1. Slowing down the clock rate from 200kHz to 125kHz.
    2. Insert a delay of 100us between the end of one cycle and the start of the next.

    Both of these appear to work independently, and together.
    With both of these in place there have been no more reports of problems in instrument.

    I appreciate that continuous polling is unnecessary as the data changes at a much slower rate, however what I don't understand is why I'm getting problems (on some devices at temperatures above 30°C and getting worse as the temperature increases) when, so far as I can tell, I've got everything well within spec.
    I'd really like to get to the root cause of the problem, then I can be confident that what I've got in place has really fixed it, not just decreased the likelihood of the problem occurring. I don't want this to come back and bite me with reliability issues in the field in a couple of years.

    By continuously polling I appreciate that there are many reads before the data gets updated, however it means that I don't have to put a big counter into the FPGA master as this takes up gates unnecessarily.
    If I have to do it then I will, but should it be necessary?
  • Hi Roger,

    I was able to recreate your issue. I believe that a reduction in polling rate will help mitigate the issue. We've been quite successful with this device in many other applications in the 10 years since it was introduced, and have not encountered this problem.

    I need more time to investigate the issue before I can say more about it. I have to get other teams involved. For this reason, I can't provide a timeline at this moment.

    Please bring this issue up with your sales representative. The sales teams help to set priority within the business units.

    Thanks,
    Ren
  • Thanks Ren,
    I'll run it at reduced polling rate and monitor for any errors.
    This certainly does appear to be a stable work around.
    Regards,
    Roger