summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/spi.c9
-rw-r--r--ports/stm32/spi.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/ports/stm32/spi.c b/ports/stm32/spi.c
index 607b3fe68..aa459119c 100644
--- a/ports/stm32/spi.c
+++ b/ports/stm32/spi.c
@@ -545,6 +545,15 @@ void spi_deinit(const spi_t *spi_obj) {
}
}
+void spi_deinit_all(void) {
+ for (int i = 0; i < MP_ARRAY_SIZE(spi_obj); i++) {
+ const spi_t *spi = &spi_obj[i];
+ if (spi->spi != NULL) {
+ spi_deinit(spi);
+ }
+ }
+}
+
static HAL_StatusTypeDef spi_wait_dma_finished(const spi_t *spi, uint32_t t_start, uint32_t timeout) {
volatile HAL_SPI_StateTypeDef *state = &spi->spi->State;
for (;;) {
diff --git a/ports/stm32/spi.h b/ports/stm32/spi.h
index a8bc9d2cf..204038a92 100644
--- a/ports/stm32/spi.h
+++ b/ports/stm32/spi.h
@@ -67,6 +67,7 @@ extern const mp_obj_type_t pyb_spi_type;
void spi_init0(void);
int spi_init(const spi_t *spi, bool enable_nss_pin);
void spi_deinit(const spi_t *spi_obj);
+void spi_deinit_all(void);
int spi_find_index(mp_obj_t id);
void spi_set_params(const spi_t *spi_obj, uint32_t prescale, int32_t baudrate,
int32_t polarity, int32_t phase, int32_t bits, int32_t firstbit);