SPI voltage level translation question

Hi everyone,

I'm currently looking at getting a MCP23S17 operating a 3.3V while my Arduino Duemilanove is running at 5V. I tried to use an 74LS07 (open collector buffer) with external 3.3V pullups (10k) at the output pins to shift the levels of my SPI MOSI, clock and SS pins down to 3.3V. For the MISO lane I do it the opposite way, just with a 5V pullup (the datasheet told me that this chip should recognize 3.3V as HIGH if the 74LS07 itself runs at 5V.
So my question is: Does this method even work for high frequencies used on the SPI bus? Because I was having some trouble getting it running with this way (all the pins stay in 3rd state/input mode which is the default setting) with the library for the MCP23S17 I found here: GitHub - dreamcat4/Mcp23s17: Arduino library for the Microchip MCP23S17

So I hope you can help me with this little problem (and understand it ... I'm not the best English speaker) :wink:

I recently interfaced an 3.3V SD card reader to my Uno (5V). I used voltage dividers on SCK, MOSI, and CS. MISO went to an input pin with no pullup. It all worked fine. I remember the resistor values to be 1K and 1.8K.

Well, I just noticed that my MCP23S17 setup won't even work when operating at 5V without voltage translation :roll_eyes:

So I'll probably just have to fix that first before even considering to get this thing working with 3.3V properly...

Well, I just noticed that my MCP23S17 setup won't even work when operating at 5V without voltage translation

I don't understand. The 23S17 data sheet specifies supply voltage 1.8 to 5.5 volts. Do you need the outputs to be 3.3V?