-
Notifications
You must be signed in to change notification settings - Fork 7.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Disabling HOLD on PSRAM CS (GPIO16) at early boot stage, because disabling it later causes crash (IDFGH-10770) #11985
Comments
Hi @0x0fe, may I ask a first question that why do you want to hold the PSRAM CS line before entering deep sleep? For what purpose? |
@songruo because it draws some current. |
Hi, @0x0fe PSRAM power supply (VDD_SDIO pin) is turned off during deep sleep, even if the CS pin is floating, can you be sure that the current leakage is caused by PSRAM |
@esp-wzh on ESP32D0WDR2 we are required to add an external 10K pullup on GPIO16 for the PSRAM CS, as far as i can remember this is what caused the leakage and the reason why i hold this GPIO high during deep sleep. I will test this again later today to be sure, but yes, as far as i can remember this was causing a current leakage (to GND). |
Hi, @0x0fe, thanks a lot for pointing this out! Due to the shared power supply pin of PSRAM and Flash, and the low impedance characteristics between PSRAM CS# and VDD, there is the following leakage path. After batch verification, we recommend changing the pull-up resistor of PSRAM CS pin from 10KΩ to 1MΩ, and this will also be updated to ESP32 Hardware Design Guidelines soon. |
@esp-wzh [IO16]- [10K]-[IO0]-[<1N5819]-[IO2] This strange arrangement has been reached over revisions to satisfy both bootstraps and ultra low power requirements with SDIO interface used and SD card VCC controlled. |
Answers checklist.
IDF version.
V4.4.4
Operating System used.
Windows
How did you build your project?
VS Code IDE
If you are using Windows, please specify command line type.
PowerShell
Development Kit.
ESP32D0WDR2
Power Supply used.
USB
What is the expected behavior?
The expected behaviour is wake up from deep sleep without PSRAM init error.
What is the actual behavior?
PSRAM init error, preventing normal operation
Steps to reproduce.
Set a HOLD on GPIO16 (internal PSRAM CS)
1 Enter deep sleep
2 Leave deep sleep with an EXT line (tact switch),
3 Disable gpio HOLD immediately at start of firmware
4 PSRAM ID read error
Debug Logs.
More Information.
I tried to disable the HOLD in the wake stub, but i cannot get it to work, i found the direct register call, but this doesnt take the GPIO as argument and it seems to use some contextual structure instead, so i am not sure how i could use this in the stub. I tried to call the IDF function directly, which doesnt work.
The text was updated successfully, but these errors were encountered: