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.

PCA9544A SMBUS and pull-ups

Other Parts Discussed in Thread: PCA9544A, TPD2E001

I am using the PCA9544A SMBUS mux.  I did not put pull-up resistors on the output of my prototype board like figure 11 shows in the spec sheet.  I am able to read data from the three attached battery modules, but am seeing more re-tries than I think I should.  I will be putting pull-ups on the outputs to try again tomorrow.  Any input or predictions or thoughts on the need for resistors on the 4-muxed output clocks and data.  ?  I am not doing a voltage translation in my design and every thing is 3.3Volts. 

  • Hello Mike,

    Thanks for the post! I would be happy to help you with your question.

    It sounds like you're trying to connect to devices on 4 outputs, but sometimes you are failing.

    You're already onto the reason for it. You do need to have pull-up resistors on all of the outputs.

    You can think of the PCA9544A as a series of 4PST switch. There is logic inside of it, which tells it to turn certain channels on and off. It purely connects a switch. The thing is, the FETs that are used are not designed to pass a high voltage through them, but instead are able to pass low voltages through them very well.

    What this means, is if you do not have any pull-up resistors on the outputs of the switch, then the voltage will not quite reach the full 3.3V as your input.

    Another thing to be weary of, is that when the channels are connected, you can think of them as a short, and that the total pull-up resistance will be the equivalent resistance of all the connected-channel's pull-ups in parallel.
  • Thank you!!!  I am heading to the solder station right now. 

  • I am only using 3 of the 4 channels.  I added 4.7K pull up for each of the used output Clk and Data lines.  I saw no real difference in re-tries.  Each cycle is 15 reads from 3 batteries or 45 reads per cycle.  I am seeing 30 re-tries per 10 cycles(450 reads) or about a 7% rate.  I am not using the interrupt so all the input and output interrupt lines are floating.  I have attached the output of my circuit for one battery showing the ESD protection parts.  The right side comes directly from the mux and the left side is where the battery connector is and where I installed the pull-ups.  It has spark gaps, TVS diodes, resistors. 

  • Hello Mike,

    Thanks for the information.

    After looking at your schematic, I see it looks like you have pull-down resistors on the SDA/SCL bus? Is that correct? If so, could you tell me the value of the pull-down resistors?

    Another question for you is, can you obtain a screenshot from an oscilloscope during one of the failed transactions? Scope shots generally are quite helpful when debugging I2C line failures.
  • The pull down is a 1Meg.  The two series resistors are 100R. Will do some O-Scope work later today.

    Johnathon, are you a TI employee or just a good Samaritan ??  or both :)

  • Hello Mike,

    Thanks for the info. The series resistors seem a little high IMO. with higher currents going through the SDA/SCL lines, you could be seeing large voltage drops across the line. My quick math shows a VOL difference of roughly 0.3 V across the series resistors, which could get worse when you add in the parasitics of internal pull-down FETs and the switch, and the possibility of more current.

    I am a TI employee, but I like to do what I can to help. :)
  • Just for more info....I am talking to three batteries that use the BQ20Z655(TI gas gage).  Each battery also has 2 of the 100R resistors in series with the clock and data lines for a total or 400R.  This is for ESD and has the same circuit including the 1 meg pull down.  Things are crazy here, but I am going to try to get some scope shots today.  I know I can get a clock and data line shot, but not sure I can "catch" a failed read cycle. 

  • A failed transaction would be helpful. If you're unable to catch one, a regular transaction may point us in the right direction.

    I'll be awaiting the scope shots. Thanks!
  • I have my first scope shots and it DOES verify what you said:  I need pull-ups or the voltage will; not reach the proper value.  Without pull-up only gets to 2.3 to 2.5 Volts.  With 4.7K pull-up the voltages do reach 3.3V.  This trace is taken at the connector so there is 200R or series resistance on each side. Attached should be a Microsoft word file with the O-scope screenshot pictures.  Might not be getting my file attached correctly????

    Att O-Scope_I2C.docx

  • Hello Mike,

    I got your pictures.

    Indeed, it does look like you require the pull-ups. A VOL of ~2.5V sits on the edge of the valid VIL requirement for I2C (70% of 3.3V = 2.3 V), which would explain why you are getting so many communication failures.

    Since this signal is taken in between two series resistors, we can assume that we are looking at the intermediate voltage when a 0 is being transmitted (half of the voltage drop that will be presented as a result of the two 200 ohm series resistors). It looks like you can expect to have a VOL of ~ 0.5-0.7V as a result of the series resistors.

    30% of VCC = VIL_MAX = 1V, so you will need to make sure that you keep the VOL at the ICs below this to ensure that a 0 gets interpreted correctly.

    Things to keep in mind:

    1) As you increase the pull-up resistor strength (reducing their value), your VOL_Delta across your 400 ohm series resistance will increase, possibly pushing you over the 1V limit (you should really aim for below 1V to give yourself some noise margin).

    2) Reducing the series resistor values will drop the VOL_Delta.

    3) If you are concerned about ESD, have you tried taking a look at ESD devices which suppress ESD surges? These devices are designed to allow you to not need series resistors and will absorb the ESD energy on a line. They are sometimes referred to as TVS diodes, and act similar to Zener diodes. An example of such a device would be the TPD2E001.

  • Thanks Jonathon. I guess that is why you are a GENIUS with 9755 points and I am only a prodigy with 80 points...LOL I will do some more interpreting of your response and further testing with the pull-ups and let you know how it is going.
  • Thanks, Mike!

    Please let me know if you've had more luck.