Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

ESP Serial Communication Problem with RS232

Not open for further replies.


Member level 2
Dec 10, 2012
Reaction score
Trophy points
Activity points
Hi there,

I am trying to design a pcb with ESP32 and using max3232 for serial communication. My problem is when I connect max3232 directly with max3232, I cannot program ESP32 on TTL pin header. When I made a research I need to add resistor between max3232 and ESP32 to program it on TTL side. I could not find any information about defining resistor value. How can I define resistor value between ESP32 and max3232 to program it without any problem on TTL header.



  • sch_max3232.PNG
    21.9 KB · Views: 161


Whether MAX3232 can communicate with ESP32 depends on the signal voltage specification and the supply voltage of both devices. (besides baud rate, handshaking and so on).

My problem is when I connect max3232 directly with max3232, I cannot program ESP32 on TTL pin header.
What exactly do you mean? Can you show an (almost) complete schmatic.


Hi Klaus,

My problem is we try to program ESP32 with programming header connected to ESP32 TX-RX line directly. Normally we designed the board as follow. max3232 tin and rout connected to directly to ESP32 pins.


When we try to program ESP32 it has communication problem. and I made some research on web and people talking about adding resistor to TTL signal. and we added R1 and R2 as seen on below design. We need to determine resistor value and could not figure out how to determine.


As seen in the schematic, we program the ESP32 with programming header.

You migh be aware that the programming procedure on ESP-32 involves handling levels at some GPIOs. From your schematic, the U1 esp-wroom-32d device seem rather a module, with nothing connected at remaining pins. Even if you tried to do that with an ESP32 dev board, additional flow control signals from RS-232 would be needed to drive the programming pins from the MCU at the appropriate timming.


still unclear:
* supply voltages
* programmer connection and signal voltage levels
* MAX3232 to MAX3232 connection

One problem I see: You never must connect two (logic) outputs without short circuit prevention.


I think it's a fight between the programming hardware and the MAX3232, both are trying to drive the RX pin at the same time. Try adding a resistor in series with the RX output (R2 in your schematic), no need to put one in the TX line. The value will need some experimenting, make it too small and the problem will still exist, make it too big and you will restrict the top speed of the RS232 link. I would suggest trying about 220 Ohms first.

If you are making a PCB, use a removable link, pull it to program and fit it for normal use.

Note that other IO pins have to be pulled high and low at the instant of powering up for the ESP to go into programming mode.

Hi Brian,

Thanks for your detailed information. Is there any way to determine with calculation or measurement?


You need only the lower resistor, the upper one is not needed. Maybe you can get some inspiration from an Arduino schematic where Serial is used for programmint to.

Programmer Tx drive strength determines the minimal series resistor. I'd go for 1 - 2.2k. Highest RS-232 speed is 920 kBd in case of doubt, no problem with a few k.

As stated, it is just Ohms Law, you have two signals driving one pin, one signal from the programmer, one from the MAX3232, you have to ensure the programmer can drive enough current to allow the ESP logic levels to be reached. Adding the resistor limits how much the MAX3232 can 'push' so the programmer can dominate. Unfortunately, when it comes to exact logic levels needed and exact drive currents available, there are manufacturing differences between devices so you have to cater for worst case scenario situations.

There is a possibly an alternative method you can use: Use a second MAX3232 to drive the existing one and pass the programming signals through it so the whole programming sequence is done over RS232 and no resistor is needed at all. The only drawback to that method is that normal programming speed may be compromised but if you keep the wiring length short it might work.


Not open for further replies.

Part and Inventory Search

Welcome to