Commit e202b6f5 authored by Damien George's avatar Damien George
Browse files

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.
parent ed559de0
...@@ -37,4 +37,10 @@ SW,PA13 ...@@ -37,4 +37,10 @@ SW,PA13
SD,PC13 SD,PC13
MMA_INT,PB2 MMA_INT,PB2
MMA_AVDD,PB5 MMA_AVDD,PB5
SD_D0,PC8
SD_D1,PC9
SD_D2,PC10
SD_D3,PC11
SD_CK,PC12
SD_CMD,PD2
UART1_TX,PA9 UART1_TX,PA9
...@@ -33,6 +33,12 @@ AUDIO_SCL,PH7 ...@@ -33,6 +33,12 @@ AUDIO_SCL,PH7
EXT_SDA,PB9 EXT_SDA,PB9
EXT_SCL,PB8 EXT_SCL,PB8
EXT_RST,PG3 EXT_RST,PG3
SD_D0,PC8
SD_D1,PC9
SD_D2,PC10
SD_D3,PC11
SD_CK,PC12
SD_CMD,PD2
SD_SW,PI15 SD_SW,PI15
LCD_BL_CTRL,PK3 LCD_BL_CTRL,PK3
LCD_INT,PI13 LCD_INT,PI13
......
...@@ -31,6 +31,12 @@ AUDIO_SCL,PH7 ...@@ -31,6 +31,12 @@ AUDIO_SCL,PH7
EXT_SDA,PB9 EXT_SDA,PB9
EXT_SCL,PB8 EXT_SCL,PB8
EXT_RST,PG3 EXT_RST,PG3
SD_D0,PC8
SD_D1,PC9
SD_D2,PC10
SD_D3,PC11
SD_CK,PC12
SD_CMD,PD2
SD_SW,PC13 SD_SW,PC13
LCD_BL_CTRL,PK3 LCD_BL_CTRL,PK3
LCD_INT,PI13 LCD_INT,PI13
......
...@@ -81,30 +81,25 @@ static SD_HandleTypeDef sd_handle; ...@@ -81,30 +81,25 @@ static SD_HandleTypeDef sd_handle;
static DMA_HandleTypeDef sd_rx_dma, sd_tx_dma; static DMA_HandleTypeDef sd_rx_dma, sd_tx_dma;
void sdcard_init(void) { void sdcard_init(void) {
GPIO_InitTypeDef GPIO_Init_Structure;
// invalidate the sd_handle // invalidate the sd_handle
sd_handle.Instance = NULL; sd_handle.Instance = NULL;
// configure SD GPIO // configure SD GPIO
// we do this here an not in HAL_SD_MspInit because it apparently // we do this here an not in HAL_SD_MspInit because it apparently
// makes it more robust to have the pins always pulled high // makes it more robust to have the pins always pulled high
GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP; // Note: the mp_hal_pin_config function will configure the GPIO in
GPIO_Init_Structure.Pull = GPIO_PULLUP; // fast mode which can do up to 50MHz. This should be plenty for SDIO
GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH; // which clocks up to 25MHz maximum.
GPIO_Init_Structure.Alternate = GPIO_AF12_SDIO; mp_hal_pin_config(&pin_C8, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
GPIO_Init_Structure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12; mp_hal_pin_config(&pin_C9, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
HAL_GPIO_Init(GPIOC, &GPIO_Init_Structure); mp_hal_pin_config(&pin_C10, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
GPIO_Init_Structure.Pin = GPIO_PIN_2; mp_hal_pin_config(&pin_C11, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_UP, GPIO_AF12_SDIO);
HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure); 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 // configure the SD card detect pin
// we do this here so we can detect if the SD card is inserted before powering it on // 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; mp_hal_pin_config(&MICROPY_HW_SDCARD_DETECT_PIN, MP_HAL_PIN_MODE_INPUT, MICROPY_HW_SDCARD_DETECT_PULL, 0);
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);
} }
void HAL_SD_MspInit(SD_HandleTypeDef *hsd) { void HAL_SD_MspInit(SD_HandleTypeDef *hsd) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment