Skip to content

Commit 25d5d1e

Browse files
authored
Merge pull request #1488 from fpistm/SPI
library: spi: enhancement
2 parents ecf2260 + 3ae7483 commit 25d5d1e

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

Diff for: libraries/SPI/src/utility/spi_com.c

+15
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,9 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
288288
defined(STM32WBxx) || defined(STM32MP1xx)
289289
handle->Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
290290
#endif
291+
#ifdef SPI_MASTER_KEEP_IO_STATE_ENABLE
292+
handle->Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE; /* Recommanded setting to avoid glitches */
293+
#endif
291294

292295
/* Configure SPI GPIO pins */
293296
pinmap_pinout(obj->pin_mosi, PinMap_SPI_MOSI);
@@ -305,36 +308,48 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
305308
// Enable SPI clock
306309
if (handle->Instance == SPI1) {
307310
__HAL_RCC_SPI1_CLK_ENABLE();
311+
__HAL_RCC_SPI1_FORCE_RESET();
312+
__HAL_RCC_SPI1_RELEASE_RESET();
308313
}
309314
#endif
310315

311316
#if defined SPI2_BASE
312317
if (handle->Instance == SPI2) {
313318
__HAL_RCC_SPI2_CLK_ENABLE();
319+
__HAL_RCC_SPI2_FORCE_RESET();
320+
__HAL_RCC_SPI2_RELEASE_RESET();
314321
}
315322
#endif
316323

317324
#if defined SPI3_BASE
318325
if (handle->Instance == SPI3) {
319326
__HAL_RCC_SPI3_CLK_ENABLE();
327+
__HAL_RCC_SPI3_FORCE_RESET();
328+
__HAL_RCC_SPI3_RELEASE_RESET();
320329
}
321330
#endif
322331

323332
#if defined SPI4_BASE
324333
if (handle->Instance == SPI4) {
325334
__HAL_RCC_SPI4_CLK_ENABLE();
335+
__HAL_RCC_SPI4_FORCE_RESET();
336+
__HAL_RCC_SPI4_RELEASE_RESET();
326337
}
327338
#endif
328339

329340
#if defined SPI5_BASE
330341
if (handle->Instance == SPI5) {
331342
__HAL_RCC_SPI5_CLK_ENABLE();
343+
__HAL_RCC_SPI5_FORCE_RESET();
344+
__HAL_RCC_SPI5_RELEASE_RESET();
332345
}
333346
#endif
334347

335348
#if defined SPI6_BASE
336349
if (handle->Instance == SPI6) {
337350
__HAL_RCC_SPI6_CLK_ENABLE();
351+
__HAL_RCC_SPI6_FORCE_RESET();
352+
__HAL_RCC_SPI6_RELEASE_RESET();
338353
}
339354
#endif
340355

0 commit comments

Comments
 (0)