Lines Matching refs:hspi
240 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
242 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
243 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
244 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
245 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
246 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
247 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
248 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
249 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
251 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
254 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
256 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
257 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
258 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
259 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
260 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
261 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
262 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
312 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
315 if (hspi == NULL) in HAL_SPI_Init()
321 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
322 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
323 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
324 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
325 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
326 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
327 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
328 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
329 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
331 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
332 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
334 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
336 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
341 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
346 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
349 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
350 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
353 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
354 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
356 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
359 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
362 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
365 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
369 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
370 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
371 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
372 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
373 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
374 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
375 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
376 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
378 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
380 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
384 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
387 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
391 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
394 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
399 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
400 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
401 (hspi->Init.DataSize & SPI_CR1_DFF) | in HAL_SPI_Init()
402 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
403 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
404 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
405 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
406 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
407 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
410 …WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SP… in HAL_SPI_Init()
415 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
417 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
423 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
426 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
427 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
438 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
441 if (hspi == NULL) in HAL_SPI_DeInit()
447 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
449 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
452 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
455 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
457 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
461 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
464 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
467 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
468 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
471 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
482 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
485 UNUSED(hspi); in HAL_SPI_MspInit()
498 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
501 UNUSED(hspi); in HAL_SPI_MspDeInit()
518 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
526 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
531 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
533 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
538 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
542 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
546 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
550 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
554 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
558 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
562 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
566 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
570 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
574 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
579 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
586 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
591 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
595 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
600 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
610 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
617 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
629 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
634 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
636 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
641 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
645 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
649 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
653 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
657 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
661 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
665 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
669 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
673 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
677 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
682 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
689 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
694 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
698 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
703 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
713 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
720 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
770 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, ui… in HAL_SPI_Transmit() argument
776 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
782 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
793 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
796 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
797 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
798 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit()
799 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
800 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
803 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
804 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
805 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
806 hspi->TxISR = NULL; in HAL_SPI_Transmit()
807 hspi->RxISR = NULL; in HAL_SPI_Transmit()
810 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
813 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
814 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
819 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
821 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
826 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
829 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
833 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Transmit()
835 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
837 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
838 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
839 hspi->TxXferCount--; in HAL_SPI_Transmit()
842 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
845 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
847 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
848 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
849 hspi->TxXferCount--; in HAL_SPI_Transmit()
856 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
857 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
866 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
868 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
869 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
870 hspi->TxXferCount--; in HAL_SPI_Transmit()
872 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
875 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
877 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
878 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
879 hspi->TxXferCount--; in HAL_SPI_Transmit()
886 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
887 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
895 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
897 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
902 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
904 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
908 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
910 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
913 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
915 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
917 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
936 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
943 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
948 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
950 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
952 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
964 __HAL_LOCK(hspi); in HAL_SPI_Receive()
967 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
968 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
969 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
970 hspi->RxXferSize = Size; in HAL_SPI_Receive()
971 hspi->RxXferCount = Size; in HAL_SPI_Receive()
974 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
975 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
976 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
977 hspi->RxISR = NULL; in HAL_SPI_Receive()
978 hspi->TxISR = NULL; in HAL_SPI_Receive()
982 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
984 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
986 hspi->RxXferCount--; in HAL_SPI_Receive()
991 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
994 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
995 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
999 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1002 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1006 if (hspi->Init.DataSize == SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1009 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1012 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1015 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1016 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1017 hspi->RxXferCount--; in HAL_SPI_Receive()
1024 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1025 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1034 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1037 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1039 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1040 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1041 hspi->RxXferCount--; in HAL_SPI_Receive()
1048 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1049 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1058 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1061 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1064 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1067 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1072 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1074 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1079 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1083 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1085 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1086 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1087 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1092 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1099 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1101 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1106 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1108 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1109 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1113 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1115 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1116 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1136 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t … in HAL_SPI_TransmitReceive() argument
1151 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1157 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1158 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1162 ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && in HAL_SPI_TransmitReceive()
1174 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1177 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1179 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1183 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1184 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1185 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1186 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1187 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1188 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1189 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1192 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1193 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1197 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1199 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1204 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1207 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1211 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1213 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1215 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1216 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1217 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1221 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1223 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1228 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1231 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1233 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1234 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1235 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1241 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1243 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1249 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1251 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1252 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1253 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1259 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1260 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1268 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1270 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1271 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1272 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1276 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1278 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1282 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1285 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1287 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1288 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1289 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1295 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1297 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1303 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1305 (*(uint8_t *)hspi->pRxBuffPtr) = hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1306 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1307 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1313 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1314 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1322 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1325 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1328 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1329 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1330 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1334 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1340 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1342 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1344 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1345 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1351 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1353 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1354 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1359 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_TransmitReceive()
1361 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_TransmitReceive()
1365 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1367 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1369 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1387 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1391 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1399 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1405 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1408 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1409 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1410 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_IT()
1411 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1412 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1415 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1416 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1417 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1418 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1421 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1423 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1427 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1431 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1434 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1435 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1440 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1442 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1447 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1450 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1454 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1456 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1469 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1472 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1477 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1479 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1481 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1491 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1494 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1495 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1496 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1497 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1498 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1501 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1502 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1503 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1504 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1507 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1509 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1513 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1517 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1520 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1521 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1526 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1528 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1537 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1540 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1544 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1546 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1560 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8… in HAL_SPI_TransmitReceive_IT() argument
1567 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1570 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1571 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1574 ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && in HAL_SPI_TransmitReceive_IT()
1586 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1589 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1591 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1595 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1596 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1597 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1598 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1599 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1600 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1601 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1604 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1606 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1607 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1611 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1612 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1617 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1619 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1625 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1628 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1632 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1634 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1647 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1651 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1654 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1656 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1667 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1670 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1671 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1672 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1673 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1674 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1677 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1678 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1679 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1680 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1681 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1684 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1687 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1688 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1693 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1695 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1700 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1703 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1706 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1709 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1712 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1713 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1716 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1718 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1723 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1726 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1730 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1733 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1736 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
1751 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
1754 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
1756 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
1761 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
1763 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1766 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
1769 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
1778 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
1781 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1782 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
1783 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
1784 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
1785 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
1788 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
1789 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
1790 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
1791 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
1794 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
1797 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
1798 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
1803 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
1805 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
1810 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
1813 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
1816 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
1819 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
1822 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
1823 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
1826 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
1828 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
1833 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
1836 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
1840 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
1843 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
1846 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
1861 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint… in HAL_SPI_TransmitReceive_DMA() argument
1868 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
1869 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
1872 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
1875 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
1876 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
1879 ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && in HAL_SPI_TransmitReceive_DMA()
1891 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1894 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1896 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
1900 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
1901 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
1902 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1903 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1904 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
1905 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1906 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1909 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1910 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1914 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
1916 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
1921 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1924 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1925 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1930 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1931 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1935 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
1938 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1941 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
1942 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
1945 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
1947 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1952 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
1956 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1957 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1958 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1959 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1962 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
1963 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
1966 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
1968 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1973 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
1976 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
1980 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1983 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
1986 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2004 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2016 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2019 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2021 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2027 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2031 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2036 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2038 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2044 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2048 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2054 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2057 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2061 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2064 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2066 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2070 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2077 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2081 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in HAL_SPI_Abort()
2086 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2089 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2093 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2096 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2098 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2102 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2105 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2109 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2110 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2113 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2121 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2125 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2126 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2129 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2149 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2163 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2166 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2168 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2174 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2178 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2183 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2185 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2191 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2195 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2203 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2207 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2209 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2213 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2217 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2221 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2223 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2227 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2232 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2235 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2238 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2240 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2241 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2250 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2253 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2256 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2258 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2259 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2271 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2272 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2275 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2283 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2287 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2288 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2291 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2295 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2297 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2310 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2313 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2316 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2319 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2330 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2333 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2336 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2339 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2350 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2362 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2364 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2366 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2371 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2373 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2375 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2381 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2382 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2392 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2394 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2395 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2401 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2408 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2419 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2421 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2422 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2426 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2434 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2435 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2441 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2442 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2445 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2448 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2450 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2454 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2457 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2461 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2462 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2464 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2468 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2472 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2473 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2475 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2483 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2485 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2499 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2502 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2515 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2518 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2531 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2534 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2547 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2550 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2563 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2566 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2579 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2582 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2595 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2598 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2613 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2616 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2648 HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2651 return hspi->State; in HAL_SPI_GetState()
2660 uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
2663 return hspi->ErrorCode; in HAL_SPI_GetError()
2687 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMATransmitCplt() local
2697 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
2700 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
2703 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
2705 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
2709 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
2711 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
2714 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
2715 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
2717 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
2721 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
2723 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
2730 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2732 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2744 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMAReceiveCplt() local
2757 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
2761 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
2764 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
2767 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2770 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
2777 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
2780 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2785 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2789 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
2791 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
2794 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
2795 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
2799 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
2801 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2802 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
2806 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
2810 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2812 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2819 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2821 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2833 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMATransmitReceiveCplt() local
2846 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
2850 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
2853 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMATransmitReceiveCplt()
2855 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2858 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
2865 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
2867 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
2871 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
2873 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2874 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2875 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
2879 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
2881 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2882 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
2886 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
2890 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2892 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2899 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2901 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2913 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMAHalfTransmitCplt() local
2917 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2919 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2931 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMAHalfReceiveCplt() local
2935 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2937 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2949 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMAHalfTransmitReceiveCplt() local
2953 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
2955 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
2967 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMAError() local
2970 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
2972 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
2973 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
2976 hspi->ErrorCallback(hspi); in SPI_DMAError()
2978 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
2990 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMAAbortOnError() local
2991 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
2992 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
2996 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
2998 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3012 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMATxAbortCallback() local
3015 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3019 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3026 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMATxAbortCallback()
3030 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_DMATxAbortCallback()
3033 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3035 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3042 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3043 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3046 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3049 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3053 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3054 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3057 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3061 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3063 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3077 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in SPI_DMARxAbortCallback() local
3080 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3082 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3085 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3088 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMARxAbortCallback()
3090 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMARxAbortCallback()
3094 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3096 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3103 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3104 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3107 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3110 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3114 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3115 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3118 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3122 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3124 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3134 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3137 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3138 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3139 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3142 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3145 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3147 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3153 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3155 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3157 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3169 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3175 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3182 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3184 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3186 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3197 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3199 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3200 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3201 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3204 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3207 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3210 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3212 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3218 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3220 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3222 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3233 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3236 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3237 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3238 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3240 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3243 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3245 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3251 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3253 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3255 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3267 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3272 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3277 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3279 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3289 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3292 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3293 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3294 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3297 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3300 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3303 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3305 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3311 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3313 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3315 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3327 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3333 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3339 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3349 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3351 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3352 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3353 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3357 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3359 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3363 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3366 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3368 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3372 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3383 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3388 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3393 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3395 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3405 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3407 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3408 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3409 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3413 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3415 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3419 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3422 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3424 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3428 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3438 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3440 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3441 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3442 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3444 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3447 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3450 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3453 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3463 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3466 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3467 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3468 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3470 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3473 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3476 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3479 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3493 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3507 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3518 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3520 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3521 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3524 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3528 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3530 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3533 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3536 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
3560 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
3562 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
3563 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
3566 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
3570 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3572 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3585 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
3588 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
3590 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
3595 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
3597 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
3609 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
3618 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
3625 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3629 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseRxTx_ISR()
3632 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
3634 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3638 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRxTx_ISR()
3640 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRxTx_ISR()
3645 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
3647 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3648 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
3649 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
3652 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3654 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3660 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
3662 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
3664 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3667 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3669 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3674 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3677 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3679 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3685 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3688 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3690 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3704 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
3707 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
3710 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
3712 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
3716 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRx_ISR()
3718 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRx_ISR()
3720 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
3724 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
3726 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
3727 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
3730 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3732 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3738 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
3742 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3744 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3751 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3753 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3767 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
3780 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3784 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseTx_ISR()
3787 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
3790 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
3792 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3796 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
3798 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
3801 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
3802 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
3806 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
3808 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
3815 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3817 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3828 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
3838 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
3842 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_AbortRx_ISR()
3845 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
3848 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE)); in SPI_AbortRx_ISR()
3851 tmpreg = READ_REG(hspi->Instance->DR); in SPI_AbortRx_ISR()
3855 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
3864 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
3867 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
3870 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
3872 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()