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()
327 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
328 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
330 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
331 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
333 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
335 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
340 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
345 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
348 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
349 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
352 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
353 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
355 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
358 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
361 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
364 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
368hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
369hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
370hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
371hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
372hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
373hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
374hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
375hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
377 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
379 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
383 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
386 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
390 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
393 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
398 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
399 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
400 (hspi->Init.DataSize & SPI_CR1_DFF) | in HAL_SPI_Init()
401 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
402 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
403 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
404 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
405 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
406 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
409 …WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SP… in HAL_SPI_Init()
414 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
416 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
422 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
425 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
426 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
437 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
440 if (hspi == NULL) in HAL_SPI_DeInit()
446 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
448 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
451 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
454 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
456 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
460 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
463 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
466 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
467 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
470 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
481 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
484 UNUSED(hspi); in HAL_SPI_MspInit()
497 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
500 UNUSED(hspi); in HAL_SPI_MspDeInit()
517 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
525 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
530 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
532 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
537 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
541 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
545 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
549 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
553 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
557 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
561 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
565 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
569 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
573 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
578 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
585 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
590 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
594 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
599 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
609 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
616 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
628 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
633 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
635 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
640hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
644hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
648hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
652hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
656hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
660hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
664hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
668hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
672hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
676hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
681 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
688 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
693hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
697hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
702 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
712 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
719 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
769 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, ui… in HAL_SPI_Transmit() argument
775 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
781 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
792 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
795 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
796 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
797 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit()
798 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
799 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
802 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
803 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
804 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
805 hspi->TxISR = NULL; in HAL_SPI_Transmit()
806 hspi->RxISR = NULL; in HAL_SPI_Transmit()
809 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
812 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
813 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
818 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
820 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
825 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
828 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
832 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Transmit()
834 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
836 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
837 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
838 hspi->TxXferCount--; in HAL_SPI_Transmit()
841 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
844 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
846 hspi->Instance->DR = *((const 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()
855 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
856 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
865 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
867 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
868 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
869 hspi->TxXferCount--; in HAL_SPI_Transmit()
871 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
874 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
876 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
877 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
878 hspi->TxXferCount--; in HAL_SPI_Transmit()
885 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
886 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
894 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
896 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
901 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
903 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
907 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
909 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
912 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
914 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
916 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
935 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
942 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
947 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
949 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
951 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
963 __HAL_LOCK(hspi); in HAL_SPI_Receive()
966 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
967 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
968 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
969 hspi->RxXferSize = Size; in HAL_SPI_Receive()
970 hspi->RxXferCount = Size; in HAL_SPI_Receive()
973 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
974 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
975 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
976 hspi->RxISR = NULL; in HAL_SPI_Receive()
977 hspi->TxISR = NULL; in HAL_SPI_Receive()
981 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
983 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
985 hspi->RxXferCount--; in HAL_SPI_Receive()
990 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
993 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
994 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
998 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1001 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1005 if (hspi->Init.DataSize == SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1008 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1011 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1014 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1015 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1016 hspi->RxXferCount--; in HAL_SPI_Receive()
1023 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1024 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1033 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1036 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1038 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1039 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1040 hspi->RxXferCount--; in HAL_SPI_Receive()
1047 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1048 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1057 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1060 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1063 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1066 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1071 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1073 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1078 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1082 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1084 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1085 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1086 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1091 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1098 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1100 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1105 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1107 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1108 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1112 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1114 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1115 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1135 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t … in HAL_SPI_TransmitReceive() argument
1150 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1156 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1157 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1161 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1172 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1175 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1177 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1181 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1182 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1183 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1184 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1185 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1186 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1187 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1190 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1191 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1195 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1197 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1202 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1205 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1209 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1211 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1213 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1214 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1215 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1219 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1221 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1226 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1229 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1231 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1232 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1233 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1239 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1241 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1247 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1249 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1250 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1251 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1257 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1258 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1266 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1268 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1269 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1270 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1274 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1276 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); 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 = *((const uint8_t *)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()
1311 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1312 __HAL_UNLOCK(hspi); 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()
1327 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1328 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1332 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1338 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1340 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1342 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1343 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1349 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1351 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1352 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1357 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_TransmitReceive()
1359 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_TransmitReceive()
1363 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1365 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1367 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1385 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1389 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1397 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1403 __HAL_LOCK(hspi); 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 = (const 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 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1448 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1452 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1454 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1467 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1470 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1475 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1477 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1479 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1489 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1492 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1493 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1494 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1495 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1496 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1499 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1500 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1501 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1502 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1505 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1507 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1511 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1515 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1518 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1519 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1524 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1526 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1535 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1538 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1542 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1544 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1558 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8… in HAL_SPI_TransmitReceive_IT() argument
1565 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1568 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1569 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1572 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1583 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1586 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1588 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1592 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1593 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1594 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1595 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1596 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1597 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1598 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1601 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1603 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1604 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1608 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1609 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1614 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1616 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1622 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1625 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1629 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1631 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1644 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1648 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1651 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1653 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1664 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1667 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1668 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1669 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1670 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1671 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1674 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1675 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1676 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1677 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1678 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1681 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1684 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1685 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1690 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1692 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1697 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1700 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1703 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1706 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1709 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1710 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1713 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1715 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1720 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1723 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1727 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1730 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1733 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
1748 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
1751 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
1753 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
1758 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
1760 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1763 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
1766 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
1775 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
1778 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1779 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
1780 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
1781 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
1782 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
1785 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
1786 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
1787 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
1788 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
1791 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
1794 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
1795 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
1800 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
1802 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
1807 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
1810 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
1813 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
1816 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
1819 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
1820 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
1823 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
1825 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
1830 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
1833 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
1837 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
1840 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
1843 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
1858 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint… in HAL_SPI_TransmitReceive_DMA() argument
1865 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
1866 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
1869 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
1872 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
1873 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
1876 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
1887 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1890 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1892 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
1896 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
1897 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
1898 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1899 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1900 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
1901 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1902 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1905 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1906 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1910 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
1912 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
1917 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1920 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1921 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1926 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1927 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1931 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
1934 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1937 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
1938 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
1941 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
1943 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1948 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
1952 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1953 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1954 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1955 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1958 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
1959 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
1962 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
1964 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1969 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
1972 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
1976 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1979 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
1982 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2000 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2012 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2015 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2017 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2023 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2027 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2032 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2034 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2040 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2044 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2050 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2053 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2057 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2060 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2062 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2066 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2073 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2077 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in HAL_SPI_Abort()
2082 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2085 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2089 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2092 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2094 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2098 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2101 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2105 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2106 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2109 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2117 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2121 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2122 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2125 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2145 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2159 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2162 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2164 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2170 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2174 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2179 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2181 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2187 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2191 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2199 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2203 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2205 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2209 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2213 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2217 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2219 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2223 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2228 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2231 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2234 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2236 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2237 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2246 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2249 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2252 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2254 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2255 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2267 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2268 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2271 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2279 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2283 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2284 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2287 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2291 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2293 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2306 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2309 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2312 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2315 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2326 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2329 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2332 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2335 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2346 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2356 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2358 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2360 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2365 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2367 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2369 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2375 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2376 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2386 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2388 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2389 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2395 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2402 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2413 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2415 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2416 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2420 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2428 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2429 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2435 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2436 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2439 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2442 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2444 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2448 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2451 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2455 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2456 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2458 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2462 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2466 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2467 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2469 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2477 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2479 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2493 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2496 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2509 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2512 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2525 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2528 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2541 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2544 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2557 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2560 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2573 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2576 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2589 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2592 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2607 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2610 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2642 HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2645 return hspi->State; in HAL_SPI_GetState()
2654 uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
2657 return hspi->ErrorCode; in HAL_SPI_GetError()
2681 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
2691 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
2694 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
2697 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
2699 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
2703 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
2705 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
2708 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
2709 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
2711 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
2715 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
2717 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
2724 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2726 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2738 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
2751 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
2755 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
2758 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
2761 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2764 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
2771 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
2774 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2779 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2783 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
2785 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
2788 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
2789 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
2793 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
2795 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2796 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
2800 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
2804 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2806 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2813 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2815 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2827 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
2840 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
2844 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
2847 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMATransmitReceiveCplt()
2849 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2852 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
2859 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
2861 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
2865 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
2867 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2868 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2869 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
2873 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
2875 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2876 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
2880 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
2884 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2886 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2893 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2895 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2907 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
2911 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2913 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2925 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
2929 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2931 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2943 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
2947 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
2949 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
2961 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
2964 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
2966 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
2967 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
2970 hspi->ErrorCallback(hspi); in SPI_DMAError()
2972 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
2984 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
2985 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
2986 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
2990 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
2992 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3006 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3009 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3013 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3020 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMATxAbortCallback()
3024 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_DMATxAbortCallback()
3027 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3029 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3036 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3037 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3040 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3043 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3047 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3048 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3051 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3055 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3057 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3071 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3074 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3076 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3079 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3082 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMARxAbortCallback()
3084 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMARxAbortCallback()
3088 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3090 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3097 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3098 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3101 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3104 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3108 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3109 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3112 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3116 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3118 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3128 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3131 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3132 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3133 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3136 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3139 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3141 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3147 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3149 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3151 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3163 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3169 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3176 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3178 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3180 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3191 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3193 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3194 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3195 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3198 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3201 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3204 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3206 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3212 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3214 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3216 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3227 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3230 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3231 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3232 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3234 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3237 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3239 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3245 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3247 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3249 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3261 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3266 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3271 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3273 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3283 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3286 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3287 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3288 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3291 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3294 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3297 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3299 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3305 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3307 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3309 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3321 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3327 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3333 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3343 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3345 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3346 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3347 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3351 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3353 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3357 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3360 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3362 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3366 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3377 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3382 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3387 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3389 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3399 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3401 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3402 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3403 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3407 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3409 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3413 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3416 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3418 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3422 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3432 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3434 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3435 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3436 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3438 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3441 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3444 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3447 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3457 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3460 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3461 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3462 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3464 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3467 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3470 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3473 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3487 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3501 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3512 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3514 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3515 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3518 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3522 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3524 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3527 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3530 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
3554 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
3556 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
3557 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
3560 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
3564 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTransaction()
3566 if (hspi->Init.Direction != SPI_DIRECTION_2LINES_RXONLY) in SPI_EndRxTransaction()
3569 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3571 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3578 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3580 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3588 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3590 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3604 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
3607 if(SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
3609 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
3616 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTxTransaction()
3619 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
3621 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
3639 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); in SPI_EndRxTxTransaction()
3651 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
3660 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
3667 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3671 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseRxTx_ISR()
3674 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
3676 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3680 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRxTx_ISR()
3682 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRxTx_ISR()
3687 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
3689 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3690 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
3691 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
3694 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3696 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3702 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
3704 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
3706 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3709 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3711 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3716 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3719 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3721 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3727 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3730 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3732 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3746 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
3749 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
3752 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
3754 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
3758 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRx_ISR()
3760 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRx_ISR()
3762 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
3766 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
3768 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
3769 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
3772 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3774 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3780 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
3784 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3786 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3793 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3795 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3809 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
3822 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3826 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseTx_ISR()
3829 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
3832 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
3834 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3838 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
3840 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
3843 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
3844 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
3848 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
3850 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
3857 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3859 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3870 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
3880 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
3884 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_AbortRx_ISR()
3887 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
3890 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE)); in SPI_AbortRx_ISR()
3893 tmpreg = READ_REG(hspi->Instance->DR); in SPI_AbortRx_ISR()
3897 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
3906 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
3909 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
3912 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
3914 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()