The simplest "adaptive" downward level shift solution?
One way of doing it is like this:

The resistor limits the current through the diode. The diode clamps the node after the resistor to 3V3 + its forward voltage.

Ideally, you would use a diode with a very low Vf (most ICs down the line will already have internal clamp diodes and you want the external discrete one to conduct, not the internal ones) and fast enough for your data rates. 







simulate this circuit &ndash; Schematic created using CircuitLab

Another way is like this:

You want to pick a resistor high enough to limit the current through the zener and low enough to guarantee a Vzener within your expectations.







simulate this circuit