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?
*2.1. Pico W pinout*
*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.
*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.
– tlfong01 Sep 22 '22 at 07:40(2) Power-on Rreset and related supervisory functions - MaximIntegrated https://www.maximintegrated.com/en/design/technical-documents/app-notes/3/3227.html
– tlfong01 Sep 23 '22 at 03:18(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 '22 at 03:42