summaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
Diffstat (limited to 'ports')
-rw-r--r--ports/stm32/sdram.c10
-rw-r--r--ports/stm32/sdram.h1
2 files changed, 10 insertions, 1 deletions
diff --git a/ports/stm32/sdram.c b/ports/stm32/sdram.c
index 4615c4fe1..4ca79f270 100644
--- a/ports/stm32/sdram.c
+++ b/ports/stm32/sdram.c
@@ -259,7 +259,7 @@ static void sdram_init_seq(SDRAM_HandleTypeDef
void sdram_enter_low_power(void) {
// Enter self-refresh mode.
- // In self-refresh mode the SDRAM retains data with external clocking.
+ // In self-refresh mode the SDRAM retains data without external clocking.
FMC_SDRAM_DEVICE->SDCMR |= (FMC_SDRAM_CMD_SELFREFRESH_MODE | // Command Mode
FMC_SDRAM_CMD_TARGET_BANK | // Command Target
(0 << 5U) | // Auto Refresh Number -1
@@ -276,6 +276,14 @@ void sdram_leave_low_power(void) {
(0 << 9U)); // Mode Register Definition
}
+void sdram_enter_power_down(void) {
+ // Enter power-down mode.
+ FMC_SDRAM_DEVICE->SDCMR |= (FMC_SDRAM_CMD_POWERDOWN_MODE | // Command Mode
+ FMC_SDRAM_CMD_TARGET_BANK | // Command Target
+ (0 << 5U) | // Auto Refresh Number -1
+ (0 << 9U)); // Mode Register Definition
+}
+
#if __GNUC__ >= 11
// Prevent array bounds warnings when accessing SDRAM_START_ADDRESS as a memory pointer.
#pragma GCC diagnostic push
diff --git a/ports/stm32/sdram.h b/ports/stm32/sdram.h
index f7a124add..5d170ea0d 100644
--- a/ports/stm32/sdram.h
+++ b/ports/stm32/sdram.h
@@ -13,5 +13,6 @@ void *sdram_start(void);
void *sdram_end(void);
void sdram_enter_low_power(void);
void sdram_leave_low_power(void);
+void sdram_enter_power_down(void);
bool sdram_test(bool exhaustive);
#endif // __SDRAM_H__