Table of Contents

Level conversion

I2C

When interfacing between two devices such as a Raspberry Pi with 3V3 I/O and a PICMicro running at 5V voltage level conversion is necessary. A simple method to do this on a breadboard is to use a pre-built adapter.

Two popular types found on eBay are the two channel bi-directional I2C level shifters and the four channel general purpose converters.

I2C level shifter

Pickle Microchip PIC ICSP

These devices contain two mosfets with 10K pull-up resistors in the arrangement specified by the Philips I2C interfacing application note (link below).

They also have an additional component which is a 3V3 LDO voltage regulator. This addition is to allow a 5V device to directly interface with a 3V3 device and also power it.

Although marketed for I2C they can be used for anything that demands two channels of bi-directional voltage level conversion.

Pinout
3V3 OUTPUT  BVCC    AVCC  5V INPUT
3V3 CLOCK   BSCL    ASCL  5V CLOCK
3V3 DATA    BSDA    ASDA  5V DATA
GROUND      BGND    AGND  GROUND

There is a speed impact when using these device which have a slow rise time. For example, when using Pickle Microchip PIC ICSP it was found that raising the SLEEP configuration value to 8 was necessary.

General purpose 4 channel

Pickle Microchip PIC ICSP

These general purpose bi-directional devices feature four mosfets in the Philips application note arrangement with 10K pull-ups.

Pinout
         HV4       LV4
         HV3       LV3
         GND       GND
HIGH VCC HV        LV  LOW VCC
         HV2       LV2
         HV1       LV1

Pickle Microchip PIC ICSP was found to be more reliable when raising the SLEEP configuration value to 2 with this adapter.

Resources

Level shifting techniques in I2C-bus design