Skip to content

Commit 9dea082

Browse files
committed
library: spi: add STM32U5xx support
use register definition instead of serie name Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 68e9f21 commit 9dea082

File tree

1 file changed

+20
-29
lines changed

1 file changed

+20
-29
lines changed

libraries/SPI/src/utility/spi_com.c

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)