Table of Contents
KEY TAKEAWAYS
- A logic level converter safely translates signals between 3.3V and 5V devices
- Bi-directional converters (using BSS138 MOSFETs) work for I2C, SPI, and UART in both directions
- Connect the low-voltage reference (LV) to 3.3V and high-voltage reference (HV) to 5V
- Without level conversion, connecting 5V signals to a 3.3V device can permanently damage it
Why do we need the 5v-3.3v Bi-Directional Logic Level Converter
Lets take an example to understand the problem and the solution. Say there are two systems where system 1 works on 5 volts and system 2 works on 3 volts. So, all the high-output signals from system 1 will be at 5 volts and all the high-output systems from system 2 will be at 3 volts. Same goes for input signals. System 1 expects 5 volts and system 2 expects 3 volts.
Although many people use a resistor based voltage divider network to get this job done, it is not a good solution. The resistor network is like this-

The solution – A Bi-Directional Logic Level Converter

The working of the 5v-3.3v Bi-Directional Logic Level Converter
The working of the Bi-Directional Logic Level Converter is preety simple. We first have to define the two voltage levels. In our example, the HV is 5v and the LV is 3v. So, we have to connect the HV pin on the HV side to 5v and the LV pin on the LV side to 3v. Connect the ground of the 3v supply to GND on LV side and the ground of 5v supply to GND on HV side.That done, its time to see how the signals operate. There are four remaining pins on either side of the converter, HV1 to HV4 and LV1 to LV4. A 5v signal on the HV1 pin will reflect as 3 volt on the LV1 pin and vice versa. Similarly for HV2, HV3 and HV4.Lets continue with our example of the two systems. We will further break down our systems into individual signals each- System 1 has two signals – A1(output) and B1(input)
- System 2 has two signals – A2(input) and B2(output)
Thus, we have successfully interfaced two systems working on two different voltage levels.Interfacing a USB to TTL converter with ESP8266
This is exactly how the ESP8266 is interfaced with a computer through a USB to TTL converter. The USB to TTL converter operates at 5v and the ESP8266 operates at 3.3v. In our example, the USB to TTL converter is system1 and the ESP8266 is system2. The only difference is that the ESP8266 operates at 3.3v instead of 3v.
📖 Related: Voltage Divider Network

Vivek Bhageria — Lead Firmware R&D Engineer, 12+ years. Ex-Bosch (automotive powertrain), MusicTribe (real-time audio), medical devices. M.Tech BITS Pilani. I write at NerdyElectronics — practical, register-level embedded systems for engineers who want to understand what’s actually happening under the hood.







I just got a set of these 4 channel LLC converters to shift 3.3v signal output of a NodeMCU to a variety of 5v devices I’ve used previously with an Arduino. As the NodeMCU is very sensitive to voltage I thought I’d use a multi-meter to make sure the voltages coming out of the LLC are OK. I powered each side of the LLC then applied 3v to one of the low level channels and measured the voltage in the matching high level side. But it seems every pin in both sides of the LLC are always set high. That is regardless of any voltage applied to any of the channels *all* pins on the 3.3v side are 3.3v and all in the 5v side are 5v. I assumed it was a faulty unit so soldered up another one and got the same result. Is this a symptom of measuring these with a multi-meter? It just doesn’t seem right. I’d have thought channels are 0v unless powered by an input. Is this right or have I got a faulty batch of converters?
Hi Simon
Sorry for the late reply. Why don’t you try this – Using a multimeter check if there is any short between the pins. There is the continuity test option in most miltimeters. If you select that option and put the multimeter probes on two ends of a wire, it will beep if the wire is not broken. If you connect the probes between two points and if there is a beep, it means that those two points are somehow connected.
Before you solder the pins, check on the pads. There shpuld not be any connection and there shpuld not be any beep. If you get a beep means that the unit is faulty.