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.

TXB0304: TXBN0304RSVR: using pull-ups and pull-downs

Part Number: TXB0304

If the TXBN0304 is used in a single direction application (i.e. data only flows from port A to port B), can a strong pull-up (i.e. 1k ohm) be used on the input side (port A)?  Will using such a strong pull-up cause damage the TXBN0304, or potentially degrade the part overtime?

  • As long as you stay inside the absolute maximum ratings, you will be OK.

    However, an external 1 kΩ resistor would form a voltage divider with the internal 1 kΩ one. You need a much stronger resistor to get a valid voltage level.

    Why can't you use a unidirectional or direction-controlled level shifter in this application?

  • In hindsight a uni-directional level shifter would have been more appropriate, but now we are hoping to not have to spin the board.  So unless there is a drop-in replacement for the TXBN0304 (which I have been unable to find), then we're stuck with trying to make this work.

    The issue that I have is that I use the TXBN0304s on an RMII interface between an Ethernet Switch and a CPU (see snapshot below).  The parts work fine in normal operating conditions, but when the Ethernet Switch is initialized it reads the pull-up and pull-down straps on the P0_RXD0 and P0_RXD1 (R251 and R252 below) during reset to determine the operating mode of that bus.  Apparently with a 20k ohm (or weaker) pull-up on P0_RXD0, the TXBN0304 is pulling the signals too strongly low and the Ethernet Switch is reading the wrong mode of operation.  (Since P0_RXD1 is pulled-down then being driven low by the TXBN0304 is not a problem).  When I changed to a 1k ohm pull-up on P0_RXD0 the Ethernet Switch was able to read the configuration straps properly and put the RMII bus in the proper mode.  And the 1k ohm pull-up did not seem to have any adverse affects during normal operating mode.

    Do you see any issues with this implementation?  And if so, do you have any suggestion on how to improve it?

  • I'm a bit surprised that the system works with 1k pull-ups. The output drivers of the TXB0304 have series 1kΩ resistors:

    The outputs are limited by the 1kΩ resistors so that the external driver (the CPU or Ethernet Switch in your case) can drive the output to a new state.

    By adding a 1kΩ pull-up on the output, you are essentially guaranteeing that the inputs to the device (red lines) are held at 1/2*Vcc, which can cause oscillation and will definitely cause excessive current draw and reduce the lifespan of the device. It should also cause the same issues at the external devices' inputs.

  • I just thought of a possible solution.

    It sounds like you only need the outputs to be forced high when the system first powers on -- you could setup a short timer circuit and hold the OE pin high during the system startup (or use a pull-up and have the CPU enable the translator directly). That way you could use weak pull-ups and get the desired results.

    Either way I think a board change will be required.
  • But the TXBN0304 are only operating in one direction and the 1k ohm pull-up are on the input side of the port.

  • The buffers do not turn off during operation regardless of direction -- that's how the device operates as "auto-bidirectional"
  • So should I use the formulas in section 8.4.2 to determine the value of pull-ups and pull-downs for the "receiver"? This would make the pull-ups and pull-downs even stronger. I would just need to make sure that the Ethernet Switch can handle the extra current draw on those pins.
  • I would go with a pull-up resistor smaller than 538 ohms, which is what is required to keep the voltage divider output at more than VIH (0.65*Vcc) when the line is left floating. A smaller resistor will improve the shoot-through current in the TXB device, but will also require more current to operate.... so it's kind of a balancing act. If it were me and the only solution were a pull-up resistor, I'd probably go with a 330 ohm -- that will get the input up to 0.75*Vcc and the required current is ~10mA.
  • Sound good!  We will go with 330 ohm pull-ups and pull-downs.