@@ -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