This is an old revision of the document!
Table of Contents
Level conversion
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
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
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.