Skip to content

Commit aff9601

Browse files
LinoBarrecafpistm
authored andcommitted
[SPI] Fix prescaler at low baudrates (stm32duino#794)
1 parent 3918800 commit aff9601

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

cores/arduino/stm32/spi_com.c

+5-3
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,12 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
213213
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
214214
} else if (speed >= (spi_freq / SPI_SPEED_CLOCK_DIV128_MHZ)) {
215215
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;
216-
} else if (speed >= (spi_freq / SPI_SPEED_CLOCK_DIV256_MHZ)) {
217-
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
218216
} else {
219-
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
217+
/*
218+
* As it is not possible to go below (spi_freq / SPI_SPEED_CLOCK_DIV256_MHZ).
219+
* Set prescaler at max value so get the lowest frequency possible.
220+
*/
221+
handle->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
220222
}
221223

222224
handle->Init.Direction = SPI_DIRECTION_2LINES;

0 commit comments

Comments
 (0)