Lines Matching refs:hspi
247 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag…
249 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
250 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
251 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
252 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
253 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
254 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi);
255 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
256 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi);
258 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
259 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
260 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi);
261 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi);
263 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi);
264 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi);
265 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi);
266 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi);
267 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi);
268 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t T…
269 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t…
319 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
322 if (hspi == NULL) in HAL_SPI_Init()
328 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
329 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
330 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
331 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
332 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
333 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
334 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
335 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
336 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
338 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
339 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
341 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Init()
343 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
348 hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; in HAL_SPI_Init()
353 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
356 hspi->Init.CLKPolarity = SPI_POLARITY_LOW; in HAL_SPI_Init()
357 hspi->Init.CLKPhase = SPI_PHASE_1EDGE; in HAL_SPI_Init()
360 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
361 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
363 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
366 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
369 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
372 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
376 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
377 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
378 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
379 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
380 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
381 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
382 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
383 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
385 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
387 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
391 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
394 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
398 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
401 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
406 WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | in HAL_SPI_Init()
407 (hspi->Init.Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) | in HAL_SPI_Init()
408 (hspi->Init.DataSize & SPI_CR1_DFF) | in HAL_SPI_Init()
409 (hspi->Init.CLKPolarity & SPI_CR1_CPOL) | in HAL_SPI_Init()
410 (hspi->Init.CLKPhase & SPI_CR1_CPHA) | in HAL_SPI_Init()
411 (hspi->Init.NSS & SPI_CR1_SSM) | in HAL_SPI_Init()
412 (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | in HAL_SPI_Init()
413 (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | in HAL_SPI_Init()
414 (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); in HAL_SPI_Init()
417 …WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SP… in HAL_SPI_Init()
422 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
424 WRITE_REG(hspi->Instance->CRCPR, (hspi->Init.CRCPolynomial & SPI_CRCPR_CRCPOLY_Msk)); in HAL_SPI_Init()
430 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
433 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
434 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
445 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
448 if (hspi == NULL) in HAL_SPI_DeInit()
454 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
456 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
459 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
462 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
464 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
468 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
471 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
474 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
475 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
478 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
489 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
492 UNUSED(hspi); in HAL_SPI_MspInit()
505 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
508 UNUSED(hspi); in HAL_SPI_MspDeInit()
525 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
533 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
538 __HAL_LOCK(hspi); in HAL_SPI_RegisterCallback()
540 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
545 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
549 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
553 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
557 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
561 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
565 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
569 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
573 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
577 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
581 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
586 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
593 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
598 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
602 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
607 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
617 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
624 __HAL_UNLOCK(hspi); in HAL_SPI_RegisterCallback()
636 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
641 __HAL_LOCK(hspi); in HAL_SPI_UnRegisterCallback()
643 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
648 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
652 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
656 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
660 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
664 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
668 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
672 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
676 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
680 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
684 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
689 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
696 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
701 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
705 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
710 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
720 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
727 __HAL_UNLOCK(hspi); in HAL_SPI_UnRegisterCallback()
777 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t… in HAL_SPI_Transmit() argument
783 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
791 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit()
794 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
800 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
813 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
814 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
815 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit()
816 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
817 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
820 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit()
821 hspi->RxXferSize = 0U; in HAL_SPI_Transmit()
822 hspi->RxXferCount = 0U; in HAL_SPI_Transmit()
823 hspi->TxISR = NULL; in HAL_SPI_Transmit()
824 hspi->RxISR = NULL; in HAL_SPI_Transmit()
827 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
830 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit()
831 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
836 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
838 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit()
843 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit()
846 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
850 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Transmit()
852 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
854 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
855 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
856 hspi->TxXferCount--; in HAL_SPI_Transmit()
859 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
862 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
864 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
865 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
866 hspi->TxXferCount--; in HAL_SPI_Transmit()
874 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
883 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_Transmit()
885 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
886 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
887 hspi->TxXferCount--; in HAL_SPI_Transmit()
889 while (hspi->TxXferCount > 0U) in HAL_SPI_Transmit()
892 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) in HAL_SPI_Transmit()
894 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_Transmit()
895 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
896 hspi->TxXferCount--; in HAL_SPI_Transmit()
904 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
912 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit()
914 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Transmit()
919 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
921 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Transmit()
925 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_Transmit()
927 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Transmit()
930 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
936 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
941 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
954 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
962 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
969 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
975 if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) in HAL_SPI_Receive()
977 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
979 return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); in HAL_SPI_Receive()
983 __HAL_LOCK(hspi); in HAL_SPI_Receive()
995 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
996 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
997 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
998 hspi->RxXferSize = Size; in HAL_SPI_Receive()
999 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1002 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive()
1003 hspi->TxXferSize = 0U; in HAL_SPI_Receive()
1004 hspi->TxXferCount = 0U; in HAL_SPI_Receive()
1005 hspi->RxISR = NULL; in HAL_SPI_Receive()
1006 hspi->TxISR = NULL; in HAL_SPI_Receive()
1010 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1012 SPI_RESET_CRC(hspi); in HAL_SPI_Receive()
1014 hspi->RxXferCount--; in HAL_SPI_Receive()
1019 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1022 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive()
1023 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1027 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive()
1030 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1034 if (hspi->Init.DataSize == SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1037 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1040 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1043 (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1044 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1045 hspi->RxXferCount--; in HAL_SPI_Receive()
1053 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1062 while (hspi->RxXferCount > 0U) in HAL_SPI_Receive()
1065 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) in HAL_SPI_Receive()
1067 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1068 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1069 hspi->RxXferCount--; in HAL_SPI_Receive()
1077 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1086 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1089 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_Receive()
1092 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1100 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1102 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_Receive()
1107 (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; in HAL_SPI_Receive()
1111 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1113 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1119 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_Receive()
1126 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1128 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_Receive()
1133 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_Receive()
1135 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_Receive()
1136 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_Receive()
1140 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1146 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1150 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1164 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxDa… in HAL_SPI_TransmitReceive() argument
1179 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1188 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1191 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1197 tmp_state = hspi->State; in HAL_SPI_TransmitReceive()
1198 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive()
1202 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive()
1215 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive()
1217 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1221 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1222 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1223 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1224 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1225 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1226 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1227 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1230 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1231 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1235 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1237 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive()
1242 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive()
1245 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1249 if (hspi->Init.DataSize == SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1251 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1253 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1254 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1255 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1257 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1260 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1262 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1263 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1264 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1270 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1272 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1278 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1280 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1281 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1282 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1289 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1297 if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) in HAL_SPI_TransmitReceive()
1299 *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1300 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1301 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1303 while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1306 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) in HAL_SPI_TransmitReceive()
1308 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1309 hspi->pTxBuffPtr++; in HAL_SPI_TransmitReceive()
1310 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1316 if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in HAL_SPI_TransmitReceive()
1318 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in HAL_SPI_TransmitReceive()
1324 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) in HAL_SPI_TransmitReceive()
1326 (*(uint8_t *)hspi->pRxBuffPtr) = hspi->Instance->DR; in HAL_SPI_TransmitReceive()
1327 hspi->pRxBuffPtr++; in HAL_SPI_TransmitReceive()
1328 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1335 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1343 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive()
1346 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1349 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1354 tmpreg = READ_REG(hspi->Instance->DR); in HAL_SPI_TransmitReceive()
1360 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in HAL_SPI_TransmitReceive()
1362 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in HAL_SPI_TransmitReceive()
1364 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in HAL_SPI_TransmitReceive()
1371 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1374 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in HAL_SPI_TransmitReceive()
1379 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in HAL_SPI_TransmitReceive()
1381 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_TransmitReceive()
1384 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1390 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1394 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1406 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1410 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1418 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1421 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1429 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1436 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1437 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1438 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_IT()
1439 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1440 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1443 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_IT()
1444 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_IT()
1445 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_IT()
1446 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1449 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1451 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1455 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1459 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1462 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_IT()
1463 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1468 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_IT()
1470 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_IT()
1475 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in HAL_SPI_Transmit_IT()
1479 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_IT()
1482 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1486 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1498 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1502 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1510 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1516 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_IT()
1518 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1520 return HAL_SPI_TransmitReceive_IT(hspi, pData, pData, Size); in HAL_SPI_Receive_IT()
1524 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1533 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1534 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1535 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1536 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1537 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1540 hspi->pTxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Receive_IT()
1541 hspi->TxXferSize = 0U; in HAL_SPI_Receive_IT()
1542 hspi->TxXferCount = 0U; in HAL_SPI_Receive_IT()
1543 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1546 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1548 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1552 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1556 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1559 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_IT()
1560 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1565 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_IT()
1567 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_IT()
1572 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_Receive_IT()
1579 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_IT()
1582 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1587 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1600 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pR… in HAL_SPI_TransmitReceive_IT() argument
1606 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1615 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1618 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1621 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_IT()
1622 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_IT()
1625 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_IT()
1638 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_IT()
1640 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1644 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1645 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1646 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1647 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1648 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1649 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1650 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1653 if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1655 hspi->RxISR = SPI_2linesRxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1656 hspi->TxISR = SPI_2linesTxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1660 hspi->RxISR = SPI_2linesRxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1661 hspi->TxISR = SPI_2linesTxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1666 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_IT()
1668 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_IT()
1673 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in HAL_SPI_TransmitReceive_IT()
1676 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_IT()
1679 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1684 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1696 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1701 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Transmit_DMA()
1704 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1707 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1709 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1722 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1723 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1724 hspi->pTxBuffPtr = (uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1725 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1726 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1729 hspi->pRxBuffPtr = (uint8_t *)NULL; in HAL_SPI_Transmit_DMA()
1730 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1731 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1732 hspi->RxXferSize = 0U; in HAL_SPI_Transmit_DMA()
1733 hspi->RxXferCount = 0U; in HAL_SPI_Transmit_DMA()
1736 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1739 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Transmit_DMA()
1740 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1745 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Transmit_DMA()
1747 SPI_RESET_CRC(hspi); in HAL_SPI_Transmit_DMA()
1752 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
1755 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
1758 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
1761 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
1764 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
1765 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
1768 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
1775 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Transmit_DMA()
1778 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
1782 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Transmit_DMA()
1785 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_Transmit_DMA()
1789 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
1803 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
1808 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_Receive_DMA()
1810 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
1816 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in HAL_SPI_Receive_DMA()
1818 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1821 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_Receive_DMA()
1824 return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); in HAL_SPI_Receive_DMA()
1828 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
1837 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
1838 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
1839 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
1840 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
1841 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
1844 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
1845 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
1846 hspi->TxXferSize = 0U; in HAL_SPI_Receive_DMA()
1847 hspi->TxXferCount = 0U; in HAL_SPI_Receive_DMA()
1850 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
1853 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Receive_DMA()
1854 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
1859 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive_DMA()
1861 SPI_RESET_CRC(hspi); in HAL_SPI_Receive_DMA()
1866 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
1869 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
1872 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
1875 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
1878 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_Receive_DMA()
1879 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
1882 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
1889 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_Receive_DMA()
1892 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
1896 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_Receive_DMA()
1899 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_Receive_DMA()
1903 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
1917 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *p… in HAL_SPI_TransmitReceive_DMA() argument
1925 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx)); in HAL_SPI_TransmitReceive_DMA()
1926 assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx)); in HAL_SPI_TransmitReceive_DMA()
1929 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
1932 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
1935 tmp_state = hspi->State; in HAL_SPI_TransmitReceive_DMA()
1936 tmp_mode = hspi->Init.Mode; in HAL_SPI_TransmitReceive_DMA()
1939 …((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == … in HAL_SPI_TransmitReceive_DMA()
1952 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1954 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
1958 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
1959 hspi->pTxBuffPtr = (uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
1960 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1961 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1962 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
1963 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
1964 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
1967 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1968 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
1972 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_TransmitReceive_DMA()
1974 SPI_RESET_CRC(hspi); in HAL_SPI_TransmitReceive_DMA()
1979 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_TransmitReceive_DMA()
1982 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1983 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1988 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1989 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
1993 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
1996 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
1999 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuf… in HAL_SPI_TransmitReceive_DMA()
2000 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2003 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2010 SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2014 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2015 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2016 hspi->hdmatx->XferErrorCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2017 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2020 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2021 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2024 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2031 if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) in HAL_SPI_TransmitReceive_DMA()
2034 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2037 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_ERR)); in HAL_SPI_TransmitReceive_DMA()
2040 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2044 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2061 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2073 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort()
2076 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort()
2078 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort()
2084 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2088 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2093 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort()
2095 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort()
2101 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2105 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort()
2111 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort()
2114 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2118 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2121 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2123 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2127 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN)); in HAL_SPI_Abort()
2134 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2138 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in HAL_SPI_Abort()
2143 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort()
2146 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2150 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2153 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2155 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2159 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Abort()
2162 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_RXDMAEN)); in HAL_SPI_Abort()
2166 hspi->RxXferCount = 0U; in HAL_SPI_Abort()
2167 hspi->TxXferCount = 0U; in HAL_SPI_Abort()
2170 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort()
2178 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2182 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort()
2183 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort()
2186 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2206 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2220 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); in HAL_SPI_Abort_IT()
2223 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXEIE)) in HAL_SPI_Abort_IT()
2225 hspi->TxISR = SPI_AbortTx_ISR; in HAL_SPI_Abort_IT()
2231 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2235 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2240 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXNEIE)) in HAL_SPI_Abort_IT()
2242 hspi->RxISR = SPI_AbortRx_ISR; in HAL_SPI_Abort_IT()
2248 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2252 } while (hspi->State != HAL_SPI_STATE_ABORT); in HAL_SPI_Abort_IT()
2260 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2264 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2266 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2270 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2274 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2278 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2280 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2284 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2289 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_SPI_Abort_IT()
2292 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2295 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2297 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2298 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2307 if (HAL_IS_BIT_SET(hspi->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_SPI_Abort_IT()
2310 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2313 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2315 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2316 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort_IT()
2328 hspi->RxXferCount = 0U; in HAL_SPI_Abort_IT()
2329 hspi->TxXferCount = 0U; in HAL_SPI_Abort_IT()
2332 if (hspi->ErrorCode == HAL_SPI_ERROR_ABORT) in HAL_SPI_Abort_IT()
2340 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2344 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_Abort_IT()
2345 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_Abort_IT()
2348 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2352 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2354 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2367 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2370 __HAL_LOCK(hspi); in HAL_SPI_DMAPause()
2373 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAPause()
2376 __HAL_UNLOCK(hspi); in HAL_SPI_DMAPause()
2387 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2390 __HAL_LOCK(hspi); in HAL_SPI_DMAResume()
2393 SET_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAResume()
2396 __HAL_UNLOCK(hspi); in HAL_SPI_DMAResume()
2407 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2417 if (hspi->hdmatx != NULL) in HAL_SPI_DMAStop()
2419 if (HAL_OK != HAL_DMA_Abort(hspi->hdmatx)) in HAL_SPI_DMAStop()
2421 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2426 if (hspi->hdmarx != NULL) in HAL_SPI_DMAStop()
2428 if (HAL_OK != HAL_DMA_Abort(hspi->hdmarx)) in HAL_SPI_DMAStop()
2430 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_DMAStop()
2436 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in HAL_SPI_DMAStop()
2437 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_DMAStop()
2447 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2449 uint32_t itsource = hspi->Instance->CR2; in HAL_SPI_IRQHandler()
2450 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2456 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2463 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2474 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in HAL_SPI_IRQHandler()
2476 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
2477 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2481 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
2489 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
2490 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
2496 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
2497 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
2500 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
2503 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE | SPI_IT_TXE | SPI_IT_ERR); in HAL_SPI_IRQHandler()
2505 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
2509 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN)); in HAL_SPI_IRQHandler()
2512 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
2516 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2517 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
2519 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2523 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
2527 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
2528 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
2530 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
2538 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2540 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
2554 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxCpltCallback() argument
2557 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
2570 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxCpltCallback() argument
2573 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
2586 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxCpltCallback() argument
2589 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
2602 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxHalfCpltCallback() argument
2605 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
2618 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_RxHalfCpltCallback() argument
2621 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
2634 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_TxRxHalfCpltCallback() argument
2637 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
2650 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_ErrorCallback() argument
2653 UNUSED(hspi); in HAL_SPI_ErrorCallback()
2668 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) in HAL_SPI_AbortCpltCallback() argument
2671 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
2703 HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
2706 return hspi->State; in HAL_SPI_GetState()
2715 uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
2718 return hspi->ErrorCode; in HAL_SPI_GetError()
2742 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitCplt() local
2752 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitCplt()
2755 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATransmitCplt()
2758 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitCplt()
2760 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitCplt()
2764 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_DMATransmitCplt()
2766 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATransmitCplt()
2769 hspi->TxXferCount = 0U; in SPI_DMATransmitCplt()
2770 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitCplt()
2772 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitCplt()
2776 hspi->ErrorCallback(hspi); in SPI_DMATransmitCplt()
2778 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitCplt()
2785 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2787 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
2799 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAReceiveCplt() local
2812 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMAReceiveCplt()
2816 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMAReceiveCplt()
2819 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMAReceiveCplt()
2822 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2825 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMAReceiveCplt()
2832 if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER)) in SPI_DMAReceiveCplt()
2835 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2840 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMAReceiveCplt()
2844 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMAReceiveCplt()
2846 hspi->ErrorCode = HAL_SPI_ERROR_FLAG; in SPI_DMAReceiveCplt()
2849 hspi->RxXferCount = 0U; in SPI_DMAReceiveCplt()
2850 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAReceiveCplt()
2854 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMAReceiveCplt()
2856 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMAReceiveCplt()
2857 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMAReceiveCplt()
2861 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMAReceiveCplt()
2865 hspi->ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2867 HAL_SPI_ErrorCallback(hspi); in SPI_DMAReceiveCplt()
2874 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2876 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
2888 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATransmitReceiveCplt() local
2901 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_DMATransmitReceiveCplt()
2905 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_DMATransmitReceiveCplt()
2908 …if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) != HAL… in SPI_DMATransmitReceiveCplt()
2910 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2913 tmpreg = READ_REG(hspi->Instance->DR); in SPI_DMATransmitReceiveCplt()
2920 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_DMATransmitReceiveCplt()
2922 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_DMATransmitReceiveCplt()
2926 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMATransmitReceiveCplt()
2928 hspi->TxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2929 hspi->RxXferCount = 0U; in SPI_DMATransmitReceiveCplt()
2930 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATransmitReceiveCplt()
2934 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR)) in SPI_DMATransmitReceiveCplt()
2936 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_DMATransmitReceiveCplt()
2937 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_DMATransmitReceiveCplt()
2941 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_DMATransmitReceiveCplt()
2945 hspi->ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2947 HAL_SPI_ErrorCallback(hspi); in SPI_DMATransmitReceiveCplt()
2954 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2956 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
2968 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitCplt() local
2972 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2974 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
2986 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfReceiveCplt() local
2990 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
2992 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3004 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAHalfTransmitReceiveCplt() local
3008 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3010 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3022 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAError() local
3025 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN); in SPI_DMAError()
3027 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3028 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3031 hspi->ErrorCallback(hspi); in SPI_DMAError()
3033 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3045 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMAAbortOnError() local
3046 hspi->RxXferCount = 0U; in SPI_DMAAbortOnError()
3047 hspi->TxXferCount = 0U; in SPI_DMAAbortOnError()
3051 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3053 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3067 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMATxAbortCallback() local
3070 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3074 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_TXDMAEN); in SPI_DMATxAbortCallback()
3081 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMATxAbortCallback()
3085 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_DMATxAbortCallback()
3088 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3090 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3097 hspi->RxXferCount = 0U; in SPI_DMATxAbortCallback()
3098 hspi->TxXferCount = 0U; in SPI_DMATxAbortCallback()
3101 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMATxAbortCallback()
3104 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMATxAbortCallback()
3108 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMATxAbortCallback()
3109 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMATxAbortCallback()
3112 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3116 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3118 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3132 …SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogatio… in SPI_DMARxAbortCallback() local
3135 __HAL_SPI_DISABLE(hspi); in SPI_DMARxAbortCallback()
3137 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3140 CLEAR_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); in SPI_DMARxAbortCallback()
3143 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_DMARxAbortCallback()
3145 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_DMARxAbortCallback()
3149 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3151 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3158 hspi->RxXferCount = 0U; in SPI_DMARxAbortCallback()
3159 hspi->TxXferCount = 0U; in SPI_DMARxAbortCallback()
3162 if (hspi->ErrorCode != HAL_SPI_ERROR_ABORT) in SPI_DMARxAbortCallback()
3165 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in SPI_DMARxAbortCallback()
3169 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_DMARxAbortCallback()
3170 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_DMARxAbortCallback()
3173 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3177 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3179 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3189 static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BIT() argument
3192 *hspi->pRxBuffPtr = *((__IO uint8_t *)&hspi->Instance->DR); in SPI_2linesRxISR_8BIT()
3193 hspi->pRxBuffPtr++; in SPI_2linesRxISR_8BIT()
3194 hspi->RxXferCount--; in SPI_2linesRxISR_8BIT()
3197 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3200 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_8BIT()
3202 hspi->RxISR = SPI_2linesRxISR_8BITCRC; in SPI_2linesRxISR_8BIT()
3208 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BIT()
3210 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BIT()
3212 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BIT()
3224 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_8BITCRC() argument
3230 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_2linesRxISR_8BITCRC()
3237 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_2linesRxISR_8BITCRC()
3239 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_8BITCRC()
3241 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_8BITCRC()
3252 static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_8BIT() argument
3254 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_2linesTxISR_8BIT()
3255 hspi->pTxBuffPtr++; in SPI_2linesTxISR_8BIT()
3256 hspi->TxXferCount--; in SPI_2linesTxISR_8BIT()
3259 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3262 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_8BIT()
3265 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_8BIT()
3267 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3273 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_8BIT()
3275 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_8BIT()
3277 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_8BIT()
3288 static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BIT() argument
3291 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_2linesRxISR_16BIT()
3292 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_2linesRxISR_16BIT()
3293 hspi->RxXferCount--; in SPI_2linesRxISR_16BIT()
3295 if (hspi->RxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3298 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesRxISR_16BIT()
3300 hspi->RxISR = SPI_2linesRxISR_16BITCRC; in SPI_2linesRxISR_16BIT()
3306 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BIT()
3308 if (hspi->TxXferCount == 0U) in SPI_2linesRxISR_16BIT()
3310 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BIT()
3322 static void SPI_2linesRxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_2linesRxISR_16BITCRC() argument
3327 tmpreg = READ_REG(hspi->Instance->DR); in SPI_2linesRxISR_16BITCRC()
3332 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE); in SPI_2linesRxISR_16BITCRC()
3334 SPI_CloseRxTx_ISR(hspi); in SPI_2linesRxISR_16BITCRC()
3344 static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_2linesTxISR_16BIT() argument
3347 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_2linesTxISR_16BIT()
3348 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_2linesTxISR_16BIT()
3349 hspi->TxXferCount--; in SPI_2linesTxISR_16BIT()
3352 if (hspi->TxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3355 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_2linesTxISR_16BIT()
3358 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_2linesTxISR_16BIT()
3360 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3366 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXE); in SPI_2linesTxISR_16BIT()
3368 if (hspi->RxXferCount == 0U) in SPI_2linesTxISR_16BIT()
3370 SPI_CloseRxTx_ISR(hspi); in SPI_2linesTxISR_16BIT()
3382 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BITCRC() argument
3388 ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; in SPI_RxISR_8BITCRC()
3394 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BITCRC()
3404 static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3406 *hspi->pRxBuffPtr = (*(__IO uint8_t *)&hspi->Instance->DR); in SPI_RxISR_8BIT()
3407 hspi->pRxBuffPtr++; in SPI_RxISR_8BIT()
3408 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3412 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_8BIT()
3414 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_8BIT()
3418 if (hspi->RxXferCount == 0U) in SPI_RxISR_8BIT()
3421 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_8BIT()
3423 hspi->RxISR = SPI_RxISR_8BITCRC; in SPI_RxISR_8BIT()
3427 SPI_CloseRx_ISR(hspi); in SPI_RxISR_8BIT()
3438 static void SPI_RxISR_16BITCRC(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BITCRC() argument
3443 tmpreg = READ_REG(hspi->Instance->DR); in SPI_RxISR_16BITCRC()
3448 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_RxISR_16BITCRC()
3450 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BITCRC()
3460 static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3462 *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)(hspi->Instance->DR); in SPI_RxISR_16BIT()
3463 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3464 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3468 if ((hspi->RxXferCount == 1U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)) in SPI_RxISR_16BIT()
3470 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_RxISR_16BIT()
3474 if (hspi->RxXferCount == 0U) in SPI_RxISR_16BIT()
3477 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_RxISR_16BIT()
3479 hspi->RxISR = SPI_RxISR_16BITCRC; in SPI_RxISR_16BIT()
3483 SPI_CloseRx_ISR(hspi); in SPI_RxISR_16BIT()
3493 static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3495 *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3496 hspi->pTxBuffPtr++; in SPI_TxISR_8BIT()
3497 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3499 if (hspi->TxXferCount == 0U) in SPI_TxISR_8BIT()
3502 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_8BIT()
3505 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_8BIT()
3508 SPI_CloseTx_ISR(hspi); in SPI_TxISR_8BIT()
3518 static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3521 hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3522 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3523 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3525 if (hspi->TxXferCount == 0U) in SPI_TxISR_16BIT()
3528 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_TxISR_16BIT()
3531 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); in SPI_TxISR_16BIT()
3534 SPI_CloseTx_ISR(hspi); in SPI_TxISR_16BIT()
3548 static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, Flag… in SPI_WaitFlagStateUntilTimeout() argument
3562 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) in SPI_WaitFlagStateUntilTimeout()
3573 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); in SPI_WaitFlagStateUntilTimeout()
3575 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_WaitFlagStateUntilTimeout()
3576 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_WaitFlagStateUntilTimeout()
3579 __HAL_SPI_DISABLE(hspi); in SPI_WaitFlagStateUntilTimeout()
3583 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_WaitFlagStateUntilTimeout()
3585 SPI_RESET_CRC(hspi); in SPI_WaitFlagStateUntilTimeout()
3588 hspi->State = HAL_SPI_STATE_READY; in SPI_WaitFlagStateUntilTimeout()
3591 __HAL_UNLOCK(hspi); in SPI_WaitFlagStateUntilTimeout()
3615 static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t … in SPI_EndRxTransaction() argument
3617 if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) in SPI_EndRxTransaction()
3618 … || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) in SPI_EndRxTransaction()
3621 __HAL_SPI_DISABLE(hspi); in SPI_EndRxTransaction()
3625 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTransaction()
3627 if (hspi->Init.Direction != SPI_DIRECTION_2LINES_RXONLY) in SPI_EndRxTransaction()
3630 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3632 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3639 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3641 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3649 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTransaction()
3651 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTransaction()
3665 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t… in SPI_EndRxTxTransaction() argument
3670 if (hspi->Init.Mode == SPI_MODE_MASTER) in SPI_EndRxTxTransaction()
3673 if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) in SPI_EndRxTxTransaction()
3675 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_EndRxTxTransaction()
3693 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET); in SPI_EndRxTxTransaction()
3705 static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRxTx_ISR() argument
3714 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_ERR); in SPI_CloseRxTx_ISR()
3721 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3725 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseRxTx_ISR()
3728 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseRxTx_ISR()
3730 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRxTx_ISR()
3734 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRxTx_ISR()
3736 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRxTx_ISR()
3741 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRxTx_ISR()
3743 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3744 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRxTx_ISR()
3745 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRxTx_ISR()
3748 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3750 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3756 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRxTx_ISR()
3758 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in SPI_CloseRxTx_ISR()
3760 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3763 hspi->RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3765 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3770 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3773 hspi->TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3775 HAL_SPI_TxRxCpltCallback(hspi); in SPI_CloseRxTx_ISR()
3781 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRxTx_ISR()
3784 hspi->ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3786 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRxTx_ISR()
3800 static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseRx_ISR() argument
3803 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_RXNE | SPI_IT_ERR)); in SPI_CloseRx_ISR()
3806 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, HAL_GetTick()) != HAL_OK) in SPI_CloseRx_ISR()
3808 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseRx_ISR()
3812 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseRx_ISR()
3814 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseRx_ISR()
3816 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseRx_ISR()
3820 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_CRCERR) != RESET) in SPI_CloseRx_ISR()
3822 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseRx_ISR()
3823 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseRx_ISR()
3826 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3828 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3834 if (hspi->ErrorCode == HAL_SPI_ERROR_NONE) in SPI_CloseRx_ISR()
3838 hspi->RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3840 HAL_SPI_RxCpltCallback(hspi); in SPI_CloseRx_ISR()
3847 hspi->ErrorCallback(hspi); in SPI_CloseRx_ISR()
3849 HAL_SPI_ErrorCallback(hspi); in SPI_CloseRx_ISR()
3863 static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi) in SPI_CloseTx_ISR() argument
3876 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3880 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_CloseTx_ISR()
3883 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_ERR)); in SPI_CloseTx_ISR()
3886 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) != HAL_OK) in SPI_CloseTx_ISR()
3888 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in SPI_CloseTx_ISR()
3892 if (hspi->Init.Direction == SPI_DIRECTION_2LINES) in SPI_CloseTx_ISR()
3894 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTx_ISR()
3897 hspi->State = HAL_SPI_STATE_READY; in SPI_CloseTx_ISR()
3898 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in SPI_CloseTx_ISR()
3902 hspi->ErrorCallback(hspi); in SPI_CloseTx_ISR()
3904 HAL_SPI_ErrorCallback(hspi); in SPI_CloseTx_ISR()
3911 hspi->TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3913 HAL_SPI_TxCpltCallback(hspi); in SPI_CloseTx_ISR()
3924 static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortRx_ISR() argument
3934 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in SPI_AbortRx_ISR()
3938 } while ((hspi->Instance->SR & SPI_FLAG_TXE) == RESET); in SPI_AbortRx_ISR()
3941 __HAL_SPI_DISABLE(hspi); in SPI_AbortRx_ISR()
3944 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE)); in SPI_AbortRx_ISR()
3947 tmpreg = READ_REG(hspi->Instance->DR); in SPI_AbortRx_ISR()
3951 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortRx_ISR()
3960 static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi) in SPI_AbortTx_ISR() argument
3963 CLEAR_BIT(hspi->Instance->CR2, (SPI_CR2_TXEIE)); in SPI_AbortTx_ISR()
3966 __HAL_SPI_DISABLE(hspi); in SPI_AbortTx_ISR()
3968 hspi->State = HAL_SPI_STATE_ABORT; in SPI_AbortTx_ISR()