summaryrefslogtreecommitdiff
path: root/stmhal
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-12-22 14:53:03 +1100
committerDamien George <damien.p.george@gmail.com>2016-12-22 14:55:26 +1100
commite202b6f586700aa4ac974d0355b171c92956ec71 (patch)
tree0064c87cd19213c368f7666ebf8444d62373a583 /stmhal
parented559de06336aa9a9dd71c1eb363e43d438a4e28 (diff)
stmhal/sdcard: Use mp_hal_pin_config function instead of HAL_GPIO_Init.
There is a minor functional change with this patch, that the GPIO are now configured in fast mode, whereas they were in high speed mode before. But the SDIO should still work because SD CK frequency is at most 25MHz.
Diffstat (limited to 'stmhal')
-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) {