0
\$\begingroup\$

I'm trying to interface an Arduino with an eMMC chip to bit-bang it. eMMC uses bidirectional lines, and one of them (CMD) is first used in open-drain mode (for identifying devices on the bus) and then in push-pull mode.

I've inherited a circuit supposed to do that, but even after a few modifications it doesn't seem to work. I got what looked like responses to my commands but they didn't make sense / failed CRC (and since I added a few bypass caps I don't get anything). I think it's because it uses a TXB0108, and the datasheet says it doesn't work in open-drain mode (and I think I understand why).

As I looked for something to replace it I found the LSF0108. I also saw people use chips from the TXS family for pretty much the same application, with pull-ups only on the master side.

I tried to simulate my circuit with ngspice (through Kicad) and SimulIDE, but I can't get something that resembles how the LSF should behave: as a closed switch on LOWs and open if both sides are HIGH (if I understand that correctly). The guide says it's basically two FETS with connected gates, the top one connected to VrefA and VrefB and the bottom one to input/output pins. But I can't find a Spice model, I can't reproduce it (maybe because I don't have the FETs' properties or the real circuit is more complex), and I really don't understand how it's supposed to work.

So, how does the LSF work and how can I simulate it? (A bit of warning: I just spent two weeks reading about transistors and still find them confusing.)

Also, am I making the right choice with this component instead of a TXS? Are they both suitable for my circuit? I'd like to make sure I order the right components, the shipping costs being higher than the parts themselves...

Here's a simplified schematic if it helps (don't mind the BJT, it's for another question).

Arduino to eMMC simplified schematic

\$\endgroup\$
11
  • 5
    \$\begingroup\$ Quick comment for now - maybe more later. The site does not like multiple questions per post and, even thoughthis makes life messy, you may be going to have to split this up into several questions OR work out how to turn this into a single question. Sort of. BNB not my rules, I'm just giving you advanced warning before the other guys arrive. || \$\endgroup\$
    – Russell McMahon
    Jun 4, 2019 at 9:03
  • \$\begingroup\$ The LFS foes not have an inyternal block diagram (that I could see) but here is my explanation of how a very common level shifter works and here is some more on level shifting and quite a lot more some of which may be relevant :-). \$\endgroup\$
    – Russell McMahon
    Jun 4, 2019 at 9:09
  • \$\begingroup\$ @RussellMcMahon yeah, I thought about that, and thought it could be easier since they all share the same background and are all kinda related to the LSF (except n°3). I'll look into splitting them up. \$\endgroup\$
    – Pikrass
    Jun 4, 2019 at 11:17
  • \$\begingroup\$ @RussellMcMahon Thanks, I'll look into that. There's a schematic in the guide I linked above (not the datasheet) in page 2, and that's what I can't wrap my head around. \$\endgroup\$
    – Pikrass
    Jun 4, 2019 at 11:18
  • \$\begingroup\$ I split up the questions \$\endgroup\$
    – Pikrass
    Jun 4, 2019 at 11:38

1 Answer 1

1
\$\begingroup\$

The LSF drivers SEEM the most flexible.
These SEEM to be what you want BUT DO satisfy yourself of this. Cost of devices from all 3 families are very similar.

You do need to comply with their pullup requirements - too low a pullup value and the weak drive outputs cannot change state.

The TXB family works only with push-pull devices.

The TXS family works with pushpull or open-drain/pullup systems but is less flexible than the LSF family.


Also consider the level translator discussed here Depending on yourr speed requirememnts it may suit and it may give you more control over functionality. Or not :-).

Also see this and all these may be useful.


Here is an LSF block diagram from fig 2 in the TI Application Report that you cited.
I'll explain a left to right signal transfer and leave you to go from there.

The two FETs are provided to implement a switch that operates when the levels are AT a desired voltage, unaffected by Vgsth = FET gate threshold voltages.

VrefB is > Vrefa - typically at least 1 V higher (spec sheet says).

Example: A-side = Vin.
B-side = Vout.

VrefB pulls up Qh drain & (connected) gate via 200k.
As Qh turns on stabolises when Qhd / Qhg is Vgsgth_Q2 above Qhs = Vrefa.
ie gate voltage is at critical turn on voltage of FET when FET s is at Vrefa.
BUT Qhg is connected to Qlg so Ql also "just" turns on when Qls is at Vrefa.
So Ql is thus biased to turn OFF when input rises to or above Vrefa and to turn on when Vin falls below Vrefa.
SO -

Vin high:
When Vin A side is at Vrefa FET Ql is off and Q1d= B out is disconnected from Vin and so Vout is pulled up by VBPU to 3V3.

Vin low
When Vin is puilled low to ground, Ql is on (as QLs below Vrefa) so Ql is on so Vout is pulled low (to ground) so Vout is low when Vin is low.


The LSF series allows different translation voltages on the B side channels by using different pullup voltages on the B side lines.

enter image description here

\$\endgroup\$
2
  • \$\begingroup\$ Thanks for the detailed answer. :) I understand the Sparkfun circuit in your first link with the BSS138. I think I'm getting how the LSF works: the top FET creates a feedback loop, and that sets Qlg to the voltage we want. Then the bottom FET works like the Sparkfun shifter, only with no requirement on Vth. Is there a diode there too to allow for right to left transfer? \$\endgroup\$
    – Pikrass
    Jun 6, 2019 at 8:50
  • \$\begingroup\$ @Pikrass Don't THINK you know. Read through my above description and make sense of each sentence before moving on and you then WILL understand it. \$\endgroup\$
    – Russell McMahon
    Jun 6, 2019 at 12:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.