Lines Matching refs:hspi
239 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
241 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
242 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
243 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
244 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
245 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
246 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
247 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
248 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
250 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
251 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
255 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
256 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
257 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
258 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
259 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
260 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
261 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
311 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
314 if (hspi == NULL) in HAL_SPI_Init()
320 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
321 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
322 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
323 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
324 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
325 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
326 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
329 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
330 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
332 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
333 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
335 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
337 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
342 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
347 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
350 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
351 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
354 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
355 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
357 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
360 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
363 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
366 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
370 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
371 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
372 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
373 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
374 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
375 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
376 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
377 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
379 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
381 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
385 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
388 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
392 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
395 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
400 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
401 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
402 (hspi->Init.DataSize & SPI_CR1_DFF) | in HAL_SPI_Init()
403 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
404 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
405 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
406 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
407 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
408 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
412 …WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SP… in HAL_SPI_Init()
415 WRITE_REG(hspi->Instance->CR2, ((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE)); in HAL_SPI_Init()
421 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
423 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
429 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
432 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
433 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
444 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
447 if (hspi == NULL) in HAL_SPI_DeInit()
453 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
455 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
458 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
461 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
463 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
467 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
470 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
473 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
474 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
477 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
488 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
491 UNUSED(hspi); in HAL_SPI_MspInit()
504 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
507 UNUSED(hspi); in HAL_SPI_MspDeInit()
524 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
532 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
537 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
539 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
544 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
548 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
552 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
556 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
560 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
564 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
568 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
572 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
576 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
580 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
585 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
592 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
597 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
601 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
606 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
616 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
623 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
635 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
640 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
642 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
647 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
651 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
655 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
659 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
663 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
667 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
671 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
675 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
679 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
683 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
688 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
695 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
700 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
704 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
709 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
719 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
726 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
776 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t… in HAL_SPI_Transmit() argument
783 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
786 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
792 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
805 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
806 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
807 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit()
808 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
809 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
812 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
813 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
814 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
815 hspi->TxISR = NULL; in HAL_SPI_Transmit()
816 hspi->RxISR = NULL; in HAL_SPI_Transmit()
819 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
822 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
823 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
828 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
830 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
835 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
838 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
842 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Transmit()
844 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
846 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
847 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
848 hspi->TxXferCount--; in HAL_SPI_Transmit()
851 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
854 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
856 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
857 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
858 hspi->TxXferCount--; in HAL_SPI_Transmit()
866 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
875 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
877 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
878 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
879 hspi->TxXferCount--; in HAL_SPI_Transmit()
881 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
884 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
886 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
887 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
888 hspi->TxXferCount--; in HAL_SPI_Transmit()
896 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
904 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
906 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
911 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
913 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
917 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
919 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
922 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
928 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
933 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
946 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
954 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
960 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
962 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
964 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
968 __HAL_LOCK(hspi); in HAL_SPI_Receive()
980 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
981 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
982 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
983 hspi->RxXferSize = Size; in HAL_SPI_Receive()
984 hspi->RxXferCount = Size; in HAL_SPI_Receive()
987 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
988 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
989 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
990 hspi->RxISR = NULL; in HAL_SPI_Receive()
991 hspi->TxISR = NULL; in HAL_SPI_Receive()
995 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
997 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
999 hspi->RxXferCount--; in HAL_SPI_Receive()
1004 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1007 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1008 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1012 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1015 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1019 if (hspi->Init.DataSize == SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1022 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1025 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1028 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1029 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1030 hspi->RxXferCount--; in HAL_SPI_Receive()
1038 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1047 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1050 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1052 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1053 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1054 hspi->RxXferCount--; in HAL_SPI_Receive()
1062 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1071 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1074 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1077 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1085 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1087 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1092 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1096 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1098 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1104 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1111 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1113 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1118 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1120 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1121 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1125 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1131 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1135 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1149 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxDa… in HAL_SPI_TransmitReceive() argument
1165 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1168 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1174 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1175 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1179 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1192 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1194 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1198 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1199 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1200 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1201 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1202 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1203 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1204 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1207 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1208 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1212 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1214 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1219 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1222 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1226 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1228 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1230 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1231 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1232 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1234 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1237 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1239 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1240 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1241 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1247 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1249 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1255 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1257 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1258 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1259 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1266 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1274 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1276 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1277 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1278 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1280 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1283 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1285 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1286 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1287 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1293 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1295 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1301 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1303 (*(uint8_t *)hspi->pRxBuffPtr) = hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1304 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1305 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1312 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1320 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1323 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1326 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1331 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1337 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1339 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1341 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1348 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1351 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1356 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_TransmitReceive()
1358 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_TransmitReceive()
1361 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1367 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1371 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1383 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1388 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1391 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1399 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1406 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1407 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1408 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_IT()
1409 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1410 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1413 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1414 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1415 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1416 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1419 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1421 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1425 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1429 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1432 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1433 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1438 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1440 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1445 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1449 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1452 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1456 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1468 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1473 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1479 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1481 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1483 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1487 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1496 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1497 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1498 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1499 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1500 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1503 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1504 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1505 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1506 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1509 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1511 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1515 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1519 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1522 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1523 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1528 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1530 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1535 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1542 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1545 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1550 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1563 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pR… in HAL_SPI_TransmitReceive_IT() argument
1570 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1573 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1576 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1577 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1580 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1593 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1595 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1599 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1600 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1601 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1602 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1603 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1604 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1605 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1608 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1610 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1611 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1615 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1616 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1621 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1623 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1628 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1631 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1634 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1639 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1651 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1656 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1659 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1662 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1664 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1677 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1678 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1679 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1680 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1681 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1684 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1685 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1686 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1687 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1688 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1691 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1694 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1695 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1700 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1702 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1707 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1710 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1713 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1716 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1719 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1720 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1723 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1730 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1733 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1737 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1740 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
1744 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1758 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
1763 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
1765 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
1771 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
1773 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1776 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
1779 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
1783 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
1792 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1793 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
1794 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
1795 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
1796 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
1799 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
1800 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
1801 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
1802 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
1805 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
1808 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
1809 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
1814 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
1816 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
1821 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
1824 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
1827 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
1830 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
1833 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
1834 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
1837 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
1844 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
1847 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
1851 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
1854 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
1858 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
1872 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *p… in HAL_SPI_TransmitReceive_DMA() argument
1880 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
1881 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
1884 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
1887 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1890 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
1891 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
1894 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
1907 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1909 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
1913 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
1914 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
1915 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1916 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1917 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
1918 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1919 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1922 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1923 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1927 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
1929 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
1934 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1937 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1938 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1943 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1944 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1948 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
1951 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1954 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
1955 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
1958 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
1965 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
1969 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1970 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1971 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1972 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1975 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
1976 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
1979 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
1986 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
1989 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
1992 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
1995 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
1999 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2016 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2028 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2031 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2033 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2039 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2043 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2048 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2050 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2056 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2060 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2066 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2069 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2073 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2076 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2078 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2082 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2089 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2093 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in HAL_SPI_Abort()
2098 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2101 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2105 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2108 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2110 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2114 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2117 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2121 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2122 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2125 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2133 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2137 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2139 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2143 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2163 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2177 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2180 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2182 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2188 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2192 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2197 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2199 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2205 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2209 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2217 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2221 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2223 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2227 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2231 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2235 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2237 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2241 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2246 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2249 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2252 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2254 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2255 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2264 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2267 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2270 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2272 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2273 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2285 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2286 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2289 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2297 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2301 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2303 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2307 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2311 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2313 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2326 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2329 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2332 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2335 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2346 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2349 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2352 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2355 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2366 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2376 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2378 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2380 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2385 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2387 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2389 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2395 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2396 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2406 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2408 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2409 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2415 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2422 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2438 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2440 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2441 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2445 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2453 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2454 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2461 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2462 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2466 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2469 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2471 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2475 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2478 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2482 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2483 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2485 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2489 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2493 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2494 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2496 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2504 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2506 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2520 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2523 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2536 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2539 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2552 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2555 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2568 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2571 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2584 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2587 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2600 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2603 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2616 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2619 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2634 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2637 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2669 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2672 return hspi->State; in HAL_SPI_GetState()
2681 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
2684 return hspi->ErrorCode; in HAL_SPI_GetError()
2708 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
2718 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
2721 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
2724 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
2726 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
2730 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
2732 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
2735 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
2736 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
2738 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
2742 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
2744 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
2751 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2753 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2765 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
2778 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
2782 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
2785 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
2788 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2791 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
2798 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
2801 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2806 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2810 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
2812 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
2815 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
2816 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
2820 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
2822 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2823 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
2827 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
2831 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2833 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2840 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2842 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2854 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
2867 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
2871 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
2874 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMATransmitReceiveCplt()
2876 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2879 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
2886 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
2888 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
2892 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
2894 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2895 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2896 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
2900 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
2902 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2903 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
2907 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
2911 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2913 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2920 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2922 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2934 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
2938 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2940 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2952 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
2956 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2958 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2970 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
2974 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
2976 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
2988 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
2991 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
2993 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
2994 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
2997 hspi->ErrorCallback(hspi); in SPI_DMAError()
2999 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3011 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3012 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3013 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3017 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3019 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3033 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3036 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3040 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3047 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMATxAbortCallback()
3051 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_DMATxAbortCallback()
3054 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3056 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3063 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3064 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3067 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3070 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3074 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3076 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3080 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3084 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3086 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3100 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3103 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3105 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3108 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3111 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMARxAbortCallback()
3113 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMARxAbortCallback()
3117 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3119 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3126 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3127 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3130 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3133 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3137 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3139 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3143 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3147 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3149 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3159 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3162 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3163 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3164 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3167 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3170 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3172 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3178 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3180 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3182 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3194 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3200 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3207 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3209 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3211 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3222 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3224 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3225 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3226 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3229 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3232 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3235 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3237 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3243 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3245 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3247 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3258 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3261 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3262 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3263 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3265 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3268 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3270 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3276 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3278 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3280 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3292 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3297 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3302 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3304 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3314 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3317 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3318 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3319 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3322 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3325 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3328 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3330 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3336 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3338 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3340 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3352 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3358 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3364 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3374 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3376 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3377 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3378 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3382 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3384 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3388 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3391 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3393 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3397 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3408 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3413 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3418 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3420 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3430 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3432 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3433 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3434 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3438 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3440 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3444 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3447 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3449 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3453 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3463 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3465 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3466 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3467 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3469 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3472 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3475 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3478 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3488 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3491 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3492 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3493 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3495 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3498 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3501 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3504 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3518 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3532 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3543 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3545 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3546 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3549 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3553 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3555 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3558 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3561 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
3585 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
3587 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
3588 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
3591 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
3595 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTransaction()
3597 if (hspi->Init.Direction != SPI_DIRECTION_2LINES_RXONLY) in SPI_EndRxTransaction()
3600 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3602 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3609 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3611 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3619 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3621 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3635 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
3640 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTxTransaction()
3643 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
3645 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
3663 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); in SPI_EndRxTxTransaction()
3675 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
3684 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
3691 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3695 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseRxTx_ISR()
3698 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
3700 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3704 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRxTx_ISR()
3706 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRxTx_ISR()
3711 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
3713 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3714 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
3715 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
3718 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3720 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3726 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
3728 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
3730 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3733 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3735 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3740 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3743 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3745 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3751 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3754 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3756 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3770 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
3773 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
3776 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
3778 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
3782 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRx_ISR()
3784 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRx_ISR()
3786 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
3790 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
3792 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
3793 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
3796 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3798 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3804 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
3808 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3810 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3817 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3819 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3833 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
3846 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3850 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseTx_ISR()
3853 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
3856 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
3858 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3862 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
3864 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
3867 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
3868 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
3872 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
3874 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
3881 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3883 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3894 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
3904 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
3908 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_AbortRx_ISR()
3911 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
3914 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE)); in SPI_AbortRx_ISR()
3917 tmpreg = READ_REG(hspi->Instance->DR); in SPI_AbortRx_ISR()
3921 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
3930 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
3933 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
3936 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
3938 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()