Uart communication between 3.3V and 1.8V logic level

I'm working on a project where I need to make a UART communication (baud9600 or 115200) with 3.3V microcontroller and 1.8V logic level GSM Module

For the microcontroller's TX (3.3V) to the GSM module's RX (1.8V) i can use a voltage divider with resistor values

R1=1kΩ and R2=1.2kΩ

However, I'm uncertain about the reverse direction, where the GSM module's TX (1.8V) needs to interface with the microcontroller's RX (3.3V).

Could someone guide me on the best approach to step up the 1.8V to 3.3V so that my microcontroller can accurately read the data?

Additionally, if a level shifter is recommended, could you suggest any cheap and commonly used level shifter suitable for this purpose?

Do you have documentation that shows that will be necessary?

esp32 & simcom sim7080g

Ok, but does your document show that a + voltage of 1.8 cannot be recognized as a "1" by a digital pin?

Are you sure that the module doesn't have a level shifter already installed?

This logic level converter will work between those voltage levels.

im making a pcb so i preffer components that i can add to pcb insteand of sparkfun module

in datasheet it say:

The SIM7080G UART is 1.8V voltage interface. If user’s UART application circuit is 3.3V voltage interface,
the level shifter circuits should be used for voltage matching.

so the question is will esp32 read 1.8v or not. coz we can step down 3.3 to 1.8 for simcom

The Sparkfun logic level converter schematic is published on the product page, and it could not be simpler. Three components per logic connection.

based on schematic i can build my own using bss138 N mosfet and 10K resistors right?

I don't know anything at all about your skills or training. Can you do that?
The circuit seems absurdly simple to me, and it is standard.

so where do i need to connect TX of simccom (1.8v) and where RX of esp32 (3.3v)

Read the documentation! LV = 1.8V, HV = 3.3V.

will bss138 handle the UART with baud 9600 and 115200

Try it and see, or post the question to the engineers on the Sparkfun forum.

If you find 115200 to be a problem, try reducing the 5V pullup resistor to 4.7K. That will speed things up a bit. Also, you might get faster speed by replacing the mosfet with an NPN transistor to reduce capacitance issues. You would need to add a base resistor, but could eliminate the 3.3V pullup resistor.

Edit: Actually, since this is a unidirectional line, I don't think you need the 3.3V pullup resistor (R3) in any case.

As per the ESP32 datasheet, a high signal should be 0.75*VDD so 2.475V if VDD = 3.3V.

For the ESP's Tx to GSM Rx, a voltage divider will do.
For the GSM's Tx to ESP's Rx, the circuit above - or if the GSM's output is push-pull, just a diode will do (using either the internal pull-up of the ESP or an external pull-up on the 3.3V side).

Well, no, not a diode. You would have 2.7V or so applied to the 1.8V GPIO. Can't do that.

So you need the circuit above, or the equivalent using an NPN with the emitter to 1.8V TX, collector to 3.3V RX, and the base connected to the 1.8V rail via a resistor (47-100K or so).

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.