Lines Matching refs:hspi
239 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
241 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint…
243 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
244 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
245 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
246 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
247 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
248 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
249 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
250 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
254 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
255 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
257 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
258 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
259 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
260 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
261 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
262 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
263 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
315 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
320 if (hspi == NULL) in HAL_SPI_Init()
326 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
327 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
328 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
329 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
330 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
331 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
332 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
333 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
334 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
335 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
337 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
338 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
340 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
342 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
347 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
352 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
355 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
356 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
359 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
360 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
362 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
363 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
366 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
369 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
372 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
376 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
377 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
378 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
379 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
380 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
381 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
382 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
383 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
385 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
387 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
391 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
394 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
398 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
401 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
404 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
414 if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT)) in HAL_SPI_Init()
417 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
423 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
424 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
425 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
426 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
427 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
428 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
429 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
430 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
433 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
436 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
439 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
441 hspi->Init.CRCLength = SPI_CRC_LENGTH_16BIT; in HAL_SPI_Init()
445 hspi->Init.CRCLength = SPI_CRC_LENGTH_8BIT; in HAL_SPI_Init()
450 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_Init()
452 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCL); in HAL_SPI_Init()
458 WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | in HAL_SPI_Init()
459 (hspi->Init.TIMode & SPI_CR2_FRF) | in HAL_SPI_Init()
460 (hspi->Init.NSSPMode & SPI_CR2_NSSP) | in HAL_SPI_Init()
461 (hspi->Init.DataSize & SPI_CR2_DS_Msk) | in HAL_SPI_Init()
467 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
469 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
475 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
478 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
479 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
490 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
493 if (hspi == NULL) in HAL_SPI_DeInit()
499 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
501 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
504 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
507 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
509 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
513 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
516 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
519 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
520 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
523 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
534 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
537 UNUSED(hspi); in HAL_SPI_MspInit()
550 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
553 UNUSED(hspi); in HAL_SPI_MspDeInit()
570 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
578 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
583 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
585 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
590 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
594 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
598 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
602 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
606 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
610 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
614 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
618 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
622 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
626 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
631 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
638 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
643 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
647 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
652 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
662 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
669 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
681 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
686 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
688 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
693 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
697 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
701 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
705 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
709 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
713 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
717 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
721 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
725 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
729 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
734 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
741 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
746 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
750 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
755 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
765 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
772 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
822 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t… in HAL_SPI_Transmit() argument
829 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
832 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
838 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
851 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
852 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
853 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit()
854 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
855 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
858 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
859 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
860 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
861 hspi->TxISR = NULL; in HAL_SPI_Transmit()
862 hspi->RxISR = NULL; in HAL_SPI_Transmit()
865 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
868 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
869 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
874 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
876 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
881 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
884 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
888 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
890 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
892 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
893 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
894 hspi->TxXferCount--; in HAL_SPI_Transmit()
897 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
900 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
902 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
903 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
904 hspi->TxXferCount--; in HAL_SPI_Transmit()
912 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
921 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
923 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
926 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
927 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
928 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
932 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
933 hspi->pTxBuffPtr ++; in HAL_SPI_Transmit()
934 hspi->TxXferCount--; in HAL_SPI_Transmit()
937 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
940 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
942 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
945 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
946 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
947 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
951 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
952 hspi->pTxBuffPtr++; in HAL_SPI_Transmit()
953 hspi->TxXferCount--; in HAL_SPI_Transmit()
962 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
970 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
972 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
977 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
979 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
983 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
985 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
988 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
994 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
999 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1012 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1022 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1028 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
1030 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1032 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
1036 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1048 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1049 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1050 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1051 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1052 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1055 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
1056 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
1057 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
1058 hspi->RxISR = NULL; in HAL_SPI_Receive()
1059 hspi->TxISR = NULL; in HAL_SPI_Receive()
1063 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1065 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
1067 hspi->RxXferCount--; in HAL_SPI_Receive()
1072 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1075 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1080 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1084 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1087 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1088 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1092 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1095 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1099 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1102 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1105 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1108 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1109 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1110 hspi->RxXferCount--; in HAL_SPI_Receive()
1118 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1127 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1130 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1132 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1133 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1134 hspi->RxXferCount--; in HAL_SPI_Receive()
1142 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1151 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1154 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1157 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1165 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1167 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1172 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1176 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1178 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1184 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1187 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1194 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1200 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive()
1202 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1205 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1219 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1221 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1226 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1228 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1229 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1233 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1239 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1243 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1257 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxDa… in HAL_SPI_TransmitReceive() argument
1278 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1281 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1287 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1288 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1292 spi_cr1 = READ_REG(hspi->Instance->CR1); in HAL_SPI_TransmitReceive()
1293 spi_cr2 = READ_REG(hspi->Instance->CR2); in HAL_SPI_TransmitReceive()
1297 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1310 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1312 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1316 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1317 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1318 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1319 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1320 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1321 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1322 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1325 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1326 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1330 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1332 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1337 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (initial_RxXferCount > 1U)) in HAL_SPI_TransmitReceive()
1340 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1345 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1349 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1352 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1356 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1358 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1360 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1361 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1362 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1366 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1371 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1373 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1378 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1381 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1383 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1384 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1385 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1391 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1396 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1398 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1404 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1406 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1407 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1408 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1415 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1423 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1425 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1427 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1428 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1429 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1433 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1434 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1435 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1439 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1444 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1446 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1451 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1454 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1456 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1458 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1459 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1460 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1464 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1465 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1466 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1473 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1478 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1480 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1486 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1488 if (hspi->RxXferCount > 1U) in HAL_SPI_TransmitReceive()
1490 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1491 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1492 hspi->RxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1493 if (hspi->RxXferCount <= 1U) in HAL_SPI_TransmitReceive()
1496 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1501 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1502 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1503 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1511 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1519 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1522 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1525 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1530 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1533 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1540 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1546 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_TransmitReceive()
1548 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1551 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1564 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1566 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1568 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1575 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1578 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1581 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1587 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1591 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1603 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1608 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1617 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1624 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1627 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1628 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1629 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_IT()
1630 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1631 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1634 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1635 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1636 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1637 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1640 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1642 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1646 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1650 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1653 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1654 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1659 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1661 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1666 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1669 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1673 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1675 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1689 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1694 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1700 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1702 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1704 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1715 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1718 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1719 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1720 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1721 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1722 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1725 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1726 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1727 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1728 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1731 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1734 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1735 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1740 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1741 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1745 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1748 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1749 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1754 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1756 hspi->CRCSize = 1U; in HAL_SPI_Receive_IT()
1757 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive_IT()
1759 hspi->CRCSize = 2U; in HAL_SPI_Receive_IT()
1761 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1765 hspi->CRCSize = 0U; in HAL_SPI_Receive_IT()
1774 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1777 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1781 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1783 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1798 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pR… in HAL_SPI_TransmitReceive_IT() argument
1805 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1808 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1809 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1812 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1825 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1828 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1830 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1834 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1835 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1836 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1837 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1838 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1839 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1840 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1843 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1845 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1846 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1850 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1851 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1856 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1858 hspi->CRCSize = 1U; in HAL_SPI_TransmitReceive_IT()
1859 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_TransmitReceive_IT()
1861 hspi->CRCSize = 2U; in HAL_SPI_TransmitReceive_IT()
1863 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1867 hspi->CRCSize = 0U; in HAL_SPI_TransmitReceive_IT()
1872 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (Size >= 2U)) in HAL_SPI_TransmitReceive_IT()
1875 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1880 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1885 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1888 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1892 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1894 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1908 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1913 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1916 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1919 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1921 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1934 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1935 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1936 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1937 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1938 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1941 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1942 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1943 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1944 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1945 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1948 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1951 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1952 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1957 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1959 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1964 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1967 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1970 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1973 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1975 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1977 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_Transmit_DMA()
1980 if ((hspi->TxXferCount & 0x1U) == 0U) in HAL_SPI_Transmit_DMA()
1982 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1983 hspi->TxXferCount = (hspi->TxXferCount >> 1U); in HAL_SPI_Transmit_DMA()
1987 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1988 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_Transmit_DMA()
1993 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1994 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1997 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
2004 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
2007 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
2011 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
2014 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
2018 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2032 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
2037 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
2039 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2045 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
2047 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2050 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
2053 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
2057 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2066 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2067 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2068 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2069 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2070 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2073 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2074 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2075 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
2076 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
2079 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2082 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
2083 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2088 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
2090 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
2095 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2096 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2099 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2104 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2106 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Receive_DMA()
2109 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2111 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_Receive_DMA()
2113 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2114 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_Receive_DMA()
2118 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2119 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_Receive_DMA()
2125 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2128 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2131 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2134 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2137 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
2138 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
2141 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2148 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
2151 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2155 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
2158 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
2162 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2176 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *p… in HAL_SPI_TransmitReceive_DMA() argument
2184 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
2185 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
2188 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2191 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2194 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
2195 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
2198 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
2211 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2213 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2217 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2218 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2219 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2220 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2221 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2222 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2223 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2226 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2227 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2231 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
2233 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
2238 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX | SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2241 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2244 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2249 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2251 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2253 if ((hspi->TxXferSize & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2255 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2256 hspi->TxXferCount = hspi->TxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2260 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2261 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2265 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2268 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2270 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2272 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2273 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2277 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2278 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2284 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2287 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2288 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2293 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2294 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2298 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2301 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2304 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
2305 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2308 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2315 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2319 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2320 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2321 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2322 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2325 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2326 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2329 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2336 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
2339 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2342 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
2345 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2349 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2366 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2378 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2381 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2383 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2389 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2393 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2398 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2400 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2406 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2410 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2416 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2419 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2423 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2426 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2428 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2432 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2434 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in HAL_SPI_Abort()
2436 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2440 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2443 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2445 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2451 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2454 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2458 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2461 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2463 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2467 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2470 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in HAL_SPI_Abort()
2472 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2476 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2478 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2482 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2486 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2487 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2490 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2498 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2502 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2503 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2506 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2526 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2540 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2543 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2545 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2551 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2555 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2560 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2562 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2568 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2572 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2580 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2584 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2586 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2590 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2594 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2598 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2600 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2604 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2609 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2612 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2615 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2617 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2618 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2627 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2630 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2633 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2635 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2636 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2648 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2649 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2652 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2660 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2664 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2665 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2668 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2672 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2674 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2687 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2690 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2693 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2696 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2707 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2710 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2713 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2716 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2727 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2737 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2739 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2741 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2746 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2748 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2750 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2756 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2757 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2767 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2769 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2770 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2776 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2783 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2794 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2796 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2797 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2801 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2809 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2810 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2816 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2817 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2820 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2823 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2825 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2829 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2832 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2836 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2837 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2839 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2843 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2847 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2848 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2850 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2858 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2860 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2874 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2877 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2890 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2893 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2906 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2909 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2922 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2925 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2938 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2941 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2954 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2957 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2970 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2973 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2988 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2991 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
3023 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
3026 return hspi->State; in HAL_SPI_GetState()
3035 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3038 return hspi->ErrorCode; in HAL_SPI_GetError()
3062 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
3072 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
3075 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
3078 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
3080 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
3084 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
3086 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
3089 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
3090 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
3092 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
3096 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
3098 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
3105 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3107 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3119 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
3134 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
3138 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
3141 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3144 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3147 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in SPI_DMAReceiveCplt()
3150 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
3157 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMAReceiveCplt()
3163 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in SPI_DMAReceiveCplt()
3165 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3168 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3180 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
3183 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3188 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3192 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
3194 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
3197 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
3198 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
3202 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
3204 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3205 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
3209 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
3213 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3215 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3222 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3224 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3236 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
3251 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
3255 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
3257 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_8BIT)) in SPI_DMATransmitReceiveCplt()
3259 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_QUARTER_FULL, SPI_DEFAULT_TIMEOU… in SPI_DMATransmitReceiveCplt()
3263 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3266 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMATransmitReceiveCplt()
3274 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_HALF_FULL, SPI_DEFAULT_TIMEOUT, … in SPI_DMATransmitReceiveCplt()
3277 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3280 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
3288 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
3290 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
3294 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
3296 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3297 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3298 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
3302 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
3304 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3305 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
3309 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
3313 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3315 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3322 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3324 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3336 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
3340 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3342 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3354 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
3358 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3360 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3372 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
3376 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3378 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3390 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
3393 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
3395 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3396 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3399 hspi->ErrorCallback(hspi); in SPI_DMAError()
3401 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3413 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3414 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3415 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3419 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3421 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3435 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3437 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3440 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3442 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMATxAbortCallback()
3444 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3448 __HAL_SPI_DISABLE(hspi); in SPI_DMATxAbortCallback()
3451 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMATxAbortCallback()
3453 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3457 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3459 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3466 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3467 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3470 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3473 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3477 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3478 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3481 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3485 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3487 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3501 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3504 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3506 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3509 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3512 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_DMARxAbortCallback()
3514 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3518 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMARxAbortCallback()
3520 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3524 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3526 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3533 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3534 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3537 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3540 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3544 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3545 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3548 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3552 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3554 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3564 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3567 if (hspi->RxXferCount > 1U) in SPI_2linesRxISR_8BIT()
3569 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3570 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_8BIT()
3571 hspi->RxXferCount -= 2U; in SPI_2linesRxISR_8BIT()
3572 if (hspi->RxXferCount == 1U) in SPI_2linesRxISR_8BIT()
3575 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3581 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3582 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3583 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3587 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3590 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3592 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3593 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3599 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3601 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3603 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3615 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3621 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3627 hspi->CRCSize--; in SPI_2linesRxISR_8BITCRC()
3630 if (hspi->CRCSize == 0U) in SPI_2linesRxISR_8BITCRC()
3633 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3635 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3637 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3649 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3652 if (hspi->TxXferCount >= 2U) in SPI_2linesTxISR_8BIT()
3654 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3655 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_8BIT()
3656 hspi->TxXferCount -= 2U; in SPI_2linesTxISR_8BIT()
3661 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3662 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3663 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3667 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3670 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3673 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3675 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3681 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3683 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3685 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3696 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3699 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3700 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3701 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3703 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3706 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3708 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3714 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3716 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3718 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3730 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3735 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3740 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3742 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3752 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3755 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3756 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3757 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3760 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3763 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3766 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3768 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3774 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3776 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3778 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3790 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3796 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3802 hspi->CRCSize--; in SPI_RxISR_8BITCRC()
3804 if (hspi->CRCSize == 0U) in SPI_RxISR_8BITCRC()
3806 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3817 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3819 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3820 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3821 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3825 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3827 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3831 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3834 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3836 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3840 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3851 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3856 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3861 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3863 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3873 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3875 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3876 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3877 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3881 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3883 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3887 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3890 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3892 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3896 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3906 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3908 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3909 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3910 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3912 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3915 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3918 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3921 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3931 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3934 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3935 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3936 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3938 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3941 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3944 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3947 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3961 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3975 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3986 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3988 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3989 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3992 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3996 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3998 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
4001 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
4004 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
4030 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint… in SPI_WaitFifoStateUntilTimeout() argument
4044 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_WaitFifoStateUntilTimeout()
4049 while ((hspi->Instance->SR & Fifo) != State) in SPI_WaitFifoStateUntilTimeout()
4068 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFifoStateUntilTimeout()
4070 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFifoStateUntilTimeout()
4071 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFifoStateUntilTimeout()
4074 __HAL_SPI_DISABLE(hspi); in SPI_WaitFifoStateUntilTimeout()
4078 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFifoStateUntilTimeout()
4080 SPI_RESET_CRC(hspi); in SPI_WaitFifoStateUntilTimeout()
4083 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFifoStateUntilTimeout()
4086 __HAL_UNLOCK(hspi); in SPI_WaitFifoStateUntilTimeout()
4110 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
4112 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4113 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4116 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
4120 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTransaction()
4123 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
4125 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4146 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); in SPI_EndRxTransaction()
4149 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4150 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4153 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTransaction()
4155 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4169 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
4172 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4174 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4181 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTxTransaction()
4184 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
4186 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4204 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); in SPI_EndRxTxTransaction()
4209 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4211 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4224 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
4232 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
4235 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
4237 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
4242 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
4244 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4245 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
4246 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
4249 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4251 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4257 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
4259 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
4261 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4264 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4266 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4271 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4274 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4276 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4282 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4285 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4287 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4301 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
4304 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
4307 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
4309 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
4311 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
4315 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
4317 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
4318 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
4321 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4323 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4329 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
4333 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4335 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4342 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4344 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4358 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
4366 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
4369 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
4371 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
4375 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
4377 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
4380 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
4381 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
4385 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
4387 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
4394 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4396 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4407 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
4412 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
4417 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4424 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
4428 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4431 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortRx_ISR()
4433 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4437 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortRx_ISR()
4439 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4442 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
4451 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
4458 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4465 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4469 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4471 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_AbortTx_ISR()
4473 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4477 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
4480 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4482 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4486 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in SPI_AbortTx_ISR()
4489 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4496 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4500 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4503 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortTx_ISR()
4505 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4509 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4511 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4514 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()