3.3V to 1.8V UART logic level shifter


I am trying to send AT commands from my ESP32 to a Quectel BG95 (modem) using arduino IDE and a UART connection. Because the UART pins on the modem need 1.8V though I have to use a logic level shifter. The hardware design for the modem gives:

My attempt basically looks the same:

Datasheet for logic level shifter

ESP's RXD are connected to Modem's TXD and vice versa. But I am getting some strange voltage measurements that I cannot reconcile. Basically the ESP's TXD is reading 2.733V corresponding pin on modem side (RXD) is reading 1.72V. My ESP's RXD is reading 3.33V corresponding pin on modem side (TXD) is reading 1.72V.

This can't be right, or am I missing something? But even if it is wrong I am not sure what to suspect here. Does anyone have a faint clue what it might be?

It sounds right to me.
What do you think the voltages should be?

1 Like

I see a difference in the 2 drawings,

Tx - Rx in the first, Tx - Tx in the second.
Tx connecting with Tx is not what is normally done (apart from some exceptions such as with the RS232C TTL shield that has other conventions than most devices).

TXD to TXD is not the set up. For example on channel 6 A side is Quectel TXD 1.8V.

On the B side of channel 6. 3.3V side labeled as Quectel TXD is conmected to the MCUs RXD.

So we do have Quectel TXD to MCU RXD. In light of this do you still think there is an issue?

@Grumpy_Mike why would the esp TXD be 2.7v not 3.3 V and I am confused why the corresponding RXD pin on the modem not be less than 1.8V? Since scaling this (2.7/3.3)*1.8=1.47V

Because output signals from a processor are never at the processor's rail. Look at any data sheet and you will see that they give a figure for voltage output at a specific current draw. However, there is also a maximum, minimum and typical value for this voltage, so an output voltage would not be expected to read 3V3 and if it read 2V7 then it would not be a surprise.

1 Like