Level shifters - which IC's do you prefer?

So I have the level shift some signals from 3.3v to 5v.

Simple enough. The signals are SPI clock and data, and will be used to drive APA102 LEDs.

So I'm thinking about what the best way to do that is.

The first thing that comes to my mind is a '393, with outputs pulled up to 5v, inverting inputs held at like... 2v or something, and non-inverting inputs connected to the 3.3v signal.

I have also seen things like 74LVC245 - but it looks like that doesn't provide a solution to going from 3.3v signal to 5v signal, only the other direction (unless using pullups on the 5v side?) - and going from 5v signal to 3.3v can be done with just resistor divider anyway, so this seems somewhat less useful.

And there's the 74HCT125, which looks like it goes from 3.3v to 5v, but not the other way around.

Plus, there are the various "manual" ways with transistors and resistor dividers.

What methods have I missed, and what ones would you all recommend?
These will be going onto a PCB I'm designing (so not interested in other level shifting modules).

My favourite (transistors)...

SPI bus signals don't need to be bidirectional. Is this a 3-wire serial bus instead?

This chip will work nicely for SPI signals. It can be powered by 3v3 or 5v0, the desired output level, with inputs at either voltage.

Also don't forget you can level shift with open-collector (open-drain) outputs and with opto-isolators.

You might also be able to drive the LED device directly with the controller 3v3 output if the trigger level is about half of Vcc(5v). The return line, MISO, can use a voltage divider.

Thanks. That trick with MOSFETs is beautiful!

Would a 5LN01SP be an appropriate thing to recommend for such a setup for people who are afraid of SMD soldering? (asking because I'm working on something where I expect to be asked about this by people who don't do SMD) https://cdn.sparkfun.com/assets/learn_tutorials/4/2/3/5ln01sp.PDF

I assume the question is primarily directed to me. As far as I can tell, none of the other proposals make use of MOSFETs.

If that is the case, I have no idea. The older document from the Technical Details section lists these characteristics...

Type : N-channel enhancement mode MOS-FET.
Gate threshold voltage : VGS(th) min. 0.1V max. 2V
On resistance : RDS(on) max. 100 Ohm @ ID = 3mA, VGS= 2.5V
Input capacitance : Ciss max. 100 pF @ VDS = 1V, VGS = 0V
Switching times : ton toff max. 50 ns.
Allowed drain current : ID 10 mA or higher.

With these parts... BSN10, BSN20, BSS83, BSS88.

My guess is any low gate voltage (low gate energy) fast switching N-channel MOSFET will work. It is my understanding that Adafruit / SparkFun chose the BSS138 based on that target (plus inexpensive).

I expect to be asked about this by people who don't do SMD

Tell them to buck-up. It is not that bad. (But tweezers are important so they may have to buy a tool.)

Yup - thanks. It looks like these would fit the bill then. I'm still getting over how cool that trick is

Another bit of coolness to consider: the MOSFET one from Adafruit is reliable shifting between 1.6 V and 5.0 V at 1 MHz. (The two AA batteries gave up the ghost so it may work at an even lower voltages. I did not test at higher frequencies.)