aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/ports/STM32/LLD/sdc_lld.h9
-rw-r--r--os/hal/src/sdc.c3
2 files changed, 11 insertions, 1 deletions
diff --git a/os/hal/ports/STM32/LLD/sdc_lld.h b/os/hal/ports/STM32/LLD/sdc_lld.h
index f4a44d18c..6f0e389d6 100644
--- a/os/hal/ports/STM32/LLD/sdc_lld.h
+++ b/os/hal/ports/STM32/LLD/sdc_lld.h
@@ -82,7 +82,14 @@
* @brief Read timeout in milliseconds.
*/
#if !defined(STM32_SDC_READ_TIMEOUT_MS) || defined(__DOXYGEN__)
-#define STM32_SDC_READ_TIMEOUT_MS 5
+#define STM32_SDC_READ_TIMEOUT_MS 25
+#endif
+
+/**
+ * @brief Card clock activation delay in milliseconds.
+ */
+#if !defined(STM32_SDC_CLOCK_ACTIVATION_DELAY) || defined(__DOXYGEN__)
+#define STM32_SDC_CLOCK_ACTIVATION_DELAY 10
#endif
/**
diff --git a/os/hal/src/sdc.c b/os/hal/src/sdc.c
index d18f37b55..c75397291 100644
--- a/os/hal/src/sdc.c
+++ b/os/hal/src/sdc.c
@@ -200,6 +200,9 @@ bool sdcConnect(SDCDriver *sdcp) {
/* Card clock initialization.*/
sdc_lld_start_clk(sdcp);
+ /* Clock activation delay.*/
+ osalThreadSleep(MS2ST(STM32_SDC_CLOCK_ACTIVATION_DELAY));
+
/* Enforces the initial card state.*/
sdc_lld_send_cmd_none(sdcp, MMCSD_CMD_GO_IDLE_STATE, 0);