|When making different devices talk, they can often be expecting/talking different voltages. This can be a bad thing, causing damaged chips that are being YELLED at by the more powerful device. You can make a simple converter with resistors and a transistor, but high speed transfers need cleaner signals than the resistor solution can offer.
That's where this lovely chip, the TXB0108 bi-directional level converter comes in! This chip perform bidirectional level shifting from pretty much any voltage to any voltage and will auto-detect the direction. Only thing that doesn't work well with this chip is i2c (because it uses strong pullups which confuse auto-direction sensor). If you need to use pullups, you can - but they should be at least 50K ohm, so the internal pullups in AVRs/Arduino will work fine.