Hi,

With the PowerFeather not plugged to anything except 4.1V power supply with a LiPo battery plugged to the battery connector, and the following code:

extern "C" void app_main(void) {
  PowerFeather::Board.init(1800);
  for(;;) {
    PowerFeather::Board.enable3V3(true);
    delay(1000);
    PowerFeather::Board.enable3V3(false);
    delay(1000);
  }

I observe a square signal on the 3V3 pin, 0V low and 3.3V high (which is normal).
However if I plug the 3V3 pin to VBAT, then the 3V3 pin goes to 4.1V and does not oscillate any more.

(I am doing this to understand why the 3V3 pin does not go down to 0V any more when I connect it to the EN(able) pin of my 3.3V/5V boost: it always stick to 3.3V).

Do you have an explanation?
Could it be that the board is damaged?

Best regards, thank you!

  • Hi, quite a long time we discussed. Meanwhile I could do various tests. I don't remember the details, but for sure the board is not damaged.
    This discussion can be closed (if there is a "closed" status).
    Thanks again!

I plug the 3V3 pin to VBAT,

May I ask why? The 3V3 pin is a power output, and VBAT is also a power output. Connecting them can lead to damage.

Thanks. Sure you can ask: it's for testing purposes. As I wrote in brackets, I initially wanted to activate a 3.3V/5V boost via this pin (following your recommendations in other topics here). The boost is an Adafruit 4654. Its EN(able) pin is up when not wired to anything. But when I do enable3V3(false), instead of going to 0V, it (the board 3V3 pin wired to the boost EN pin) sticks to 3.3V, like if it was pulled up by the EN pin of the boost.

However the boost works just fine when tested alone.

As said above, when the PowerFeather is alone, the 3V3 pin goes to 0V when doing enable3V3(false). But as soon as I wire it to something (either the EN pin of the boost, or this 4.7k resistor wired to the VBAT on its other end), it sticks to 3.3V.

Does this clarify?
Any suggestion to test further?
Thanks again

Ok, so I think I get what you mean. Note that enable3V3 function enables/disables a load switch. A load switch is not a push-pull/open-drain output - basically when it is disabled, it blocks the current path as if it were disconnected - think of a physically cutting a wire.

If the wire then is cut, one end is going to be at 3.3V, the other is going to float. The floating end will take up any value it's pulled to, whether up or down.

Thanks, I think I understand. So you think nothing is broken? (good news!)

My issue is that instead of being disabled and consuming nothing, the boost is active because its enable pin is > 0.5V.

So it consumes some current for nothing, while I try to reduce the consumption of my device to its minimum.

How could I ensure that enable3V3(false) causes the boost EN pin to be < 0.5V?

    bfredo123 You can test by connecting a LED + resistor on 3V3 and enabling/disabling it via enable3V3. If the LED turns on or off, it should not be damaged.

    Have you tried using the actual GPIO's? Though, it looks like you are trying to pull up the boost regulator EN pin to the battery voltage, which can be up to 4.2 V, which the ESP32 doesn't support. Have you tried pulling up to 3.3V instead (if using open-drain) or just using the said GPIO in push-pull configuration?

    Thanks!

    • Will try with a LED.
    • Yes I have also tried with regular GPIO API (GPIO_NUM_4), same results.
    • EN pin to battery voltage: No, 3.3V is enough to pull the EN pin up (actually even 0.5V, based on the boost datasheet). I only connected 3V3 to VBAT (via a 4.7k resistor) for testing purposes. my device has the PowerFeather 3V3 pin connected to the boost EN pin. VBAT is only connected to the boost Vin pin.

    But my real question is: how to enforce the boost EN pin to be < 0.5V from the 3V3 pin, once enable3V3(false) has been called? Based on your open-drain explanation, I understand that it cannot work by connecting it directly to 3V3 (correct?), so how can I do? Maybe with a (pulldown) resistor between 3V3 and GND? if so, which value to avoid too much consumption?

    I have no LED with me but I have tested with a resistor connected between GND and 3V3 (and the boost EN connected to 3V3).
    When enable3V3(false) is called, I can measure on the 3V3 pin:
    R = 4.7k => 0.1V
    R = 10k => 0.3V
    R = 39k => 1V
    R = 100k => 1.7V
    R = 1M => 3.1V

    I am surprised that the voltage is that high for most resistor values. Does it look normal to you?

      bfredo123 Again, it's not about the voltage, since it's effectively floating. The lower resistance values seem to pull it to ground enough, but the higher resistor values can't seem to, which is why I think you're seeing what you are seeing.

      The real test with the LED + resistor test was to see if it lets current through - since that is the job of a load switch. Think of a physical switch - if the switch is in the 'off state' (broken connection), do you expect the other side to hold a certain voltage? The reliable way to test this switch (if it still works) is to connect a load on the other side (LED + resistor) and try to switch it on and off.

      a month later

      Hi, quite a long time we discussed. Meanwhile I could do various tests. I don't remember the details, but for sure the board is not damaged.
      This discussion can be closed (if there is a "closed" status).
      Thanks again!