diff --git a/src/main/drivers/sdcard.c b/src/main/drivers/sdcard.c index dd38dd1313..6a4f87f068 100644 --- a/src/main/drivers/sdcard.c +++ b/src/main/drivers/sdcard.c @@ -1181,7 +1181,7 @@ static bool sdcard_completeInit() DESELECT_SDCARD; } - spiSetDivisor(SDCARD_SPI_INSTANCE, 4); + spiSetDivisor(SDCARD_SPI_INSTANCE, SDCARD_SPI_FULL_SPEED_CLOCK_DIVIDER); sdcard.state = SDCARD_STATE_READY; @@ -1211,7 +1211,7 @@ static bool sdcard_checkInitDone() { bool sdcard_init() { // Max frequency is initially 400kHz - spiSetDivisor(SDCARD_SPI_INSTANCE, 128); + spiSetDivisor(SDCARD_SPI_INSTANCE, SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER); // SDCard wants 1ms minimum delay after power is applied to it delay(1000); diff --git a/src/main/target/STM32F3DISCOVERY/target.h b/src/main/target/STM32F3DISCOVERY/target.h index e109dd9a4b..6761d893d4 100644 --- a/src/main/target/STM32F3DISCOVERY/target.h +++ b/src/main/target/STM32F3DISCOVERY/target.h @@ -100,6 +100,10 @@ #define SDCARD_SPI_CS_GPIO GPIOB #define SDCARD_SPI_CS_PIN GPIO_Pin_12 #define SDCARD_SPI_CS_GPIO_CLK_PERIPHERAL RCC_APB2Periph_GPIOB +// SPI2 is on the APB1 bus whose clock runs at 36MHz. Divide to under 400kHz for init: +#define SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER 128 +// Divide to under 25MHz for normal operation: +#define SDCARD_SPI_FULL_SPEED_CLOCK_DIVIDER 2 #define ACC #define USE_ACC_LSM303DLHC