@@ -60,45 +60,38 @@ uint32_t spi_getClkFreqInst(SPI_TypeDef *spi_inst)
6060 UNUSED(spi_inst);
6161 /* SPIx source CLK is PCKL1 */
6262 spi_freq = HAL_RCC_GetPCLK1Freq();
63- #elif defined(STM32H7xx)
64- /* Get source clock depending on SPI instance */
65- if (spi_inst != NP) {
66- switch ((uint32_t)spi_inst) {
67- case (uint32_t)SPI1:
68- case (uint32_t)SPI2:
69- case (uint32_t)SPI3:
70- spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI123);
71- break;
72- case (uint32_t)SPI4:
73- case (uint32_t)SPI5:
74- spi_freq = HAL_RCC_GetPCLK2Freq();
75- break;
76- case (uint32_t)SPI6:
77- spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI6);
78- break;
79- default:
80- core_debug("CLK: SPI instance not set");
81- break;
82- }
83- }
84- #elif defined(STM32MP1xx)
63+ #elif defined(RCC_PERIPHCLK_SPI1)
8564 /* Get source clock depending on SPI instance */
8665 if (spi_inst != NP) {
8766 switch ((uint32_t)spi_inst) {
8867 case (uint32_t)SPI1:
8968 spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI1);
9069 break;
9170 case (uint32_t)SPI2:
71+ #if defined(RCC_PERIPHCLK_SPI23)
72+ spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI23);
73+ #else
74+ spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI2);
75+ #endif
76+ break;
9277 case (uint32_t)SPI3:
78+ #if defined(RCC_PERIPHCLK_SPI23)
9379 spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI23);
80+ #else
81+ spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI3);
82+ #endif
9483 break;
84+ #if defined(RCC_PERIPHCLK_SPI45)
9585 case (uint32_t)SPI4:
9686 case (uint32_t)SPI5:
9787 spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI45);
9888 break;
89+ #endif
90+ #if defined(RCC_PERIPHCLK_SPI6)
9991 case (uint32_t)SPI6:
10092 spi_freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI6);
10193 break;
94+ #endif
10295 default:
10396 core_debug("CLK: SPI instance not set");
10497 break;
@@ -267,9 +260,7 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
267260 }
268261
269262 handle->Init.TIMode = SPI_TIMODE_DISABLE;
270- #if defined(STM32F0xx) || defined(STM32F3xx) || defined(STM32F7xx) ||\
271- defined(STM32G0xx) || defined(STM32H7xx) || defined(STM32L4xx) ||\
272- defined(STM32WBxx) || defined(STM32MP1xx)
263+ #if defined(SPI_NSS_PULSE_DISABLE)
273264 handle->Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
274265#endif
275266
@@ -429,23 +420,23 @@ spi_status_e spi_transfer(spi_t *obj, uint8_t *tx_buffer, uint8_t *rx_buffer,
429420 }
430421 tickstart = HAL_GetTick();
431422
432- #if defined(STM32H7xx) || defined(STM32MP1xx )
423+ #if defined(SPI_CR2_TSIZE )
433424 /* Start transfer */
434425 LL_SPI_SetTransferSize(_SPI, size);
435426 LL_SPI_Enable(_SPI);
436427 LL_SPI_StartMasterTransfer(_SPI);
437428#endif
438429
439430 while (size--) {
440- #if defined(STM32H7xx) || defined(STM32MP1xx )
431+ #if defined(SPI_SR_TXP )
441432 while (!LL_SPI_IsActiveFlag_TXP(_SPI));
442433#else
443434 while (!LL_SPI_IsActiveFlag_TXE(_SPI));
444435#endif
445436 LL_SPI_TransmitData8(_SPI, *tx_buffer++);
446437
447438 if (!skipReceive) {
448- #if defined(STM32H7xx) || defined(STM32MP1xx )
439+ #if defined(SPI_SR_RXP )
449440 while (!LL_SPI_IsActiveFlag_RXP(_SPI));
450441#else
451442 while (!LL_SPI_IsActiveFlag_RXNE(_SPI));
@@ -458,7 +449,7 @@ spi_status_e spi_transfer(spi_t *obj, uint8_t *tx_buffer, uint8_t *rx_buffer,
458449 }
459450 }
460451
461- #if defined(STM32H7xx) || defined(STM32MP1xx )
452+ #if defined(SPI_IFCR_EOTC )
462453 /* Close transfer */
463454 /* Clear flags */
464455 LL_SPI_ClearFlag_EOT(_SPI);
0 commit comments