Lines Matching refs:hspi
238 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
240 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint…
242 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
243 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
244 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
245 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
246 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
247 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
248 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
249 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
251 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
254 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
256 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
257 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
258 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
259 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
260 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
261 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
262 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
314 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
319 if (hspi == NULL) in HAL_SPI_Init()
325 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
326 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
327 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
328 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
329 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
330 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
331 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
332 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
333 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
334 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
336 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
337 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
339 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
341 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
346 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
351 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
354 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
355 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
358 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
359 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
361 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
362 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
365 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
368 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
371 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
375 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
376 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
377 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
378 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
379 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
380 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
381 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
382 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
384 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
386 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
390 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
393 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
397 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
400 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
403 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
413 if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT)) in HAL_SPI_Init()
416 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
422 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
423 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
424 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
425 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
426 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
427 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
428 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
429 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
432 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
435 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
438 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
440 hspi->Init.CRCLength = SPI_CRC_LENGTH_16BIT; in HAL_SPI_Init()
444 hspi->Init.CRCLength = SPI_CRC_LENGTH_8BIT; in HAL_SPI_Init()
449 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_Init()
451 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCL); in HAL_SPI_Init()
457 WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | in HAL_SPI_Init()
458 (hspi->Init.TIMode & SPI_CR2_FRF) | in HAL_SPI_Init()
459 (hspi->Init.NSSPMode & SPI_CR2_NSSP) | in HAL_SPI_Init()
460 (hspi->Init.DataSize & SPI_CR2_DS_Msk) | in HAL_SPI_Init()
466 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
468 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
474 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
477 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
478 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
489 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
492 if (hspi == NULL) in HAL_SPI_DeInit()
498 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
500 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
503 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
506 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
508 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
512 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
515 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
518 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
519 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
522 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
533 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
536 UNUSED(hspi); in HAL_SPI_MspInit()
549 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
552 UNUSED(hspi); in HAL_SPI_MspDeInit()
569 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
577 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
582 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
584 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
589 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
593 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
597 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
601 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
605 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
609 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
613 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
617 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
621 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
625 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
630 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
637 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
642 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
646 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
651 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
661 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
668 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
680 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
685 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
687 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
692 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
696 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
700 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
704 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
708 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
712 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
716 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
720 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
724 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
728 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
733 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
740 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
745 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
749 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
754 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
764 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
771 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
821 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t… in HAL_SPI_Transmit() argument
828 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
831 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
837 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
850 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
851 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
852 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit()
853 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
854 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
857 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
858 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
859 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
860 hspi->TxISR = NULL; in HAL_SPI_Transmit()
861 hspi->RxISR = NULL; in HAL_SPI_Transmit()
864 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
867 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
868 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
873 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
875 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
880 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
883 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
887 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
889 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
891 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
892 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
893 hspi->TxXferCount--; in HAL_SPI_Transmit()
896 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
899 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
901 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
902 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
903 hspi->TxXferCount--; in HAL_SPI_Transmit()
911 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
920 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
922 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
923 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
924 hspi->TxXferCount--; in HAL_SPI_Transmit()
926 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
929 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
931 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
932 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
933 hspi->TxXferCount--; in HAL_SPI_Transmit()
941 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
949 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
951 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
956 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
958 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
962 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
964 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
967 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
973 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
978 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
991 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1001 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1007 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
1009 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1011 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
1015 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1027 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1028 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1029 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1030 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1031 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1034 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
1035 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
1036 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
1037 hspi->RxISR = NULL; in HAL_SPI_Receive()
1038 hspi->TxISR = NULL; in HAL_SPI_Receive()
1042 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1044 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
1046 hspi->RxXferCount--; in HAL_SPI_Receive()
1051 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1054 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1059 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1063 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1066 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1067 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1071 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1074 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1078 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1081 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1084 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1087 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1088 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1089 hspi->RxXferCount--; in HAL_SPI_Receive()
1097 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1106 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1109 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1111 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1112 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1113 hspi->RxXferCount--; in HAL_SPI_Receive()
1121 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1130 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1133 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1136 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1144 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1146 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1151 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1155 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1157 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1163 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1166 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1173 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1179 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive()
1181 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1184 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1198 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1200 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1205 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1207 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1208 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1212 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1218 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1222 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1236 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxDa… in HAL_SPI_TransmitReceive() argument
1256 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1259 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1265 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1266 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1269 spi_cr1 = READ_REG(hspi->Instance->CR1); in HAL_SPI_TransmitReceive()
1270 spi_cr2 = READ_REG(hspi->Instance->CR2); in HAL_SPI_TransmitReceive()
1274 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1287 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1289 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1293 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1294 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1295 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1296 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1297 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1298 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1299 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1302 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1303 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1307 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1309 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1314 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1317 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1322 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1326 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1329 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1333 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1335 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1337 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1338 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1339 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1343 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1348 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1350 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1355 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1358 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) 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()
1368 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1373 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1375 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1381 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1383 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1384 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1385 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1392 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1400 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1402 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1403 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1404 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1408 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1413 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1415 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1419 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1422 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1424 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1425 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1426 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1432 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1437 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1439 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1445 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1447 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1448 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1449 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1456 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1464 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1467 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1470 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1475 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1478 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1485 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1491 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_TransmitReceive()
1493 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1496 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1509 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1511 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1513 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1520 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1523 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1526 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1532 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1536 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1548 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1553 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1562 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1569 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1572 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1573 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1574 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_IT()
1575 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1576 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1579 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1580 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1581 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1582 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1585 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1587 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1591 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1595 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1598 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1599 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1604 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1606 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1611 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1614 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1618 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1620 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1634 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1639 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1645 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1647 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1649 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1660 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1663 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1664 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1665 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1666 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1667 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1670 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1671 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1672 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1673 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1676 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1679 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1680 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1685 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1686 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1690 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1693 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1694 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1699 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1701 hspi->CRCSize = 1U; in HAL_SPI_Receive_IT()
1702 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive_IT()
1704 hspi->CRCSize = 2U; in HAL_SPI_Receive_IT()
1706 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1710 hspi->CRCSize = 0U; in HAL_SPI_Receive_IT()
1719 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1722 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1726 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1728 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1743 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pR… in HAL_SPI_TransmitReceive_IT() argument
1750 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1753 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1754 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1757 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1770 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1773 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1775 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1779 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1780 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1781 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1782 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1783 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1784 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1785 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1788 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1790 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1791 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1795 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1796 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1801 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1803 hspi->CRCSize = 1U; in HAL_SPI_TransmitReceive_IT()
1804 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_TransmitReceive_IT()
1806 hspi->CRCSize = 2U; in HAL_SPI_TransmitReceive_IT()
1808 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1812 hspi->CRCSize = 0U; in HAL_SPI_TransmitReceive_IT()
1817 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (Size >= 2U)) in HAL_SPI_TransmitReceive_IT()
1820 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1825 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1830 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1833 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1837 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1839 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1853 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1858 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1861 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1864 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1866 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1879 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1880 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1881 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1882 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1883 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1886 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1887 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1888 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1889 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1890 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1893 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1896 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1897 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1902 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1904 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1909 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1912 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1915 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1918 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1920 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1922 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_Transmit_DMA()
1925 if ((hspi->TxXferCount & 0x1U) == 0U) in HAL_SPI_Transmit_DMA()
1927 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1928 hspi->TxXferCount = (hspi->TxXferCount >> 1U); in HAL_SPI_Transmit_DMA()
1932 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1933 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_Transmit_DMA()
1938 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1939 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1942 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1949 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1952 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1956 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1959 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
1963 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1977 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
1982 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
1984 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
1990 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
1992 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1995 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
1998 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
2002 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2011 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2012 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2013 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2014 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2015 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2018 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2019 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2020 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
2021 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
2024 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2027 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
2028 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2033 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
2035 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
2041 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmarx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_Receive_DMA()
2049 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2050 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2053 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2058 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2060 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Receive_DMA()
2063 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2065 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_Receive_DMA()
2067 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2068 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_Receive_DMA()
2072 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2073 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_Receive_DMA()
2079 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2082 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2085 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2088 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2091 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
2092 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
2095 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2102 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
2105 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2109 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
2112 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
2116 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2130 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *p… in HAL_SPI_TransmitReceive_DMA() argument
2138 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
2139 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
2142 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2145 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2148 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
2149 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
2152 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
2165 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2167 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2171 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2172 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2173 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2174 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2175 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2176 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2177 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2180 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2181 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2185 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
2187 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
2193 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmarx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_TransmitReceive_DMA()
2202 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX | SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2205 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2208 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2213 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2215 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2217 if ((hspi->TxXferSize & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2219 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2220 hspi->TxXferCount = hspi->TxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2224 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2225 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2229 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2232 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2234 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2236 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2237 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2241 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2242 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2248 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2251 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2252 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2257 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2258 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2262 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2265 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2268 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
2269 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2272 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2279 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2283 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2284 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2285 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2286 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2289 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2290 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2293 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2300 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
2303 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2306 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
2309 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2313 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2330 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2342 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2345 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2347 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2353 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2357 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2362 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2364 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2370 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2374 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2380 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2383 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2387 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2390 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2392 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2396 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2398 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in HAL_SPI_Abort()
2400 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2404 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2407 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2409 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2415 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2418 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2422 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2425 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2427 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2431 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2434 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in HAL_SPI_Abort()
2436 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2440 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2442 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2446 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2450 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2451 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2454 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2462 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2466 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2467 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2470 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2490 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2504 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2507 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2509 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2515 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2519 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2524 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2526 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2532 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2536 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2544 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2548 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2550 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2554 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2558 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2562 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2564 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2568 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2573 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2576 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2579 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2581 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2582 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2591 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2594 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2597 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2599 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2600 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2612 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2613 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2616 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2624 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2628 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2629 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2632 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2636 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2638 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2651 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2654 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2657 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2660 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2671 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2674 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2677 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2680 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2691 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2701 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2703 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2705 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2710 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2712 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2714 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2720 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2721 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2731 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2733 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2734 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2740 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2747 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2758 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2760 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2761 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2765 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2773 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2774 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2780 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2781 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2784 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2787 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2789 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2793 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2796 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2800 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2801 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2803 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2807 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2811 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2812 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2814 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2822 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2824 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2838 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2841 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2854 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2857 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2870 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2873 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2886 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2889 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2902 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2905 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2918 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2921 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2934 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2937 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2952 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2955 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2987 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2990 return hspi->State; in HAL_SPI_GetState()
2999 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3002 return hspi->ErrorCode; in HAL_SPI_GetError()
3026 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
3036 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
3039 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
3042 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
3044 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
3048 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
3050 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
3053 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
3054 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
3056 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
3060 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
3062 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
3069 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3071 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3083 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
3098 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
3102 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
3105 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3108 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3111 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in SPI_DMAReceiveCplt()
3114 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
3121 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMAReceiveCplt()
3127 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in SPI_DMAReceiveCplt()
3129 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3132 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3144 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
3147 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3152 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3156 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
3158 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
3161 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
3162 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
3166 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
3168 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3169 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
3173 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
3177 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3179 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3186 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3188 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3200 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
3215 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
3219 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
3221 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_8BIT)) in SPI_DMATransmitReceiveCplt()
3223 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_QUARTER_FULL, SPI_DEFAULT_TIMEOU… in SPI_DMATransmitReceiveCplt()
3227 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3230 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMATransmitReceiveCplt()
3238 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_HALF_FULL, SPI_DEFAULT_TIMEOUT, … in SPI_DMATransmitReceiveCplt()
3241 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3244 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
3252 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
3254 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
3258 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
3260 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3261 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3262 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
3266 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
3268 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3269 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
3273 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
3277 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3279 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3286 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3288 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3300 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
3304 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3306 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3318 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
3322 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3324 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3336 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
3340 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3342 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3354 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
3357 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
3359 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3360 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3363 hspi->ErrorCallback(hspi); in SPI_DMAError()
3365 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3377 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3378 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3379 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3383 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3385 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3399 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3401 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3404 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3406 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMATxAbortCallback()
3408 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3412 __HAL_SPI_DISABLE(hspi); in SPI_DMATxAbortCallback()
3415 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMATxAbortCallback()
3417 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3421 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3423 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3430 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3431 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3434 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3437 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3441 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3442 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3445 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3449 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3451 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3465 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3468 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3470 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3473 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3476 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_DMARxAbortCallback()
3478 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3482 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMARxAbortCallback()
3484 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3488 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3490 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3497 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3498 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3501 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3504 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3508 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3509 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3512 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3516 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3518 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3528 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3531 if (hspi->RxXferCount > 1U) in SPI_2linesRxISR_8BIT()
3533 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3534 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_8BIT()
3535 hspi->RxXferCount -= 2U; in SPI_2linesRxISR_8BIT()
3536 if (hspi->RxXferCount == 1U) in SPI_2linesRxISR_8BIT()
3539 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3545 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3546 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3547 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3551 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3554 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3556 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3557 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3563 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3565 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3567 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3579 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3585 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3591 hspi->CRCSize--; in SPI_2linesRxISR_8BITCRC()
3594 if (hspi->CRCSize == 0U) in SPI_2linesRxISR_8BITCRC()
3597 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3599 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3601 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3613 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3616 if (hspi->TxXferCount >= 2U) in SPI_2linesTxISR_8BIT()
3618 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3619 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_8BIT()
3620 hspi->TxXferCount -= 2U; in SPI_2linesTxISR_8BIT()
3625 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3626 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3627 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3631 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3634 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3637 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3639 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3645 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3647 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3649 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3660 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3663 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3664 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3665 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3667 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3670 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3672 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3678 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3680 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3682 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3694 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3699 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3704 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3706 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3716 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3719 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3720 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3721 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3724 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3727 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3730 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3732 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3738 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3740 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3742 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3754 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3760 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3766 hspi->CRCSize--; in SPI_RxISR_8BITCRC()
3768 if (hspi->CRCSize == 0U) in SPI_RxISR_8BITCRC()
3770 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3781 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3783 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3784 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3785 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3789 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3791 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3795 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3798 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3800 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3804 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3815 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3820 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3825 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3827 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3837 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3839 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3840 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3841 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3845 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3847 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3851 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3854 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3856 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3860 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3870 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3872 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3873 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3874 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3876 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3879 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3882 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3885 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3895 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3898 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3899 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3900 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3902 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3905 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3908 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3911 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3925 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3939 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3950 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3952 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3953 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3956 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3960 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3962 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3965 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3968 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
3994 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint… in SPI_WaitFifoStateUntilTimeout() argument
4008 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_WaitFifoStateUntilTimeout()
4013 while ((hspi->Instance->SR & Fifo) != State) in SPI_WaitFifoStateUntilTimeout()
4032 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFifoStateUntilTimeout()
4034 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFifoStateUntilTimeout()
4035 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFifoStateUntilTimeout()
4038 __HAL_SPI_DISABLE(hspi); in SPI_WaitFifoStateUntilTimeout()
4042 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFifoStateUntilTimeout()
4044 SPI_RESET_CRC(hspi); in SPI_WaitFifoStateUntilTimeout()
4047 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFifoStateUntilTimeout()
4050 __HAL_UNLOCK(hspi); in SPI_WaitFifoStateUntilTimeout()
4074 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
4076 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4077 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4080 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
4084 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
4086 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4090 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4091 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4094 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTransaction()
4096 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4110 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
4113 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4115 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4120 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
4122 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4127 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4129 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4142 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
4150 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
4153 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
4155 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
4160 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
4162 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4163 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
4164 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
4167 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4169 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4175 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
4177 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
4179 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4182 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4184 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4189 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4192 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4194 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4200 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4203 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4205 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4219 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
4222 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
4225 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
4227 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
4229 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
4233 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
4235 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
4236 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
4239 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4241 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4247 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
4251 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4253 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4260 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4262 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4276 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
4284 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
4287 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
4289 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
4293 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
4295 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
4298 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
4299 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
4303 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
4305 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
4312 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4314 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4325 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
4330 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
4335 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4342 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
4346 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4349 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortRx_ISR()
4351 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4355 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortRx_ISR()
4357 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4360 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
4369 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
4376 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4383 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4387 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4389 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_AbortTx_ISR()
4391 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4395 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
4398 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4400 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4404 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in SPI_AbortTx_ISR()
4407 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4414 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4418 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4421 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortTx_ISR()
4423 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4427 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4429 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4432 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()