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).
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).