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 of the more popular types found at places like eBay are two channel bi-directional I2C level shifters and 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