summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDave Hylands <dhylands@gmail.com>2015-10-29 16:56:58 -0700
committerDamien George <damien.p.george@gmail.com>2015-10-30 12:05:14 +0000
commit823a961ecc4c4b3ed31c18676619e8cd595756cf (patch)
tree09e864fbfcf559c52bd160d9c96af3084ca5282d
parent3510499a9e523e51b1d8015f7d393aea9b68f679 (diff)
downloadmicropython-823a961ecc4c4b3ed31c18676619e8cd595756cf.tar.gz
micropython-823a961ecc4c4b3ed31c18676619e8cd595756cf.zip
stmhal: Enable sdcard on STM32F7DISC board.
-rw-r--r--stmhal/boards/STM32F7DISC/mpconfigboard.h7
-rw-r--r--stmhal/sdcard.c28
2 files changed, 34 insertions, 1 deletions
diff --git a/stmhal/boards/STM32F7DISC/mpconfigboard.h b/stmhal/boards/STM32F7DISC/mpconfigboard.h
index 62712d85b1..b6e8cfafbc 100644
--- a/stmhal/boards/STM32F7DISC/mpconfigboard.h
+++ b/stmhal/boards/STM32F7DISC/mpconfigboard.h
@@ -4,7 +4,7 @@
#define MICROPY_HW_MCU_NAME "STM32F746"
#define MICROPY_HW_HAS_SWITCH (1)
-#define MICROPY_HW_HAS_SDCARD (0)
+#define MICROPY_HW_HAS_SDCARD (1)
#define MICROPY_HW_HAS_MMA7660 (0)
#define MICROPY_HW_HAS_LIS3DSH (0)
#define MICROPY_HW_HAS_LCD (0)
@@ -78,6 +78,11 @@ void STM32F7DISC_board_early_init(void);
#define MICROPY_HW_LED_ON(pin) (pin->gpio->BSRR = pin->pin_mask)
#define MICROPY_HW_LED_OFF(pin) (pin->gpio->BSRR = (pin->pin_mask << 16))
+// SD card detect switch
+#define MICROPY_HW_SDCARD_DETECT_PIN (pin_C13)
+#define MICROPY_HW_SDCARD_DETECT_PULL (GPIO_PULLUP)
+#define MICROPY_HW_SDCARD_DETECT_PRESENT (GPIO_PIN_RESET)
+
// USB config (CN13 - USB OTG FS)
// The Hardware VBUS detect only works on pin PA9. The STM32F7 Discovery uses
// PA9 for VCP_TX functionality and connects the VBUS to pin J12 (so software
diff --git a/stmhal/sdcard.c b/stmhal/sdcard.c
index 5d86ba5e6a..3a5822b484 100644
--- a/stmhal/sdcard.c
+++ b/stmhal/sdcard.c
@@ -37,6 +37,34 @@
#if MICROPY_HW_HAS_SDCARD
+#if defined(MCU_SERIES_F7)
+
+// The F7 series calls the peripheral SDMMC rather than SDIO, so provide some
+// #defines for backwards compatability.
+
+#define SDIO SDMMC1
+
+#define SDIO_CLOCK_EDGE_RISING SDMMC_CLOCK_EDGE_RISING
+#define SDIO_CLOCK_EDGE_FALLING SDMMC_CLOCK_EDGE_FALLING
+
+#define SDIO_CLOCK_BYPASS_DISABLE SDMMC_CLOCK_BYPASS_DISABLE
+#define SDIO_CLOCK_BYPASS_ENABLE SDMMC_CLOCK_BYPASS_ENABLE
+
+#define SDIO_CLOCK_POWER_SAVE_DISABLE SDMMC_CLOCK_POWER_SAVE_DISABLE
+#define SDIO_CLOCK_POWER_SAVE_ENABLE SDMMC_CLOCK_POWER_SAVE_ENABLE
+
+#define SDIO_BUS_WIDE_1B SDMMC_BUS_WIDE_1B
+#define SDIO_BUS_WIDE_4B SDMMC_BUS_WIDE_4B
+#define SDIO_BUS_WIDE_8B SDMMC_BUS_WIDE_8B
+
+#define SDIO_HARDWARE_FLOW_CONTROL_DISABLE SDMMC_HARDWARE_FLOW_CONTROL_DISABLE
+#define SDIO_HARDWARE_FLOW_CONTROL_ENABLE SDMMC_HARDWARE_FLOW_CONTROL_ENABLE
+
+#define SDIO_TRANSFER_CLK_DIV SDMMC_TRANSFER_CLK_DIV
+
+#endif
+
+
static SD_HandleTypeDef sd_handle;
void sdcard_init(void) {