summaryrefslogtreecommitdiff
path: root/ports/stm32/spi.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/stm32/spi.c')
-rw-r--r--ports/stm32/spi.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/ports/stm32/spi.c b/ports/stm32/spi.c
index 06c6bcebb..ae97d9ab4 100644
--- a/ports/stm32/spi.c
+++ b/ports/stm32/spi.c
@@ -186,9 +186,14 @@ void spi_set_params(const spi_t *spi_obj, uint32_t prescale, int32_t baudrate,
spi_clock = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI6);
}
#else
- if (spi->Instance == SPI2 || spi->Instance == SPI3) {
- // SPI2 and SPI3 are on APB1
+ if (spi->Instance == SPI3) {
+ // SPI3 is on APB1
+ spi_clock = HAL_RCC_GetPCLK1Freq();
+ #if defined(SPI2)
+ } else if (spi->Instance == SPI2) {
+ // SPI2 is on APB1
spi_clock = HAL_RCC_GetPCLK1Freq();
+ #endif
} else {
// SPI1, SPI4, SPI5 and SPI6 are on APB2
spi_clock = HAL_RCC_GetPCLK2Freq();
@@ -510,7 +515,10 @@ void spi_print(const mp_print_t *print, const spi_t *spi_obj, bool legacy) {
SPI_HandleTypeDef *spi = spi_obj->spi;
uint spi_num = 1; // default to SPI1
- if (spi->Instance == SPI2) { spi_num = 2; }
+ if (0) { }
+ #if defined(SPI2)
+ else if (spi->Instance == SPI2) { spi_num = 2; }
+ #endif
#if defined(SPI3)
else if (spi->Instance == SPI3) { spi_num = 3; }
#endif
@@ -540,7 +548,13 @@ void spi_print(const mp_print_t *print, const spi_t *spi_obj, bool legacy) {
spi_clock = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI6);
}
#else
- if (spi->Instance == SPI2 || spi->Instance == SPI3) {
+ #if defined(SPI2)
+ if (spi->Instance == SPI2) {
+ // SPI2 is on APB1
+ spi_clock = HAL_RCC_GetPCLK1Freq();
+ } else
+ #endif
+ if (spi->Instance == SPI3) {
// SPI2 and SPI3 are on APB1
spi_clock = HAL_RCC_GetPCLK1Freq();
} else {