3

Pi Pico W datasheet states:

3V3_EN connects to the on-board SMPS enable pin, and is pulled high (to VSYS) via a 100kΩ resistor. To disable the 3.3V (which also de-powers the RP2040), short this pin low.

and

RUN is the RP2040 enable pin, and has an internal (on-chip) pull-up resistor to 3.3V of about ~50kΩ. To reset RP2040, short this pin low.

Which means that RUN resets the microcontroller and 3V3_EN powers it off. Practically (in application) both sound to me as they will only reset the microcontroller. I tried also using both pins and haven't noticed any difference in the behavior: microcontroller starts over, once the pin is released (i.e. pulled up again).

So, the question is, what is the practical difference between using RUN pin or 3V3_EN in applications?

8
  • 1
    (3) So, if you like, 3V3_EN is hardware power off/on reset, RUN is software reset.
    – tlfong01
    Sep 22, 2022 at 8:16
  • 1
    What will be the practical difference between software and hardware reset for Pi Pico then?
    – Vadim
    Sep 22, 2022 at 8:24
  • 1
    MicroPython Reset Functions docs.micropython.org/en/latest/library/machine.html (1) machine.reset() Resets the device in a manner similar to pushing the external RESET button. (2) machine.soft_reset() Performs a soft reset of the interpreter, deleting all Python objects and resetting the Python heap. (3) machine.reset_cause() Get the reset cause. See constants for the possible return values. (4) machine.bootloader([value]) Reset the device and enter its bootloader, typically used to put the device into a state where it can be programmed with new firmware.
    – tlfong01
    Sep 23, 2022 at 3:42
  • 1
    Rpi PicoW 3V3 En Schematic: imgur.com/a/gBluUTJ
    – tlfong01
    Sep 23, 2022 at 7:40
  • 2
    @tlfong01, great collection of the insights. It start crystalizing slowly so I can think of at least one practical consequence. With 3v3_en one powers off whole 3.3 V line, meaning that one would also reset any sensors or other components outside Pico board powered from it.
    – Vadim
    Sep 23, 2022 at 14:13

3 Answers 3

5

One difference is that you can detect whether the last reset occurred due to the power supply (eg. 3V3_EN), the RUN pin, or via the Rescue Debug Port, by checking the CHIP_RESET register.

See section 2.12.7. Source of Last Reset in the RP2040 Datasheet.

1

Presumably the 3V3_EN pin would result in a lower power suspend state as you're also shutting down the SMPS, which would make batteries last longer than doing the same thing with the RUN pin. It would be interesting to compare this with the internal SLEEP and DORMANT states you can enter via software.

As you mentioned in a comment, 3V3_EN will also shut down any external devices connected to the 3.3V line as well.

Presumably there will be a very slightly longer delay powering up from 3V3_EN as the SMPS has to start up before the RP2040 does, whereas the RUN pin should result in immediate reset of the RP2040 as the SMPS is already operating normally. However this delay would be tiny.

0

Another practical consideration is that if you are using this feature a lot it is probably better to use reset rather than continuously cycle the power. Cycling the power a lot will stress it, shortening the life of the chip.

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.