Logic Levels between 5(V) and 3.3(V) devices
The workhorses of level shifting I use are the TXB010X and TXS010X from Texas instruments. Here, the X may be 2, 4 or 8 and represents the number of ports provided. Both are bidirectional, sense automatically who's input and who's output (and they can be mixed) and don't need external components other than a pair of decoupling caps. The TXB is the 'standard' and the TXS is an open-drain version (for GPIO and SPI, use the TXB; for I2C, use the TXS).

They are a bit expensive, but I never found a good alternative; NXP has an equivalent family, but it requires a pair of resistors per line, which complicates considerably the design.