Lines Matching refs:hspi
238 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
240 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint…
242 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
243 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
244 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
245 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
246 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
247 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
248 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
249 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
251 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
254 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
256 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
257 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
258 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
259 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
260 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
261 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
262 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
314 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
319 if (hspi == NULL) in HAL_SPI_Init()
325 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
326 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
327 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
328 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
329 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
330 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
331 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
332 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
333 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
334 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
336 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
337 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
339 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
341 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
346 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
351 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
354 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
355 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
358 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
359 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
361 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
362 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
365 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
368 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
371 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
375 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
376 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
377 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
378 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
379 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
380 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
381 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
382 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
384 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
386 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
390 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
393 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
397 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
400 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
403 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
413 if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT)) in HAL_SPI_Init()
416 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
422 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
423 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
424 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
425 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
426 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
427 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
428 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
429 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
432 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
435 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
438 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
440 hspi->Init.CRCLength = SPI_CRC_LENGTH_16BIT; in HAL_SPI_Init()
444 hspi->Init.CRCLength = SPI_CRC_LENGTH_8BIT; in HAL_SPI_Init()
449 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_Init()
451 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCL); in HAL_SPI_Init()
457 WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | in HAL_SPI_Init()
458 (hspi->Init.TIMode & SPI_CR2_FRF) | in HAL_SPI_Init()
459 (hspi->Init.NSSPMode & SPI_CR2_NSSP) | in HAL_SPI_Init()
460 (hspi->Init.DataSize & SPI_CR2_DS_Msk) | in HAL_SPI_Init()
466 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
468 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
474 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
477 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
478 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
489 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
492 if (hspi == NULL) in HAL_SPI_DeInit()
498 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
500 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
503 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
506 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
508 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
512 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
515 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
518 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
519 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
522 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
533 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
536 UNUSED(hspi); in HAL_SPI_MspInit()
549 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
552 UNUSED(hspi); in HAL_SPI_MspDeInit()
569 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
577 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
582 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
584 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
589 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
593 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
597 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
601 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
605 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
609 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
613 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
617 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
621 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
625 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
630 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
637 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
642 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
646 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
651 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
661 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
668 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
680 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
685 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
687 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
692 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
696 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
700 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
704 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
708 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
712 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
716 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
720 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
724 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
728 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
733 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
740 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
745 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
749 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
754 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
764 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
771 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
821 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t… in HAL_SPI_Transmit() argument
828 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
831 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
837 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
850 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
851 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
852 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit()
853 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
854 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
857 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
858 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
859 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
860 hspi->TxISR = NULL; in HAL_SPI_Transmit()
861 hspi->RxISR = NULL; in HAL_SPI_Transmit()
864 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
867 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
868 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
873 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
875 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
880 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
883 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
887 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
889 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
891 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
892 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
893 hspi->TxXferCount--; in HAL_SPI_Transmit()
896 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
899 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
901 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
902 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
903 hspi->TxXferCount--; in HAL_SPI_Transmit()
911 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
920 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
922 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
925 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
926 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
927 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
931 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
932 hspi->pTxBuffPtr ++; in HAL_SPI_Transmit()
933 hspi->TxXferCount--; in HAL_SPI_Transmit()
936 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
939 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
941 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
944 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
945 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
946 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
950 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
951 hspi->pTxBuffPtr++; in HAL_SPI_Transmit()
952 hspi->TxXferCount--; in HAL_SPI_Transmit()
961 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
969 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
971 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
976 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
978 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
982 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
984 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
987 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
993 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
998 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1011 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1021 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1027 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
1029 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1031 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
1035 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1047 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1048 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1049 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1050 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1051 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1054 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
1055 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
1056 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
1057 hspi->RxISR = NULL; in HAL_SPI_Receive()
1058 hspi->TxISR = NULL; in HAL_SPI_Receive()
1062 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1064 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
1066 hspi->RxXferCount--; in HAL_SPI_Receive()
1071 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1074 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1079 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1083 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1086 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1087 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1091 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1094 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1098 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1101 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1104 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1107 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1108 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1109 hspi->RxXferCount--; in HAL_SPI_Receive()
1117 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1126 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1129 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1131 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1132 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1133 hspi->RxXferCount--; in HAL_SPI_Receive()
1141 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1150 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1153 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1156 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1164 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1166 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1171 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1175 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1177 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1183 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1186 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1193 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1199 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive()
1201 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1204 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1218 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1220 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1225 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1227 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1228 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1232 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1238 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1242 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1256 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxDa… in HAL_SPI_TransmitReceive() argument
1277 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1280 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1286 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1287 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1291 spi_cr1 = READ_REG(hspi->Instance->CR1); in HAL_SPI_TransmitReceive()
1292 spi_cr2 = READ_REG(hspi->Instance->CR2); in HAL_SPI_TransmitReceive()
1296 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1309 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1311 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1315 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1316 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1317 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1318 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1319 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1320 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1321 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1324 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1325 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1329 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1331 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1336 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (initial_RxXferCount > 1U)) in HAL_SPI_TransmitReceive()
1339 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1344 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1348 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1351 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1355 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1357 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1359 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1360 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1361 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1365 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1370 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1372 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1377 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1380 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1382 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1383 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1384 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1390 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1395 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1397 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1403 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1405 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1406 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1407 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1414 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1422 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1424 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1426 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1427 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1428 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1432 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1433 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1434 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1438 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1443 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1445 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1450 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1453 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1455 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1457 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1458 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1459 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1463 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1464 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1465 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1472 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1477 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1479 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1485 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1487 if (hspi->RxXferCount > 1U) in HAL_SPI_TransmitReceive()
1489 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1490 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1491 hspi->RxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1492 if (hspi->RxXferCount <= 1U) in HAL_SPI_TransmitReceive()
1495 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1500 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1501 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1502 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1510 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1518 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1521 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1524 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1529 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1532 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1539 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1545 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_TransmitReceive()
1547 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1550 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1563 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1565 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1567 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1574 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1577 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1580 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1586 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1590 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1602 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1607 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1616 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1623 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1626 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1627 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1628 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_IT()
1629 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1630 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1633 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1634 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1635 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1636 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1639 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1641 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1645 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1649 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1652 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1653 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1658 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1660 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1665 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1668 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1672 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1674 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1688 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1693 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1699 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1701 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1703 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1714 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1717 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1718 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1719 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1720 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1721 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1724 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1725 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1726 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1727 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1730 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1733 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1734 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1739 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1740 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1744 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1747 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1748 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1753 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1755 hspi->CRCSize = 1U; in HAL_SPI_Receive_IT()
1756 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive_IT()
1758 hspi->CRCSize = 2U; in HAL_SPI_Receive_IT()
1760 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1764 hspi->CRCSize = 0U; in HAL_SPI_Receive_IT()
1773 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1776 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1780 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1782 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1797 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pR… in HAL_SPI_TransmitReceive_IT() argument
1804 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1807 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1808 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1811 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1824 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1827 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1829 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1833 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1834 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1835 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1836 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1837 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1838 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1839 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1842 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1844 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1845 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1849 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1850 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1855 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1857 hspi->CRCSize = 1U; in HAL_SPI_TransmitReceive_IT()
1858 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_TransmitReceive_IT()
1860 hspi->CRCSize = 2U; in HAL_SPI_TransmitReceive_IT()
1862 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1866 hspi->CRCSize = 0U; in HAL_SPI_TransmitReceive_IT()
1871 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (Size >= 2U)) in HAL_SPI_TransmitReceive_IT()
1874 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1879 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1884 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1887 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1891 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1893 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1907 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1912 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1915 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1918 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1920 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1933 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1934 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1935 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1936 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1937 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1940 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1941 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1942 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1943 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1944 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1947 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1950 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1951 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1956 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1958 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1963 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1966 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1969 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1972 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1974 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1976 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_Transmit_DMA()
1979 if ((hspi->TxXferCount & 0x1U) == 0U) in HAL_SPI_Transmit_DMA()
1981 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1982 hspi->TxXferCount = (hspi->TxXferCount >> 1U); in HAL_SPI_Transmit_DMA()
1986 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1987 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_Transmit_DMA()
1992 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1993 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1996 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
2003 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
2006 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
2010 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
2013 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
2017 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2031 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
2036 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
2038 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2044 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
2046 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2049 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
2052 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
2056 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2065 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2066 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2067 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2068 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2069 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2072 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2073 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2074 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
2075 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
2078 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2081 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
2082 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2087 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
2089 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
2094 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2095 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2098 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2103 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2105 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Receive_DMA()
2108 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2110 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_Receive_DMA()
2112 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2113 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_Receive_DMA()
2117 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2118 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_Receive_DMA()
2124 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2127 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2130 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2133 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2136 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
2137 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
2140 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2147 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
2150 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2154 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
2157 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
2161 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2175 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *p… in HAL_SPI_TransmitReceive_DMA() argument
2183 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
2184 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
2187 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2190 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2193 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
2194 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
2197 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
2210 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2212 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2216 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2217 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2218 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2219 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2220 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2221 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2222 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2225 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2226 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2230 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
2232 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
2237 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX | SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2240 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2243 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2248 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2250 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2252 if ((hspi->TxXferSize & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2254 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2255 hspi->TxXferCount = hspi->TxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2259 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2260 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2264 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2267 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2269 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2271 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2272 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2276 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2277 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2283 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2286 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2287 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2292 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2293 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2297 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2300 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2303 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
2304 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2307 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2314 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2318 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2319 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2320 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2321 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2324 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2325 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2328 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2335 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
2338 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2341 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
2344 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2348 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2365 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2377 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2380 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2382 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2388 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2392 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2397 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2399 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2405 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2409 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2415 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2418 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2422 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2425 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2427 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2431 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2433 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in HAL_SPI_Abort()
2435 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2439 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2442 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2444 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2450 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2453 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2457 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2460 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2462 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2466 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2469 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in HAL_SPI_Abort()
2471 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2475 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2477 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2481 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2485 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2486 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2489 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2497 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2501 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2502 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2505 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2525 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2539 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2542 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2544 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2550 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2554 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2559 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2561 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2567 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2571 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2579 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2583 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2585 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2589 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2593 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2597 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2599 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2603 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2608 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2611 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2614 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2616 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2617 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2626 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2629 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2632 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2634 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2635 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2647 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2648 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2651 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2659 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2663 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2664 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2667 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2671 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2673 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2686 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2689 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2692 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2695 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2706 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2709 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2712 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2715 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2726 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2736 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2738 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2740 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2745 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2747 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2749 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2755 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2756 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2766 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2768 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2769 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2775 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2782 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2793 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2795 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2796 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2800 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2808 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2809 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2815 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2816 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2819 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2822 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2824 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2828 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2831 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2835 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2836 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2838 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2842 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2846 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2847 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2849 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2857 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2859 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2873 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2876 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2889 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2892 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2905 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2908 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2921 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2924 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2937 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2940 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2953 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2956 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2969 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2972 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2987 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2990 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
3022 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
3025 return hspi->State; in HAL_SPI_GetState()
3034 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3037 return hspi->ErrorCode; in HAL_SPI_GetError()
3061 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
3071 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
3074 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
3077 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
3079 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
3083 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
3085 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
3088 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
3089 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
3091 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
3095 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
3097 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
3104 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3106 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3118 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
3133 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
3137 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
3140 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3143 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3146 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in SPI_DMAReceiveCplt()
3149 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
3156 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMAReceiveCplt()
3162 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in SPI_DMAReceiveCplt()
3164 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3167 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3179 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
3182 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3187 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3191 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
3193 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
3196 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
3197 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
3201 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
3203 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3204 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
3208 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
3212 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3214 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3221 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3223 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3235 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
3250 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
3254 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
3256 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_8BIT)) in SPI_DMATransmitReceiveCplt()
3258 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_QUARTER_FULL, SPI_DEFAULT_TIMEOU… in SPI_DMATransmitReceiveCplt()
3262 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3265 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMATransmitReceiveCplt()
3273 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_HALF_FULL, SPI_DEFAULT_TIMEOUT, … in SPI_DMATransmitReceiveCplt()
3276 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3279 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
3287 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
3289 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
3293 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
3295 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3296 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3297 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
3301 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
3303 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3304 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
3308 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
3312 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3314 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3321 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3323 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3335 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
3339 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3341 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3353 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
3357 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3359 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3371 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
3375 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3377 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3389 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
3392 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
3394 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3395 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3398 hspi->ErrorCallback(hspi); in SPI_DMAError()
3400 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3412 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3413 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3414 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3418 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3420 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3434 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3436 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3439 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3441 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMATxAbortCallback()
3443 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3447 __HAL_SPI_DISABLE(hspi); in SPI_DMATxAbortCallback()
3450 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMATxAbortCallback()
3452 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3456 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3458 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3465 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3466 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3469 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3472 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3476 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3477 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3480 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3484 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3486 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3500 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3503 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3505 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3508 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3511 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_DMARxAbortCallback()
3513 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3517 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMARxAbortCallback()
3519 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3523 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3525 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3532 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3533 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3536 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3539 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3543 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3544 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3547 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3551 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3553 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3563 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3566 if (hspi->RxXferCount > 1U) in SPI_2linesRxISR_8BIT()
3568 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3569 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_8BIT()
3570 hspi->RxXferCount -= 2U; in SPI_2linesRxISR_8BIT()
3571 if (hspi->RxXferCount == 1U) in SPI_2linesRxISR_8BIT()
3574 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3580 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3581 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3582 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3586 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3589 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3591 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3592 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3598 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3600 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3602 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3614 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3620 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3626 hspi->CRCSize--; in SPI_2linesRxISR_8BITCRC()
3629 if (hspi->CRCSize == 0U) in SPI_2linesRxISR_8BITCRC()
3632 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3634 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3636 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3648 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3651 if (hspi->TxXferCount >= 2U) in SPI_2linesTxISR_8BIT()
3653 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3654 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_8BIT()
3655 hspi->TxXferCount -= 2U; in SPI_2linesTxISR_8BIT()
3660 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3661 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3662 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3666 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3669 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3672 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3674 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3680 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3682 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3684 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3695 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3698 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3699 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3700 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3702 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3705 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3707 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3713 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3715 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3717 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3729 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3734 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3739 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3741 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3751 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3754 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3755 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3756 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3759 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3762 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3765 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3767 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3773 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3775 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3777 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3789 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3795 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3801 hspi->CRCSize--; in SPI_RxISR_8BITCRC()
3803 if (hspi->CRCSize == 0U) in SPI_RxISR_8BITCRC()
3805 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3816 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3818 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3819 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3820 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3824 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3826 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3830 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3833 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3835 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3839 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3850 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3855 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3860 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3862 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3872 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3874 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3875 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3876 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3880 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3882 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3886 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3889 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3891 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3895 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3905 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3907 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3908 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3909 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3911 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3914 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3917 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3920 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3930 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3933 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3934 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3935 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3937 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3940 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3943 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3946 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3960 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3974 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3985 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3987 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3988 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3991 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3995 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3997 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
4000 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
4003 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
4029 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint… in SPI_WaitFifoStateUntilTimeout() argument
4043 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_WaitFifoStateUntilTimeout()
4048 while ((hspi->Instance->SR & Fifo) != State) in SPI_WaitFifoStateUntilTimeout()
4067 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFifoStateUntilTimeout()
4069 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFifoStateUntilTimeout()
4070 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFifoStateUntilTimeout()
4073 __HAL_SPI_DISABLE(hspi); in SPI_WaitFifoStateUntilTimeout()
4077 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFifoStateUntilTimeout()
4079 SPI_RESET_CRC(hspi); in SPI_WaitFifoStateUntilTimeout()
4082 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFifoStateUntilTimeout()
4085 __HAL_UNLOCK(hspi); in SPI_WaitFifoStateUntilTimeout()
4109 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
4111 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4112 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4115 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
4119 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
4121 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4125 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4126 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4129 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTransaction()
4131 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4145 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
4148 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4150 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4155 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
4157 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4162 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4164 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4177 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
4185 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
4188 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
4190 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
4195 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
4197 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4198 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
4199 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
4202 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4204 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4210 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
4212 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
4214 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4217 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4219 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4224 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4227 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4229 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4235 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4238 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4240 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4254 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
4257 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
4260 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
4262 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
4264 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
4268 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
4270 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
4271 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
4274 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4276 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4282 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
4286 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4288 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4295 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4297 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4311 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
4319 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
4322 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
4324 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
4328 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
4330 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
4333 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
4334 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
4338 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
4340 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
4347 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4349 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4360 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
4365 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
4370 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4377 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
4381 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4384 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortRx_ISR()
4386 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4390 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortRx_ISR()
4392 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4395 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
4404 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
4411 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4418 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4422 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4424 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_AbortTx_ISR()
4426 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4430 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
4433 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4435 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4439 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in SPI_AbortTx_ISR()
4442 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4449 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4453 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4456 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortTx_ISR()
4458 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4462 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4464 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4467 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()