==== 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 === [[https://wiki.kewl.org/downloads/AN10441.pdf|Level shifting techniques in I2C-bus design]]