diff --git a/stmhal/sdcard.c b/stmhal/sdcard.c
index 2993773fabfa7ba3682930765bf5bf3c70d1e36d..22882ddb60d2e42935be91e66fcc4ba2966f84f8 100644
--- a/stmhal/sdcard.c
+++ b/stmhal/sdcard.c
@@ -90,6 +90,9 @@ bool sdcard_power_on(void) {
     if (!sdcard_is_present()) {
         return false;
     }
+    if (sd_handle.Instance) {
+        return true;
+    }
 
     // SD device interface configuration
     sd_handle.Instance = SDIO;
@@ -120,7 +123,10 @@ error:
 }
 
 void sdcard_power_off(void) {
-    HAL_SD_DeInit(&sd_handle);
+    if (!sd_handle.Instance) {
+        return;
+    }
+    HAL_SD_DeInit(&sd_handle); 
     sd_handle.Instance = NULL;
 }