Espressif: do not hold pins during deep sleep if not necessary #6962
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On ESP32, merely enabling the pin-setting holding mechanism during deep sleep consumed at least 250 uA of extra current, even if no pins were being hold. This compared with about 75 uA total on Feather ESP32 V2 when the mechanism was not being used. Rework the pin-holding logic so that the hardware mechanism is not invoked unless needed. Added a caveat in the documentation.
I think this idiosyncrasy may be explained here: espressif/esp-idf#8249.
Also did a minor cleanup in Feather ESP32-S2 TFT.
@ladyada This turns out to be the reason for the confusing behavior I mentioned yesterday. I have achieved Arduino-level deep sleep power levels now with this fix.
@kattni You may want to re-test with this fix.