TXB0108 and issues with SPI, seems the clock gets corrupted


I'm using the TXB0108 in my own designed board based on SAMD21, picture attached to give an idea, with the TXB0108 at the bottom left hand side. I've checked connects etc and all good and this is repeatable on a second board.

Because this is 3.3 Volt needing to integrate with a 5V MAX7219 based LED matrix I added the TXB0108 for logic level shifting SPI from 3.3 to 5 volt.

On testing with a matrix display the results were either complete garbage displayed to minor corruption, and basically unusable.

So on testing, I found if I connected the SCK (clock) to the matrix display directly from the 3.3 volt side, and left MOSI and CS via the logic level shifter, all worked perfectly.

The issue appears to be the clock signal isn't getting through the TXB0108 without being damaged in some way, but MOSI and CS appear to be working okay.

Should the clock be logic level shifted? I'm thinking yes as the device might be borderline registering 3.3 volt as high (the spec sheet for MAX7219 says minimum 3.5 volt for logic level high). Is the SPI clock too fast for this chip?

I've googled and found people have had issues and replacing with the TXS0108 resulted in a fix so this may be worth a go, however I'd rather use something better for the job if these devices are borderline for the speeds involved.

So are there better chips/ways of logic level shifting or is the TXS0108 (which would be a drop in replacement) the answer? I did see reference to a SN74AVC4T774 and this looks like it is designed for SPI but is for 3.3 volt or less, I need to go from 3.3 to 5 volt and couldn't find much in the way of options.

Many thanks


After doing some troubleshooting I've found the problem is the TXB chip can't drive the clock over any distance. I had connected up to the matrix LEDs using about 15cm of wire, if I reduce the clock wire (left MOSI and CS untouched) to just 5cm it all starts working.

Is there anyway I can make the clock output more robust, perhaps driving a transistor at the source?

At least the TXB is working okay.

Many thanks for any advice.


I've now tried a TXS0108 and that doesn't work well either to level shift from 3.3 to 5 volt and the same issue is that the clock signal doesn't make it through with enough driving force to run over a few cm's of wire (or it could be the pull-up causing a problem which this chip has).

I've also tried a bog standard level shifter based on a MOSFET see Level shifter and this does work providing that the pull-up resister is removed from the 5 volt side. With the pull-up it's unreliable, but without it the clock passes across fine and will drive the LED matrix over 15 or 20cm of cable, in the same way the 3.3 volt clock signal will direct from the SAMD21 without any level shifting.

Anyone have any experience of the MAX3390E level shifter? Seems designed for SPI in mind?


For anyone interested I’ve managed to borrow a scope and have probed and got some graphs of the clock signal before and after it’s gone through the logic level shifter. However the strange thing is the LED matrix display has now started working from the logic level shifted clock source which it never has before. I’ve no idea why. The only thing I can think of is it might be how I’ve connected it back up using the 15cm long ribbon cable, with the clock wire running along side the + 5 volt wire where before it was running along side the CS, so maybe it was picking something up before. It still works fine with the prob disconnected so it’s not that causing a change to the circuit.

Anyway attached are two screen grabs from the scope, the one at 5.25 volts is taken from the end of the 15cm run of ribbon wire to the LED matrix. It doesn’t look particularly square, however the clock take from before the logic level shift isn’t that square either (the image showing 3.36 volt peak to peak).

Any observation from anyone is very welcome.