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.

TCA9534A: Cannot turn on 2 LEDs at the same time

Part Number: TCA9534A

Hello,

I'm currently in production to produce 30 boards that using TCA9534APWR parts from digikey. Most of them works well with the firmware. Just 1 board that has very strange behavior.

Here is the schematic,

The port polarity = 0x00, configuration register = 0x00 (output direction). Always this value. No changes after initialized.

When I write to Output Port register a byte that has two bit 0, such as 0x03, 0x05, 0x11,.. the Configuration Register and Output Port Register automatically changes value to 0xFF. And all LEDs are turn off.

But, when write to Output Port register byte that has 1, 3, 4, 5, 6, 7, 8 bit 1, such as 0x00, 0x01, 0x29, 0xFF, it works fine as normal.

Here is the serial debug to test port values,

data=0x01
Port dir: 0
Port out: 11111110
Port pol: 0
------------------
data=0x03
Port dir: 0
Port out: 11111111
Port pol: 0
------------------
data=0x05
Port dir: 11111111
Port out: 11111111
Port pol: 0
------------------
data=0x11
Port dir: 11111111
Port out: 11111111
Port pol: 0
------------------
data=0x00
Port dir: 0
Port out: 11111111
Port pol: 0
------------------
data=0x29
Port dir: 0
Port out: 11010110
Port pol: 0
------------------
data=0xFF
Port dir: 0
Port out: 0
Port pol: 0
------------------

I already changed the bus clock to lower than 100KHz, but it seem no changes. How can I workaround to fix this issue?

Best regards.

  • "Here is the schematic,"

    It doesn't look like your schematic was uploaded.

    "The port polarity = 0x00, configuration register = 0x00 (output direction). Always this value. No changes after initialized.

    When I write to Output Port register a byte that has two bit 0, such as 0x03, 0x05, 0x11,.. the Configuration Register and Output Port Register automatically changes value to 0xFF. And all LEDs are turn off.

    But, when write to Output Port register byte that has 1, 3, 4, 5, 6, 7, 8 bit 1, such as 0x00, 0x01, 0x29, 0xFF, it works fine as normal."

    Can you capture the write transaction where you set 0x03/0x05/0x11 into device on an o-scope with SDA/SCL? My current guess is, this may be some kind of code related error. We should be able to tell by seeing what data is actually being sent to the device.

    -Bobby

  • The schematic is as below. I will post the I2C data capture later.

    But how to explain the case that it works well when received a byte that contains more than 2 bit 0? I'm not think it's because of the error in transmission line.

  • Hello,

    Thanks for the schematic upload.

    I don't see anything wrong with the schematic other than pin 12 floating (would not cause this kind of problem you are seeing).

    Whats the Vfd of your LEDs? If I assume ~3V then we are probably still okay in terms of IoL sink capacity of the device.

    "But how to explain the case that it works well when received a byte that contains more than 2 bit 0?"

    My guess is this may be related to the code in which case we would see the difference between what was meant to be sent out on SDA and what is actually seen on SDA.

    Another thing we may want to look at is Vcc during the I2C transactions on the o-scope, make sure Vcc isn't dipping and going below UVLO.

    -Bobby