Multiple PCA9548A devices fail

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multiple PCA9548A devices fail

Jump to solution
1,550 Views
SMGENOMICS
Contributor II

Hi,

We are using the wonderful PCA9548ABS,118  I2C switch in several of our designs and it has been goign swimminly. Well until recently... we ran into an issue during system integration where several boards failed with SDA or SCL stuck low. Upon removing PCA9548ABS, the bus was pulled up correctly, but after replacing with new chip and running our tests the device failed again.

Now some context, the I2C bus goes between multiple PCBs some with long (1m) cables and our current power sequence is such that the remote boards' turn on and pull-up the I2C to Vcc1 ~200[ms] before the PCA9548 on our main board is powered up to Vcc2. In our case Vcc1=Vcc2=5V. Is this power sequence capable of damaging/stressing the PCA9548? According to AN262, power sequencing in this manner is safe, but I am not convinced since if there are internal ESD protection diodes in the PCA9548 pulled to Vcc2, which is initially 0V for 200[ms] while Vcc1=5V then these diodes would be forward biased and sink all the current from the I2C bus pull-up network. Does this make sense?

Before i throw some series resistors and external clamping diodes which can handle the worst case sink current, I would like to pick the brain of the NXP community.

Many thanks!

 

SM

0 Kudos
1 Solution
1,512 Views
reyes
NXP TechSupport
NXP TechSupport

Hi SM,

 

Thanks for confirming about the test using the RESET. If this did not help, then I think the device is getting damaged, and I cannot confirm it without doing a failure analysis, but most likely it is getting damaged because of the voltages on the pull-ups before turning on the device.

 

I don’t think that adding an external protection diode referenced to PCA9548ABS VDD pin could help since I think the problem is with the voltage directly on the pull-up of the i2c lines, but you can do some tests on your side to find out, it worth to try before doing a board modification.

 

About the max current allowed on the SCKx and SDAx pins, yes, the +/-20mA value in the Input current row applies to the total sum if all 8 channels are active. This is the limiting value and you should not go above this current.

 

Regards,

Jose

View solution in original post

4 Replies
1,524 Views
SMGENOMICS
Contributor II

Hello Jose,

Thanks for your insights.

We tried toggling the ~RESET pin on the PCA9548ABS however it did not help. Did I mention that the once the suspected damaged occurred leading to SCL/SDA bus stuck low, this persisted even after power cycling the board?

We will look into whether it is possible to delay the turn-on of the remote pull-up R until PCA9548ABS is fully powered. Do you think an external protection diode referenced to PCA9548ABS VDD pin could help. I am trying to think of solutions that would not require new board spin

A related question, can you tell us what the maximum allowed current on the SCKx and SDAx pins is? It is not clear whether the +/-20mA value in the Input current row applies to the I2C pins individually or as a sum total if all 8 channels are active. 

Best regards,

SM

0 Kudos
1,535 Views
reyes
NXP TechSupport
NXP TechSupport

Hi SM,

 

Have you tried to reset the I2C bus when it gets stuck low?

There is a way to do this by software in case SCL is not stuck low (only SDA is stuck low),  this is done by sending an extra clock pulses if the data line is stuck low. Sending 8 extra clock pulses will re-initialize the slave state machine. If the clock line is stuck, then there is not much that can be done without using a hardware solution.

In the case of the PCA9548ABS, you have an active LOW reset input that allows the device to recover from a situation where one of the downstream I2C-buses is stuck in a LOW state. Pulling the RESET pin LOW resets the I2C-bus state machine and causes all the channels to be deselected as does the internal Power-on reset function.

 

PCA9548ABS does not include internal protection diodes other than the 2000 V HBM and 1000 V CDM protection ESD diodes.

I would recommend to avoid turning on the pull-up resistors (I2C bus lines), before turning on the PCA9548, please try to add a delay circuit on the pull-ups voltage so the PCA9548 is turn on before the I2C bus.

 

When power is applied to VDD, an internal Power-On Reset (POR) holds the PCA9548A in a reset condition until VDD has reached VPOR (1.7V). At this point, the reset condition is released and the PCA9548A register and I2C-bus state machine are initialized to their default states (all zeroes) causing all the channels to be deselected. Before the registers and I2C-bus state machine are initialized, the channel selection can be unknown, reason of why it is not recommended to supply the pull-up before turning on the device.

 

Regards,

Jose

 

1,522 Views
SMGENOMICS
Contributor II

Hello @reyes ,

Many thanks for your useful insights!

We tried toggling the ~RESET pin on the PCA9548ABS however it did not help. Did I mention that the once the suspected damaged occurred leading to SCL/SDA bus stuck low, this persisted even after power cycling the board?

We will look into whether it is possible to delay the turn-on of the remote pull-up R until PCA9548ABS is fully powered. Do you think an external protection diode referenced to PCA9548ABS VDD pin could help. I am trying to think of solutions that would not require new board spin

Perhaps a related question, can you tell us what the maximum allowed current on the SCKx and SDAx pins is? It is not clear whether the +/-20mA value in the Input current row applies to the I2C pins individually or as a sum total if all 8 channels are active. 

Best regards,

SM

0 Kudos
1,513 Views
reyes
NXP TechSupport
NXP TechSupport

Hi SM,

 

Thanks for confirming about the test using the RESET. If this did not help, then I think the device is getting damaged, and I cannot confirm it without doing a failure analysis, but most likely it is getting damaged because of the voltages on the pull-ups before turning on the device.

 

I don’t think that adding an external protection diode referenced to PCA9548ABS VDD pin could help since I think the problem is with the voltage directly on the pull-up of the i2c lines, but you can do some tests on your side to find out, it worth to try before doing a board modification.

 

About the max current allowed on the SCKx and SDAx pins, yes, the +/-20mA value in the Input current row applies to the total sum if all 8 channels are active. This is the limiting value and you should not go above this current.

 

Regards,

Jose