summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stmhal/boards/PYBV3/pins.csv6
-rw-r--r--stmhal/boards/STM32F769DISC/pins.csv6
-rw-r--r--stmhal/boards/STM32F7DISC/pins.csv6
-rw-r--r--stmhal/sdcard.c25
4 files changed, 28 insertions, 15 deletions
diff --git a/stmhal/boards/PYBV3/pins.csv b/stmhal/boards/PYBV3/pins.csv
index 6172b3bc1..b20bd4ffb 100644
--- a/stmhal/boards/PYBV3/pins.csv
+++ b/stmhal/boards/PYBV3/pins.csv
@@ -37,4 +37,10 @@ SW,PA13
SD,PC13
MMA_INT,PB2
MMA_AVDD,PB5
+SD_D0,PC8
+SD_D1,PC9
+SD_D2,PC10
+SD_D3,PC11
+SD_CK,PC12
+SD_CMD,PD2
UART1_TX,PA9
diff --git a/stmhal/boards/STM32F769DISC/pins.csv b/stmhal/boards/STM32F769DISC/pins.csv
index ab5c5eef4..e59a51387 100644
--- a/stmhal/boards/STM32F769DISC/pins.csv
+++ b/stmhal/boards/STM32F769DISC/pins.csv
@@ -33,6 +33,12 @@ AUDIO_SCL,PH7
EXT_SDA,PB9
EXT_SCL,PB8
EXT_RST,PG3
+SD_D0,PC8
+SD_D1,PC9
+SD_D2,PC10
+SD_D3,PC11
+SD_CK,PC12
+SD_CMD,PD2
SD_SW,PI15
LCD_BL_CTRL,PK3
LCD_INT,PI13
diff --git a/stmhal/boards/STM32F7DISC/pins.csv b/stmhal/boards/STM32F7DISC/pins.csv
index 917214ae7..1aa8a9b3a 100644
--- a/stmhal/boards/STM32F7DISC/pins.csv
+++ b/stmhal/boards/STM32F7DISC/pins.csv
@@ -31,6 +31,12 @@ AUDIO_SCL,PH7
EXT_SDA,PB9
EXT_SCL,PB8
EXT_RST,PG3
+SD_D0,PC8
+SD_D1,PC9
+SD_D2,PC10
+SD_D3,PC11
+SD_CK,PC12
+SD_CMD,PD2
SD_SW,PC13
LCD_BL_CTRL,PK3
LCD_INT,PI13
diff --git a/stmhal/sdcard.c b/stmhal/sdcard.c
index f7cf15343..a93b2b056 100644
--- a/stmhal/sdcard.c
+++ b/stmhal/sdcard.c
@@ -81,30 +81,25 @@ static SD_HandleTypeDef sd_handle;
static DMA_HandleTypeDef sd_rx_dma, sd_tx_dma;
void sdcard_init(void) {
- GPIO_InitTypeDef GPIO_Init_Structure;
-
// invalidate the sd_handle
sd_handle.Instance = NULL;
// configure SD GPIO
// we do this here an not in HAL_SD_MspInit because it apparently
// makes it more robust to have the pins always pulled high
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_SDIO;
- GPIO_Init_Structure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12;
- HAL_GPIO_Init(GPIOC, &GPIO_Init_Structure);
- GPIO_Init_Structure.Pin = GPIO_PIN_2;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
+ // Note: the mp_hal_pin_config function will configure the GPIO in
+ // fast mode which can do up to 50MHz. This should be plenty for SDIO
+ // which clocks up to 25MHz maximum.
+ mp_hal_pin_config(&pin_C8, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
+ mp_hal_pin_config(&pin_C9, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
+ mp_hal_pin_config(&pin_C10, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
+ mp_hal_pin_config(&pin_C11, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
+ mp_hal_pin_config(&pin_C12, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
+ mp_hal_pin_config(&pin_D2, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
// configure the SD card detect pin
// we do this here so we can detect if the SD card is inserted before powering it on
- GPIO_Init_Structure.Mode = GPIO_MODE_INPUT;
- GPIO_Init_Structure.Pull = MICROPY_HW_SDCARD_DETECT_PULL;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Pin = MICROPY_HW_SDCARD_DETECT_PIN.pin_mask;
- HAL_GPIO_Init(MICROPY_HW_SDCARD_DETECT_PIN.gpio, &GPIO_Init_Structure);
+ mp_hal_pin_config(&MICROPY_HW_SDCARD_DETECT_PIN, MP_HAL_PIN_MODE_INPUT, MICROPY_HW_SDCARD_DETECT_PULL, 0);
}
void HAL_SD_MspInit(SD_HandleTypeDef *hsd) {