==== Level conversion ====
{{:interfaces:level4.jpg?200|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 ===
{{:interfaces:level1.jpg?200|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 [[:projects:pickle|Pickle Microchip PIC ICSP]] it was found that raising the SLEEP configuration value to 8 was necessary.
=== General purpose 4 channel ===
{{:interfaces:converter3.jpg?200|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
[[:projects:pickle|Pickle Microchip PIC ICSP]] was found to be more reliable when raising the SLEEP configuration value to 2 with this adapter.
=== Resources ===
{{downloads:AN10441.pdf|Level shifting techniques in I2C-bus design}}