Some questions about the input pins impedance

Hi All,

I'm playing with a wifi module, ESP8266, WiFi Module - ESP8266 (4MB Flash) - WRL-17146 - SparkFun Electronics . Some people said we should protect the ESP8266 RX pin by reducing the 5V signal from Arduino to 3.3V with a voltage divider.

However, I found this recommendation confusing. In case of Arduino, when a GPIO pin was configured in input mode, it would have high impedance and can withstand quite a bits of voltage on its own. Why it isn't also the case for ESP8266?

As a matter of fact, the spec of ESP8266 did mention something about the input pin protection. It said the input pins have 2 pF capacitance and something like this...

All digital IO pins are protected from over-voltage with a snap-back circuit connected between the pad and ground. The snap back voltage is typically about 6V, and the holding voltage is 5.8V. This provides protection from over-voltages and ESD. The output devices are also protected from reversed voltages with diodes.

( The spec of ESP8266: https://cdn-shop.adafruit.com/datasheets/ESP8266_Specifications_English.pdf )

:roll_eyes: Mmm... is the protection good enough against the 5V signal from Arduino?

Who know's LOL some where you'll find that the uC on the esp is able to work with 5 volts but the maker of the ESP said it's a 3.3 volt chip and to use it as such.
But I have 5 of these with a diode on the RX pin the TX pin doesn't matter.The diode drops .7 volts which get's you around 4.3 on the RX pin which is on alot of boards that you can find.
Like this one Adafruit HUZZAH ESP8266 Breakout : ID 2471 : $9.95 : Adafruit Industries, Unique & fun DIY electronics and kits


But don't power it with 5 volts or feed a input with 5 volts the RX pin you can get away with the 4.3 volts maybe even 5 volts but that's because the pin is not driving high for very long.
I would forsure only use 3.3 on any of the rest of the pins.
The data sheets I've seen say a max of 3.6 but the RX pin has shown to be happy at 3.3 to 4.3 it didn't like lower then 3.3 volts it would miss data when flashing I found that out when I tried to flash one with a diode and had powered a ch340 at 3.6 volts it didn't like the 0 to 3 volt swing.

ma_hty:
...In case of Arduino, when a GPIO pin configured in input mode, it would have high impedance and can withstand quite a bits of voltage on its own.

An input pin has a very high impedance untill input voltage gets above VCC +0.5volt.
Then the input protection diodes start to conduct to dump excess voltage to the supply rail.
A 5volt output signal could phantom-power a 3.3volt device through the input pin.
Leo..

Wawa:
An input pin has a very high impedance untill input voltage gets above VCC +0.5volt.
Then the input protection diodes start to conduct to dump excess voltage to the supply rail.
A 5volt output signal could phantom-power a 3.3volt device through the input pin.
Leo..

A 5volt output signal could phantom-power a 3.3volt device through the input pin.
Leo..

Does it means... it could be just fine as long as the 3.3V device was power on?

If the 3.3volt device is on, any signal > ~3.8volt will start powering the 3.3volt device.
There is a gradual slope, and you might not notice it untill the signal is >4volt.

When the 3.3volt device is off (VCC = 0volt), a 0.5volt input signal will already start powering the device.

A 1:2 divider between 5volt output pin and 3.3volt input pin reduces the signal to 3.3volt, and stops phantom-powering due to current limiting of the voltage divider.
Leo..

Wawa:
If the 3.3volt device is on, any signal > ~3.8volt will start powering the 3.3volt device.
There is a gradual slope, and you might not notice it untill the signal is >4volt.

When the 3.3volt device is off (VCC = 0volt), a 0.5volt input signal will already start powering the device.

A 1:2 divider between 5volt output pin and 3.3volt input pin reduces the signal to 3.3volt, and stops phantom-powering due to current limiting of the voltage divider.
Leo..

^^", I'm still lost... Does it means... it could be just fine as long as the 3.3V device was power on?

Why's the "phantom-powering" a problem in the first place exactly? If the power drained from the signal pin is a concern, isn't that the voltage divider drains power too?

On the other hand, power-down the wifi module individually while the arduino is on? It sounds a little bit remote to me. I don't think I need a scenario like this (at least, for the moment). By the way, the reverse is more likely for me, i.e. power down arduino to save power and use the wifi module to fire it up on demand.

ma_hty:
Why's the "phantom-powering" a problem in the first place exactly?

  1. It could power the 3.3volt device to 4volt or more.
  2. It could destroy the input protection diodes.
    Leo..

Wawa:

  1. It could power the 3.3volt device to 4volt or more.
  2. It could destroy the input protection diodes.
    Leo..
  1. It could destroy the input protection diodes.

^^" Arrr... , it brings us all the way back to the question in the OP, "Is the protection good enough against the 5V signal from Arduino?" .

ma_hty:

  1. It could destroy the input protection diodes.

^^" Arrr... , it brings us all the way back to the question in the OP, "Is the protection good enough for the 5V signal from Arduino?" .

To which the answer is no it is not enough. You will kill your device. Maybe not immediately but nevertheless you will kill it. Do not do it.

Grumpy_Mike:
To which the answer is no it is not enough. You will kill your device. Maybe not immediately but nevertheless you will kill it. Do not do it.

How do you decide whether it is enough or not? Mmm... let's say... I do have the luxury (though I don't) to modify the input pin protections; which parts should be upgraded?

