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()
919 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
921 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
924 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
925 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
926 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
930 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
931 hspi->pTxBuffPtr ++; in HAL_SPI_Transmit()
932 hspi->TxXferCount--; in HAL_SPI_Transmit()
935 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
938 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
940 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
943 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
944 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
945 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
949 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
950 hspi->pTxBuffPtr++; in HAL_SPI_Transmit()
951 hspi->TxXferCount--; in HAL_SPI_Transmit()
967 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
969 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
974 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
976 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
980 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
982 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
985 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
991 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
993 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1006 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1016 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
1018 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1020 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
1024 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1029 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1042 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1043 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1044 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1045 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1046 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1049 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
1050 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
1051 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
1052 hspi->RxISR = NULL; in HAL_SPI_Receive()
1053 hspi->TxISR = NULL; in HAL_SPI_Receive()
1057 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1059 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
1061 hspi->RxXferCount--; in HAL_SPI_Receive()
1066 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1069 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1074 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1078 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1081 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1082 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1086 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1089 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1093 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1096 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1099 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1102 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1103 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1104 hspi->RxXferCount--; in HAL_SPI_Receive()
1120 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1123 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1125 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1126 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1127 hspi->RxXferCount--; in HAL_SPI_Receive()
1143 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1146 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1149 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1157 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1159 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1164 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1168 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1170 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1176 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1179 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1186 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1192 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive()
1194 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1197 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1211 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1213 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1218 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1220 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1221 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1225 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1231 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1232 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1246 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxDa… in HAL_SPI_TransmitReceive() argument
1267 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1270 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1276 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1277 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1281 spi_cr1 = READ_REG(hspi->Instance->CR1); in HAL_SPI_TransmitReceive()
1282 spi_cr2 = READ_REG(hspi->Instance->CR2); in HAL_SPI_TransmitReceive()
1286 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1299 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1301 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1305 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1306 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1307 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1308 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1309 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1310 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1311 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1314 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1315 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1319 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1321 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1326 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (initial_RxXferCount > 1U)) in HAL_SPI_TransmitReceive()
1329 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1334 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1338 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1341 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1345 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1347 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1349 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1350 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1351 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1353 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1356 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1358 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1359 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1360 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()
1379 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1381 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1382 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1383 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1397 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1399 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1401 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1402 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1403 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1407 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1408 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1409 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1412 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1415 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1417 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1419 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1420 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1421 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1425 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1426 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1427 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1434 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1439 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1441 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1447 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1449 if (hspi->RxXferCount > 1U) in HAL_SPI_TransmitReceive()
1451 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1452 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1453 hspi->RxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1454 if (hspi->RxXferCount <= 1U) in HAL_SPI_TransmitReceive()
1457 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1462 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1463 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1464 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1479 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1482 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1485 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1490 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1493 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1500 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1506 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_TransmitReceive()
1508 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1511 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1524 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1526 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1528 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1535 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1538 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1542 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1543 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1555 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1560 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1563 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1571 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1578 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1579 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1580 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_IT()
1581 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1582 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1585 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1586 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1587 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1588 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1591 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1593 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1597 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1601 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1604 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1605 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1610 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1612 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1617 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1621 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1624 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1628 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1640 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1644 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1646 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1648 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1652 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1654 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1667 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1668 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1669 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1670 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1671 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1674 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1675 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1676 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1677 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1680 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1683 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1684 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1689 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1690 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1694 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1697 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1698 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1703 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1705 hspi->CRCSize = 1U; in HAL_SPI_Receive_IT()
1706 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive_IT()
1708 hspi->CRCSize = 2U; in HAL_SPI_Receive_IT()
1710 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1714 hspi->CRCSize = 0U; in HAL_SPI_Receive_IT()
1719 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1726 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1729 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1734 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1747 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pR… in HAL_SPI_TransmitReceive_IT() argument
1754 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1757 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1760 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1761 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1764 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1777 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1779 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1783 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1784 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1785 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1786 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1787 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1788 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1789 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1792 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1794 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1795 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1799 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1800 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1805 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1807 hspi->CRCSize = 1U; in HAL_SPI_TransmitReceive_IT()
1808 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_TransmitReceive_IT()
1810 hspi->CRCSize = 2U; in HAL_SPI_TransmitReceive_IT()
1812 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1816 hspi->CRCSize = 0U; in HAL_SPI_TransmitReceive_IT()
1821 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (Size >= 2U)) in HAL_SPI_TransmitReceive_IT()
1824 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1829 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1833 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1836 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1839 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1844 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1856 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1861 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1864 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1867 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1869 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1882 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1883 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1884 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1885 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1886 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1889 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1890 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1891 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1892 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1893 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1896 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1899 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1900 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1905 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1907 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1912 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1915 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1918 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1921 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1923 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1925 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_Transmit_DMA()
1928 if ((hspi->TxXferCount & 0x1U) == 0U) in HAL_SPI_Transmit_DMA()
1930 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1931 hspi->TxXferCount = (hspi->TxXferCount >> 1U); in HAL_SPI_Transmit_DMA()
1935 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1936 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_Transmit_DMA()
1941 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1942 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1945 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1948 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit_DMA()
1953 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1956 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1960 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1963 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
1967 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1981 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
1986 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
1988 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
1990 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1993 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
1996 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
2000 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2002 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2015 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2016 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2017 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2018 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2019 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2022 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2023 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2024 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
2025 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
2028 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2031 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
2032 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2037 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
2039 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
2044 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2045 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2048 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2053 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2055 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Receive_DMA()
2058 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2060 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_Receive_DMA()
2062 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2063 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_Receive_DMA()
2067 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2068 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_Receive_DMA()
2074 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2077 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2080 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2083 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2086 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
2087 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
2090 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2093 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive_DMA()
2098 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
2101 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2105 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
2108 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
2112 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2126 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *p… in HAL_SPI_TransmitReceive_DMA() argument
2134 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
2135 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
2138 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2141 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2144 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
2145 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
2148 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
2161 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2163 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2167 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2168 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2169 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2170 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2171 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2172 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2173 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2176 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2177 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2181 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
2183 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
2188 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX | SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2191 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2194 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2199 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2201 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2203 if ((hspi->TxXferSize & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2205 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2206 hspi->TxXferCount = hspi->TxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2210 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2211 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2215 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2218 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2220 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2222 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2223 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2227 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2228 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2234 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2237 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2238 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2243 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2244 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2248 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2251 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2254 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
2255 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2258 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2261 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2266 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2270 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2271 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2272 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2273 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2276 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2277 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2280 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2283 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2288 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
2291 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2294 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
2297 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2301 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2318 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2330 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2333 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2335 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2341 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2345 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2350 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2352 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2358 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2362 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2368 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2371 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2375 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2378 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2380 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2384 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2386 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in HAL_SPI_Abort()
2388 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2392 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2395 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2397 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2403 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2406 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2410 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2413 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2415 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2419 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2422 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in HAL_SPI_Abort()
2424 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2428 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2430 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2434 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2438 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2439 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2442 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2450 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2454 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2455 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2458 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2478 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2492 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2495 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2497 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2503 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2507 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2512 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2514 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2520 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2524 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2532 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2536 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2538 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2542 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2546 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2550 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2552 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2556 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2561 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2564 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2567 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2569 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2570 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2579 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2582 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2585 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2587 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2588 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2600 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2601 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2604 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2612 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2616 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2617 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2620 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2624 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2626 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2639 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2642 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2645 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2648 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2659 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2662 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2665 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2668 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2679 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2689 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2691 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2693 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2698 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2700 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2702 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2708 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2709 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2719 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2721 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2722 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2728 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2735 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2746 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2748 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2749 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2753 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2761 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2762 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2768 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2769 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2772 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2775 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2777 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2781 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2784 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2788 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2789 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2791 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2795 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2799 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2800 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2802 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2810 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2812 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2826 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2829 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2842 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2845 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2858 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2861 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2874 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2877 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2890 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2893 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2906 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2909 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2922 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2925 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2940 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2943 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2975 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2978 return hspi->State; in HAL_SPI_GetState()
2987 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
2990 return hspi->ErrorCode; in HAL_SPI_GetError()
3014 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
3024 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
3027 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
3030 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
3032 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
3036 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
3038 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
3041 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
3042 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
3044 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
3048 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
3050 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
3057 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3059 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3071 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
3086 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
3090 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
3093 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3096 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3099 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in SPI_DMAReceiveCplt()
3102 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
3109 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMAReceiveCplt()
3115 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in SPI_DMAReceiveCplt()
3117 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3120 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3132 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
3135 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3140 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3144 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
3146 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
3149 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
3150 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
3154 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
3156 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3157 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
3161 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
3165 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3167 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3174 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3176 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3188 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
3203 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
3207 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
3209 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_8BIT)) in SPI_DMATransmitReceiveCplt()
3211 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_QUARTER_FULL, SPI_DEFAULT_TIMEOU… in SPI_DMATransmitReceiveCplt()
3215 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3218 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMATransmitReceiveCplt()
3226 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_HALF_FULL, SPI_DEFAULT_TIMEOUT, … in SPI_DMATransmitReceiveCplt()
3229 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3232 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
3240 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
3242 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
3246 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
3248 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3249 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3250 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
3254 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
3256 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3257 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
3261 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
3265 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3267 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3274 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3276 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3288 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
3292 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3294 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3306 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
3310 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3312 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3324 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
3328 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3330 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3342 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
3345 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
3347 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3348 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3351 hspi->ErrorCallback(hspi); in SPI_DMAError()
3353 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3365 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3366 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3367 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3371 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3373 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3387 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3389 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3392 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3394 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMATxAbortCallback()
3396 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3400 __HAL_SPI_DISABLE(hspi); in SPI_DMATxAbortCallback()
3403 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMATxAbortCallback()
3405 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3409 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3411 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3418 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3419 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3422 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3425 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3429 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3430 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3433 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3437 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3439 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3453 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3456 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3458 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3461 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3464 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_DMARxAbortCallback()
3466 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3470 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMARxAbortCallback()
3472 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3476 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3478 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3485 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3486 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3489 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3492 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3496 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3497 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3500 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3504 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3506 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3516 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3519 if (hspi->RxXferCount > 1U) in SPI_2linesRxISR_8BIT()
3521 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3522 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_8BIT()
3523 hspi->RxXferCount -= 2U; in SPI_2linesRxISR_8BIT()
3524 if (hspi->RxXferCount == 1U) in SPI_2linesRxISR_8BIT()
3527 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3533 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3534 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3535 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3539 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3542 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3544 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3545 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3551 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3553 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3555 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3567 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3573 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3579 hspi->CRCSize--; in SPI_2linesRxISR_8BITCRC()
3582 if (hspi->CRCSize == 0U) in SPI_2linesRxISR_8BITCRC()
3585 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3587 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3589 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3601 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3604 if (hspi->TxXferCount >= 2U) in SPI_2linesTxISR_8BIT()
3606 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3607 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_8BIT()
3608 hspi->TxXferCount -= 2U; in SPI_2linesTxISR_8BIT()
3613 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3614 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3615 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3619 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3622 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3625 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3627 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3633 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3635 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3637 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3648 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3651 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3652 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3653 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3655 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3658 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3660 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3666 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3668 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3670 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3682 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3687 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3692 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3694 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3704 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3707 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3708 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3709 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3712 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3715 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3718 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3720 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3726 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3728 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3730 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3742 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3748 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3754 hspi->CRCSize--; in SPI_RxISR_8BITCRC()
3756 if (hspi->CRCSize == 0U) in SPI_RxISR_8BITCRC()
3758 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3769 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3771 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3772 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3773 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3777 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3779 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3783 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3786 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3788 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3792 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3803 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3808 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3813 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3815 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3825 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3827 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3828 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3829 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3833 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3835 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3839 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3842 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3844 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3848 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3858 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3860 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3861 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3862 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3864 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3867 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3870 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3873 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3883 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3886 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3887 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3888 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3890 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3893 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3896 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3899 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3913 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3927 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3938 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3940 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3941 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3944 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3948 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3950 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3953 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3956 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
3982 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint… in SPI_WaitFifoStateUntilTimeout() argument
3996 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_WaitFifoStateUntilTimeout()
4001 while ((hspi->Instance->SR & Fifo) != State) in SPI_WaitFifoStateUntilTimeout()
4020 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFifoStateUntilTimeout()
4022 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFifoStateUntilTimeout()
4023 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFifoStateUntilTimeout()
4026 __HAL_SPI_DISABLE(hspi); in SPI_WaitFifoStateUntilTimeout()
4030 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFifoStateUntilTimeout()
4032 SPI_RESET_CRC(hspi); in SPI_WaitFifoStateUntilTimeout()
4035 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFifoStateUntilTimeout()
4038 __HAL_UNLOCK(hspi); in SPI_WaitFifoStateUntilTimeout()
4062 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
4064 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4065 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4068 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
4072 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
4074 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4078 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4079 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4082 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTransaction()
4084 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4098 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
4101 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4103 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4108 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
4110 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4115 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4117 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4130 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
4138 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
4141 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
4143 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
4148 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
4150 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4151 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
4152 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
4155 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4157 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4163 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
4165 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
4167 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4170 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4172 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4177 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4180 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4182 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4188 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4191 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4193 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4207 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
4210 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
4213 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
4215 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
4217 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
4221 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
4223 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
4224 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
4227 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4229 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4235 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
4239 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4241 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4248 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4250 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4264 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
4272 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
4275 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
4277 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
4281 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
4283 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
4286 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
4287 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
4291 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
4293 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
4300 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4302 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4313 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
4318 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
4323 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4330 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
4334 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4337 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortRx_ISR()
4339 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4343 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortRx_ISR()
4345 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4348 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
4357 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
4364 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4371 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4375 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4377 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_AbortTx_ISR()
4379 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4383 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
4386 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4388 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4392 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in SPI_AbortTx_ISR()
4395 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4402 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4406 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4409 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortTx_ISR()
4411 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4415 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4417 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4420 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()