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.

TMP431: Registers are not behaving as expected

Part Number: TMP431

We have been having trouble with a TMP431C device where the registers do not initialize to the reset values after power up.

The temperature registers seem to be OK. And hard-coded ones or zeros in registers seem to be mostly good. But the part does not seem to be initializing correctly.

Register 0x3 always reads 0xFC which doesn't make sense.

Sending soft reset commands doesn't change anything.

And we are not able to write to the configuration registers.

See the attached register dump.

TMP431 Registers.txt
Reg Offset : 0x00 = 0x20
Reg Offset : 0x01 = 0x2f
Reg Offset : 0x02 = 0x00
Reg Offset : 0x03 = 0xfc
Reg Offset : 0x04 = 0x0f
Reg Offset : 0x05 = 0xff
Reg Offset : 0x06 = 0xff
Reg Offset : 0x07 = 0xff
Reg Offset : 0x08 = 0xff
Reg Offset : 0x10 = 0x10
Reg Offset : 0x13 = 0xf0
Reg Offset : 0x14 = 0xf0
Reg Offset : 0x15 = 0x60
Reg Offset : 0x16 = 0xf0
Reg Offset : 0x17 = 0xf0
Reg Offset : 0x18 = 0xff
Reg Offset : 0x19 = 0xff
Reg Offset : 0x1a = 0x1c
Reg Offset : 0x1f = 0x03
Reg Offset : 0x20 = 0xff
Reg Offset : 0x21 = 0xff
Reg Offset : 0x22 = 0x7e
Reg Offset : 0x25 = 0x0c
Reg Offset : 0xfd = 0x31
Reg Offset : 0xfe = 0x55

  • Hi Dave,

    To confirm, is only one unit displaying this behavior? 

    Also, are you able to capture a read and write to one of these bad registers on an oscilloscope or logic analyzer?

    Best Regards,
    Brandon Fisher

  • We have seen this on two units tested so far.  We looked at the I2C signals using both an oscilloscope and logic analyzer and the signals look good.  We always receive ACKs from the TMP431 so it recognizes the device address each time. 

    We are puzzled because some registers are behaving correctly, like the device and manufacturer ID registers.  We ran a loop reading those registers over 40,000 times and always get the correct values (0x31 and 0x55).

    We noticed that the I2C low levels presented to the TMP431 are 0.4V-to-0.5V because the signals are driven by a voltage translator that results in a voltage that is one diode drop above ground.  But if this was an issue I think that we would see all sorts of problems at all the registers.

    So there seem to be two main issues: the registers do not seem to be initializing to their reset values at power-up and we cannot write to the configuration registers.

    I tried to attach a file showing the logic analyzer read/write results at register 0x03/0x09 but I couldn't figure out how to include an attachment. 

  • Hi Dave,

    With the reply tool open, you should be able to load a file or image using the Insert -> Image/Video/File dialog as shown below/

    You can also drag-and-drop files from windows explorer into the reply text window, and it should allow you to upload files that way as well. 

    We noticed that the I2C low levels presented to the TMP431 are 0.4V-to-0.5V because the signals are driven by a voltage translator that results in a voltage that is one diode drop above ground.  But if this was an issue I think that we would see all sorts of problems at all the registers.

    That is a bit unusual, but I agree 0.4-0.5V low logic levels shouldn't be the cause, as that is within the TMP431's VIL specification.

    Given the issue you are reporting, I would recommend performing an ABA swap to see if the issues persists at the device level. Assuming it does not, and the I2C transactions you share look okay. I would actually recommend submitting the failing units to us as a return: www.ti.com/.../customer-returns.html.

    That will allow us to check these devices in our production test environment, and to inspect them for any potential damage that could cause such a failure. 

    Best Regards,
    Brandon Fisher

  • We will try swapping out the part.  I'm attaching the logic analyzer waveform for a read/write/read cycle, attempting to write 0x04 to Configuration Register 1.  The register seems to be stuck at 0xFC.

  • Thanks Dave,

    Looking at your capture I don't see anything obviously wrong that would cause this. I'll standby for any results from the swap. 

    Best Regards,
    Brandon Fisher

  • Before we got to the step of swapping parts we made a software change to remove the unnecessary SCL clocks between the Stop and Start commands and that solved the problem. I would think the extra clocks should be ignored and when the Start command was received it would kick off the next data cycle. But it looks like the device does not like those extra clocks.  So it looks like our problem has been solved.

  • Hi Dave,

    Thanks for the update. I'm glad you figured it out. Not sure how I missed those clock cycles in-between bytes, but that does seem like the likely culprit. 

    Best Regards,
    Brandon Fisher