Lines Matching refs:hspi
238 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
240 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint…
242 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
243 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
244 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
245 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
246 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
247 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
248 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
249 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
251 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
254 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
256 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
257 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
258 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
259 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
260 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
261 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
262 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
314 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
319 if (hspi == NULL) in HAL_SPI_Init()
325 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
326 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
327 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
328 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
329 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
330 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
331 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
332 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
333 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
334 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
336 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
337 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
339 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
341 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
346 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
351 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
354 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
355 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
358 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
359 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
361 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
362 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
365 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
368 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
371 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
375 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
376 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
377 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
378 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
379 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
380 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
381 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
382 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
384 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
386 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
390 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
393 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
397 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
400 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
403 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
413 if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT)) in HAL_SPI_Init()
416 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
422 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
423 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
424 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
425 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
426 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
427 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
428 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
429 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
432 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
435 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
438 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Init()
440 hspi->Init.CRCLength = SPI_CRC_LENGTH_16BIT; in HAL_SPI_Init()
444 hspi->Init.CRCLength = SPI_CRC_LENGTH_8BIT; in HAL_SPI_Init()
449 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_Init()
451 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCL); in HAL_SPI_Init()
457 WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | in HAL_SPI_Init()
458 (hspi->Init.TIMode & SPI_CR2_FRF) | in HAL_SPI_Init()
459 (hspi->Init.NSSPMode & SPI_CR2_NSSP) | in HAL_SPI_Init()
460 (hspi->Init.DataSize & SPI_CR2_DS_Msk) | in HAL_SPI_Init()
466 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
468 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
474 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
477 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
478 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
489 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
492 if (hspi == NULL) in HAL_SPI_DeInit()
498 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
500 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
503 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
506 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
508 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
512 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
515 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
518 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
519 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
522 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
533 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
536 UNUSED(hspi); in HAL_SPI_MspInit()
549 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
552 UNUSED(hspi); in HAL_SPI_MspDeInit()
569 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
577 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
582 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
584 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
589 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
593 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
597 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
601 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
605 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
609 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
613 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
617 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
621 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
625 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
630 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
637 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
642 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
646 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
651 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
661 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
668 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
680 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
685 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
687 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
692 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
696 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
700 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
704 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
708 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
712 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
716 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
720 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
724 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
728 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
733 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
740 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
745 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
749 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
754 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
764 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
771 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
821 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, ui… in HAL_SPI_Transmit() argument
827 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
833 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
844 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
847 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
848 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
849 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit()
850 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
851 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
854 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
855 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
856 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
857 hspi->TxISR = NULL; in HAL_SPI_Transmit()
858 hspi->RxISR = NULL; in HAL_SPI_Transmit()
861 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
864 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
865 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
870 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
872 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
877 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
880 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
884 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
886 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
888 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
889 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
890 hspi->TxXferCount--; in HAL_SPI_Transmit()
893 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
896 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
898 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
899 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
900 hspi->TxXferCount--; in HAL_SPI_Transmit()
907 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
908 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
917 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
919 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
922 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
923 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
924 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
928 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
929 hspi->pTxBuffPtr ++; in HAL_SPI_Transmit()
930 hspi->TxXferCount--; in HAL_SPI_Transmit()
933 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
936 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
938 if (hspi->TxXferCount > 1U) in HAL_SPI_Transmit()
941 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
942 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
943 hspi->TxXferCount -= 2U; in HAL_SPI_Transmit()
947 *((__IO uint8_t *)&hspi->Instance->DR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
948 hspi->pTxBuffPtr++; in HAL_SPI_Transmit()
949 hspi->TxXferCount--; in HAL_SPI_Transmit()
957 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
958 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
966 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
968 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
973 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
975 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
979 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
981 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
984 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
986 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
988 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
1007 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1016 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1021 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
1023 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1025 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
1037 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1040 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1041 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1042 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1043 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1044 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1047 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
1048 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
1049 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
1050 hspi->RxISR = NULL; in HAL_SPI_Receive()
1051 hspi->TxISR = NULL; in HAL_SPI_Receive()
1055 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1057 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
1059 hspi->RxXferCount--; in HAL_SPI_Receive()
1064 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1067 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1072 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive()
1076 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1079 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1080 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1084 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1087 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1091 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1094 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1097 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1100 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1101 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1102 hspi->RxXferCount--; in HAL_SPI_Receive()
1109 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1110 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1119 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1122 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1124 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1125 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1126 hspi->RxXferCount--; in HAL_SPI_Receive()
1133 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1134 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1143 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1146 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1149 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1152 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1157 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1159 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1164 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1168 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1170 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1171 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1172 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1177 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1180 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1187 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1193 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive()
1195 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1198 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1199 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1200 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1213 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1215 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1220 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1222 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1223 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1227 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1229 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1230 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1250 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t … in HAL_SPI_TransmitReceive() argument
1270 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1276 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1277 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1281 spi_cr1 = READ_REG(hspi->Instance->CR1); in HAL_SPI_TransmitReceive()
1282 spi_cr2 = READ_REG(hspi->Instance->CR2); in HAL_SPI_TransmitReceive()
1286 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1297 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1300 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1302 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1306 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1307 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1308 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1309 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1310 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1311 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1312 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1315 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1316 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1320 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1322 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1327 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (initial_RxXferCount > 1U)) in HAL_SPI_TransmitReceive()
1330 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1335 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1339 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1342 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1346 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1348 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1350 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1351 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1352 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1356 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1361 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1363 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1368 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1371 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1373 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1374 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1375 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1381 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1386 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1388 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1394 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1396 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1397 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1398 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1404 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1405 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1413 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1415 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1417 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1418 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1419 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1423 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1424 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1425 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1429 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1434 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1436 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1441 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1444 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1446 if (hspi->TxXferCount > 1U) in HAL_SPI_TransmitReceive()
1448 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1449 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1450 hspi->TxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1454 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1455 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1456 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1463 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1468 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSM); in HAL_SPI_TransmitReceive()
1470 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1476 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1478 if (hspi->RxXferCount > 1U) in HAL_SPI_TransmitReceive()
1480 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1481 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1482 hspi->RxXferCount -= 2U; in HAL_SPI_TransmitReceive()
1483 if (hspi->RxXferCount <= 1U) in HAL_SPI_TransmitReceive()
1486 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive()
1491 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1492 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1493 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1500 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1501 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1509 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1512 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1515 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1516 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1517 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1521 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1524 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1531 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1537 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in HAL_SPI_TransmitReceive()
1539 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1542 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1543 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1544 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1556 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1558 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1560 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1561 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1567 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1569 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1570 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1575 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1577 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1579 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1597 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1601 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1609 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1615 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1618 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1619 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1620 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_IT()
1621 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1622 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1625 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1626 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1627 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1628 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1631 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1633 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1637 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1641 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1644 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1645 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1650 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1652 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1657 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1660 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1664 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1666 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1679 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1682 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1687 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1689 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1691 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1701 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1704 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1705 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1706 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1707 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1708 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1711 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1712 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1713 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1714 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1717 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1720 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1721 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1726 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_IT()
1727 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1731 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1734 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1735 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1740 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1742 hspi->CRCSize = 1U; in HAL_SPI_Receive_IT()
1743 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Receive_IT()
1745 hspi->CRCSize = 2U; in HAL_SPI_Receive_IT()
1747 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1751 hspi->CRCSize = 0U; in HAL_SPI_Receive_IT()
1760 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1763 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1767 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1769 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1783 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8… in HAL_SPI_TransmitReceive_IT() argument
1790 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1793 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1794 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1797 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1808 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1811 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1813 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1817 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1818 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1819 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1820 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1821 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1822 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1823 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1826 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1828 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1829 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1833 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1834 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1839 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1841 hspi->CRCSize = 1U; in HAL_SPI_TransmitReceive_IT()
1842 … if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)) in HAL_SPI_TransmitReceive_IT()
1844 hspi->CRCSize = 2U; in HAL_SPI_TransmitReceive_IT()
1846 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1850 hspi->CRCSize = 0U; in HAL_SPI_TransmitReceive_IT()
1855 if ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) || (Size >= 2U)) in HAL_SPI_TransmitReceive_IT()
1858 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1863 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_IT()
1868 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1871 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1875 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1877 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1890 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1894 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1897 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1899 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1910 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1913 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1914 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1915 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1916 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1917 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1920 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1921 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1922 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1923 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1924 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1927 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1930 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1931 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1936 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1938 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1943 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1946 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1949 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1952 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1954 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1956 …if ((hspi->Init.DataSize <= SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.MemDataAlignment == DMA_MDAT… in HAL_SPI_Transmit_DMA()
1959 if ((hspi->TxXferCount & 0x1U) == 0U) in HAL_SPI_Transmit_DMA()
1961 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1962 hspi->TxXferCount = (hspi->TxXferCount >> 1U); in HAL_SPI_Transmit_DMA()
1966 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_Transmit_DMA()
1967 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_Transmit_DMA()
1972 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1973 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1976 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1978 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1983 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1986 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1990 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1993 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1996 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
2011 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
2014 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
2016 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2021 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
2023 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2026 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
2029 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
2038 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2041 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2042 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2043 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2044 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2045 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2048 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2049 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2050 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
2051 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
2054 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2057 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
2058 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2063 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
2065 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
2070 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2071 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2074 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2079 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2081 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Receive_DMA()
2084 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_Receive_DMA()
2086 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_Receive_DMA()
2088 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2089 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_Receive_DMA()
2093 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_Receive_DMA()
2094 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_Receive_DMA()
2100 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2103 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2106 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2109 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2112 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
2113 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
2116 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2118 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2123 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
2126 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2130 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2133 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
2136 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
2151 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint… in HAL_SPI_TransmitReceive_DMA() argument
2158 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
2159 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
2162 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2165 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
2166 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
2169 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
2180 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2183 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2185 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2189 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2190 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2191 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2192 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2193 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2194 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2195 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2198 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2199 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2203 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
2205 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
2210 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX | SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2213 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2216 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2221 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2223 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2225 if ((hspi->TxXferSize & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2227 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2228 hspi->TxXferCount = hspi->TxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2232 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMATX); in HAL_SPI_TransmitReceive_DMA()
2233 hspi->TxXferCount = (hspi->TxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2237 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2240 CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in HAL_SPI_TransmitReceive_DMA()
2242 if ((hspi->RxXferCount & 0x1U) == 0x0U) in HAL_SPI_TransmitReceive_DMA()
2244 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2245 hspi->RxXferCount = hspi->RxXferCount >> 1U; in HAL_SPI_TransmitReceive_DMA()
2249 SET_BIT(hspi->Instance->CR2, SPI_CR2_LDMARX); in HAL_SPI_TransmitReceive_DMA()
2250 hspi->RxXferCount = (hspi->RxXferCount >> 1U) + 1U; in HAL_SPI_TransmitReceive_DMA()
2256 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
2259 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2260 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2265 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2266 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2270 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2273 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2276 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
2277 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2280 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2282 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2287 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2291 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2292 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2293 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2294 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2297 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2298 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2301 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2303 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2308 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
2311 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2315 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2318 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
2321 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2339 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2351 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2354 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2356 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2362 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2366 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2371 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2373 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2379 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2383 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2389 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2392 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2396 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2399 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2401 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2405 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2407 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in HAL_SPI_Abort()
2409 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2413 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2416 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2418 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2424 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2427 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2431 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2434 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2436 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2440 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2443 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in HAL_SPI_Abort()
2445 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2449 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in HAL_SPI_Abort()
2451 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2455 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2459 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2460 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2463 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2471 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2475 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2476 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2479 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2499 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2513 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2516 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2518 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2524 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2528 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2533 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2535 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2541 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2545 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2553 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2557 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2559 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2563 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2567 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2571 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2573 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2577 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2582 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2585 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2588 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2590 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2591 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2600 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2603 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2606 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2608 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2609 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2621 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2622 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2625 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2633 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2637 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2638 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2641 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2645 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2647 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2660 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2663 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2666 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2669 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2680 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2683 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2686 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2689 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2700 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2710 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2712 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2714 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2719 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2721 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2723 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2729 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2730 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2740 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2742 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2743 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2749 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2756 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2767 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2769 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2770 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2774 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2782 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2783 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2789 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2790 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2793 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2796 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2798 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2802 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2805 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2809 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2810 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2812 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2816 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2820 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2821 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2823 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2831 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2833 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2847 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2850 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2863 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2866 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2879 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2882 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2895 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2898 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2911 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2914 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2927 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2930 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2943 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2946 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2961 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2964 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2996 HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2999 return hspi->State; in HAL_SPI_GetState()
3008 uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3011 return hspi->ErrorCode; in HAL_SPI_GetError()
3035 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
3045 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
3048 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
3051 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
3053 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
3057 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
3059 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
3062 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
3063 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
3065 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
3069 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
3071 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
3078 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3080 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3092 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
3107 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
3111 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
3114 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3117 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3120 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in SPI_DMAReceiveCplt()
3123 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
3130 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMAReceiveCplt()
3136 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT) in SPI_DMAReceiveCplt()
3138 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
3141 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3153 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
3156 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3161 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
3165 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
3167 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
3170 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
3171 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
3175 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
3177 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
3178 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
3182 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
3186 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3188 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
3195 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3197 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3209 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
3224 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
3228 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
3230 … if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_8BIT)) in SPI_DMATransmitReceiveCplt()
3232 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_QUARTER_FULL, SPI_DEFAULT_TIMEOU… in SPI_DMATransmitReceiveCplt()
3236 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3239 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_DMATransmitReceiveCplt()
3247 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_HALF_FULL, SPI_DEFAULT_TIMEOUT, … in SPI_DMATransmitReceiveCplt()
3250 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3253 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
3261 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
3263 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
3267 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
3269 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3270 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
3271 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
3275 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
3277 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
3278 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
3282 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
3286 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3288 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
3295 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3297 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3309 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
3313 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3315 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3327 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
3331 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3333 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3345 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
3349 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3351 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3363 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
3366 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
3368 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3369 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3372 hspi->ErrorCallback(hspi); in SPI_DMAError()
3374 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3386 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3387 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3388 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3392 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3394 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3408 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3410 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3413 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3415 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMATxAbortCallback()
3417 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3421 __HAL_SPI_DISABLE(hspi); in SPI_DMATxAbortCallback()
3424 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMATxAbortCallback()
3426 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMATxAbortCallback()
3430 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3432 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3439 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3440 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3443 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3446 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3450 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3451 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3454 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3458 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3460 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3474 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3477 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3479 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3482 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3485 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_DMARxAbortCallback()
3487 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3491 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_DMARxAbortCallback()
3493 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_DMARxAbortCallback()
3497 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3499 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3506 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3507 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3510 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3513 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3517 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3518 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3521 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3525 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3527 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3537 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3540 if (hspi->RxXferCount > 1U) in SPI_2linesRxISR_8BIT()
3542 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3543 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_8BIT()
3544 hspi->RxXferCount -= 2U; in SPI_2linesRxISR_8BIT()
3545 if (hspi->RxXferCount == 1U) in SPI_2linesRxISR_8BIT()
3548 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3554 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3555 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3556 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3560 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3563 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3565 SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); in SPI_2linesRxISR_8BIT()
3566 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3572 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3574 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3576 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3588 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3594 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3600 hspi->CRCSize--; in SPI_2linesRxISR_8BITCRC()
3603 if (hspi->CRCSize == 0U) in SPI_2linesRxISR_8BITCRC()
3606 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3608 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3610 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3622 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3625 if (hspi->TxXferCount >= 2U) in SPI_2linesTxISR_8BIT()
3627 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3628 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_8BIT()
3629 hspi->TxXferCount -= 2U; in SPI_2linesTxISR_8BIT()
3634 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3635 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3636 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3640 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3643 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3646 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3648 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3654 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3656 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3658 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3669 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3672 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3673 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3674 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3676 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3679 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3681 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3687 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3689 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3691 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3703 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3708 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3713 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3715 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3725 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3728 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3729 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3730 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3733 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3736 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3739 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3741 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3747 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3749 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3751 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3763 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3769 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3775 hspi->CRCSize--; in SPI_RxISR_8BITCRC()
3777 if (hspi->CRCSize == 0U) in SPI_RxISR_8BITCRC()
3779 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3790 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3792 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3793 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3794 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3798 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3800 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3804 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3807 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3809 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3813 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3824 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3829 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3834 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3836 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3846 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3848 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3849 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3850 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3854 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3856 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3860 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3863 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3865 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3869 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3879 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3881 *(__IO uint8_t *)&hspi->Instance->DR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3882 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3883 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3885 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3888 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3891 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3894 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3904 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3907 hspi->Instance->DR = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3908 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3909 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3911 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3914 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3917 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3920 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3934 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3948 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3959 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3961 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3962 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3965 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3969 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3971 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3974 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3977 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
4003 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint… in SPI_WaitFifoStateUntilTimeout() argument
4017 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_WaitFifoStateUntilTimeout()
4022 while ((hspi->Instance->SR & Fifo) != State) in SPI_WaitFifoStateUntilTimeout()
4041 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFifoStateUntilTimeout()
4043 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFifoStateUntilTimeout()
4044 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFifoStateUntilTimeout()
4047 __HAL_SPI_DISABLE(hspi); in SPI_WaitFifoStateUntilTimeout()
4051 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFifoStateUntilTimeout()
4053 SPI_RESET_CRC(hspi); in SPI_WaitFifoStateUntilTimeout()
4056 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFifoStateUntilTimeout()
4059 __HAL_UNLOCK(hspi); in SPI_WaitFifoStateUntilTimeout()
4083 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
4085 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4086 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4089 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
4093 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
4095 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4099 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
4100 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
4103 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTransaction()
4105 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
4119 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
4122 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4124 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4129 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
4131 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4136 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HA… in SPI_EndRxTxTransaction()
4138 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
4151 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
4159 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
4162 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
4164 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
4169 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
4171 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4172 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
4173 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
4176 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4178 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4184 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
4186 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
4188 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4191 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4193 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4198 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4201 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4203 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
4209 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
4212 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4214 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
4228 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
4231 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
4234 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
4236 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
4238 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
4242 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
4244 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
4245 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
4248 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4250 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4256 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
4260 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4262 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
4269 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
4271 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
4285 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
4293 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
4296 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
4298 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
4302 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
4304 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
4307 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
4308 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
4312 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
4314 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
4321 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4323 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
4334 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
4339 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
4344 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4351 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
4355 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortRx_ISR()
4358 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortRx_ISR()
4360 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4364 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortRx_ISR()
4366 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortRx_ISR()
4369 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
4378 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
4385 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4392 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4396 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
4398 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_AbortTx_ISR()
4400 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4404 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
4407 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4409 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4413 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in SPI_AbortTx_ISR()
4416 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4423 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortTx_ISR()
4427 } while (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)); in SPI_AbortTx_ISR()
4430 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) !… in SPI_AbortTx_ISR()
4432 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4436 …if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, SPI_DEFAULT_TIMEOUT, HAL_… in SPI_AbortTx_ISR()
4438 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in SPI_AbortTx_ISR()
4441 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()