0
\$\begingroup\$

I'm programming an ESP-12E module using the Arduino support package. My setup requires a logic level inverter on the Tx pin (only). I built the following which is working OK :

schematic

simulate this circuit – Schematic created using CircuitLab

However the ESP8266 will not boot with that attached to it, I need to unplug it at boot time and plug it back in after. Then everything works fine.

Why is this causing the ESP to not boot ? And how can I make it boot anyway?

(What I tried : a 10K pulldown from Tx to Ground. No effect)

\$\endgroup\$
7
  • \$\begingroup\$ do you have to use TX? \$\endgroup\$
    – dandavis
    Commented May 19, 2018 at 19:54
  • \$\begingroup\$ @dandavis yes, my application requires transmitting inverted serial data. \$\endgroup\$
    – uiguig
    Commented May 21, 2018 at 6:15
  • \$\begingroup\$ you can use softwareserial on a pin without SPECIAL assignments \$\endgroup\$
    – dandavis
    Commented May 21, 2018 at 19:07
  • \$\begingroup\$ @dandavis This is right. However my application requires sending the data at 100000 bauds with strict timing requirements that make softserial still « working » but very unreliable... Maybe there could be a way to activate the inverter once the chip is initialized ? \$\endgroup\$
    – uiguig
    Commented May 21, 2018 at 19:20
  • \$\begingroup\$ can you use an n-chan fet instead of a bjt? that way, you don't pull down the gpio during reset,m since gates are insulted. \$\endgroup\$
    – dandavis
    Commented May 21, 2018 at 19:25

2 Answers 2

1
\$\begingroup\$

Check out this very good pinout reference.

There are quite a few pins that require special treatment, including default Tx on GPIO1, which has to be pulled high during boot (that is why your 10K pulldown did not work).

Keep in mind that ESP dumps debug info during boot, which may interfere with whatever you connecting to that pin.

You can also try using UART1 Tx on GPIO2. It is also one of the special pins and has to be pulled high during boot, but at least you won't have debug dump on it.

Another option is to use logic inverter or inverting buffer chip instead of transistor. A single gate chips are comparable in size to the transistors and without any resistors the whole thing will be simpler and even smaller. High input impedance will not affect the output pin. If you use tri-state chip then its enable input can prevent debug dump from going out until you are ready to send actual data.

\$\endgroup\$
0
\$\begingroup\$

I have the same problem. In my case, on ESP8266-01S I use Tx, Rx as input, GPIO0, GPIO2 as output to control 02 DYI SSR relay together with 02 TTTP223 touch module. If Ttp223 I/O pin would be connected to TX pin, ESP8266-01S wont boot, if i remove the one connected to TX then it boots up normal. After the boot, pluggingin of the TTTP223 will work. After sometimes, I found that TX is must be HIGH for normal boot, when TTTP223 connected directly it will pull the TX down to LOW and causes ESP to stop normal boot. I did a small tweak for only TX pin connected to TTTP223 as following:

  1. Make a 3.3K pull_up to VCC for TX (IO1), let's call the I/O pin on TTTP223 as IO2;
  2. Use any NPN transistor to handle with following schematic: IO1 >> Resistor (470 Ohm) >> Collector, IO2 >> 1K >> Base Emitter >> ground. Then all work just fine, normal boot and touch module work as well. Note: This problem only happen with TX pin but not RX
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.