There is really no way to tell what is or what isn't going to happen the esp datasheet is crap. The uC in it is 5volt tolerant but you don't no if they made the esp rest of it tolerant..
So I would just keep the inputs under the 3.6 volts

ma_hty:
How do you decide whether it is enough or not?

Basically if the signal is greater than the voltage powering it it is not OK unless the data sheet specifically says it is.

The datasheet said it can withstand 5.8 volts
But that’s nonsense I think or it wouldn’t say to not use more then 3.3 volts on a input.

be80be:
But I have 5 of these with a diode on the RX pin the TX pin doesn’t matter.The diode drops .7 volts which gets you around 4.3 on the RX pin which is on a lot of boards that you can find.

But don’t power it with 5 volts or feed a input with 5 volts the RX pin you can get away with the 4.3 volts maybe even 5 volts but that’s because the pin is not driving high for very long.

Oops!

Didn’t think that through, did you? :roll_eyes:

You posted the Adafruit circuit as I often do when discussing this, but you didn’t read it!

The diode performs level conversion similarly to the standard bidirectional level converter by pulling down the input for a LOW, relying in this case on the internal pull-up (which will be effective as long as the diode itself is located close to the ESP8266 and its input capacitance is low). So in fact the LOW level is constrained to 0.7V and the HIGH level by the ESP8266, to its own 3.3 V Vcc. It is very clever and there is no concern whatsoever with parasitic powering or protection diodes or any other relevant specification.

Paul_S the diode is in series It just drops the voltage by a diode drop. works great on the RX pin it's not a
bidirectional level converter

OK, but perhaps you need to read what I stated a few times until you get the hang of it. :grinning:

Well perhaps you need to figure out how a diode outside of the chip could do the same thing as a paralytic diode that across The Source in the drain of Mosfet
All that diode dose is drop .7 volts

And examine the schematic carefully.

You fix the op up Im sure you can I didn't ask for help he did, Theres a diode dropping the 5 usb to serial to 4.3 volts which then is clamped to 3.3 volts to the power rail because you have a diode on the input pin. its still not the same as using the mosfet for bidirectional level converter

I have to admit, that is a clever protection method. +1 Paul__B

RXD HIGH relies on the ESP8266 internal pullup.
RXD LOW is driven by the RXD_5V signal.

I guess technically the RXD input is protected to (75 + 3.6) volts.
I wonder if the internal pullup of the ESP8266 is adequate if the baudrate is at the default 115200?