Lines Matching refs:hspi
174 static HAL_StatusTypeDef SPI_WaitOnFlagUntilTimeout(const SPI_HandleTypeDef *hspi, uint32_t Flag,
176 static void SPI_TxISR_8BIT(SPI_HandleTypeDef *hspi);
177 static void SPI_TxISR_16BIT(SPI_HandleTypeDef *hspi);
178 static void SPI_TxISR_32BIT(SPI_HandleTypeDef *hspi);
179 static void SPI_RxISR_8BIT(SPI_HandleTypeDef *hspi);
180 static void SPI_RxISR_16BIT(SPI_HandleTypeDef *hspi);
181 static void SPI_RxISR_32BIT(SPI_HandleTypeDef *hspi);
182 static void SPI_AbortTransfer(SPI_HandleTypeDef *hspi);
183 static void SPI_CloseTransfer(SPI_HandleTypeDef *hspi);
184 static uint32_t SPI_GetPacketSize(const SPI_HandleTypeDef *hspi);
239 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
248 if (hspi == NULL) in HAL_SPI_Init()
254 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
255 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
256 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
257 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Init()
259 assert_param(IS_SPI_LIMITED_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
260 assert_param(IS_SPI_LIMITED_FIFOTHRESHOLD(hspi->Init.FifoThreshold)); in HAL_SPI_Init()
264 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
265 assert_param(IS_SPI_FIFOTHRESHOLD(hspi->Init.FifoThreshold)); in HAL_SPI_Init()
267 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
268 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
269 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
270 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
271 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
272 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
274 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
275 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
278 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
279 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
281 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Init()
283 assert_param(IS_SPI_LIMITED_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
287 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
289 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
290 assert_param(IS_SPI_CRC_INITIALIZATION_PATTERN(hspi->Init.TxCRCInitializationPattern)); in HAL_SPI_Init()
291 assert_param(IS_SPI_CRC_INITIALIZATION_PATTERN(hspi->Init.RxCRCInitializationPattern)); in HAL_SPI_Init()
294 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
297 assert_param(IS_SPI_RDY_MASTER_MANAGEMENT(hspi->Init.ReadyMasterManagement)); in HAL_SPI_Init()
298 assert_param(IS_SPI_RDY_POLARITY(hspi->Init.ReadyPolarity)); in HAL_SPI_Init()
299 assert_param(IS_SPI_MASTER_RX_AUTOSUSP(hspi->Init.MasterReceiverAutoSusp)); in HAL_SPI_Init()
302 if ((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (hspi->Init.DataSize > SPI_DATASIZE_16BIT)) in HAL_SPI_Init()
308 packet_length = SPI_GetPacketSize(hspi); in HAL_SPI_Init()
309 if (((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (packet_length > SPI_LOWEND_FIFO_SIZE)) || in HAL_SPI_Init()
310 ((IS_SPI_FULL_INSTANCE(hspi->Instance)) && (packet_length > SPI_HIGHEND_FIFO_SIZE))) in HAL_SPI_Init()
315 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
318 if ((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (hspi->Init.CRCLength > SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Init()
324 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
326 crc_length = (hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) << SPI_CFG1_CRCSIZE_Pos; in HAL_SPI_Init()
330 crc_length = hspi->Init.CRCLength; in HAL_SPI_Init()
334 assert_param(IS_SPI_CRC_POLYNOMIAL_SIZE(hspi->Init.CRCPolynomial, crc_length)); in HAL_SPI_Init()
337 if ((hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) > (crc_length >> SPI_CFG1_CRCSIZE_Pos)) in HAL_SPI_Init()
344 crc_length = hspi->Init.DataSize << SPI_CFG1_CRCSIZE_Pos; in HAL_SPI_Init()
348 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
351 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
355 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
356 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
357 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
358 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
359 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
360 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
361 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
362 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
363 … hspi->SuspendCallback = HAL_SPI_SuspendCallback; /* Legacy weak SuspendCallback */ in HAL_SPI_Init()
365 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
367 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
371 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
374 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
378 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
381 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
385 crc_length = hspi->Instance->CFG1 & SPI_CFG1_CRCSIZE; in HAL_SPI_Init()
393 if ((hspi->Init.NSS == SPI_NSS_SOFT) && (((hspi->Init.Mode == SPI_MODE_MASTER) && \ in HAL_SPI_Init()
394 (hspi->Init.NSSPolarity == SPI_NSS_POLARITY_LOW)) || \ in HAL_SPI_Init()
395 ((hspi->Init.Mode == SPI_MODE_SLAVE) && \ in HAL_SPI_Init()
396 (hspi->Init.NSSPolarity == SPI_NSS_POLARITY_HIGH)))) in HAL_SPI_Init()
398 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSI); in HAL_SPI_Init()
402 …if (((hspi->Init.Mode & SPI_MODE_MASTER) == SPI_MODE_MASTER) && (hspi->Init.DataSize >= SPI_DATASI… in HAL_SPI_Init()
404 MODIFY_REG(hspi->Instance->CR1, SPI_CR1_MASRX, hspi->Init.MasterReceiverAutoSusp); in HAL_SPI_Init()
408 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_MASRX); in HAL_SPI_Init()
412 …WRITE_REG(hspi->Instance->CFG1, (hspi->Init.BaudRatePrescaler | hspi->Init.CRCCalculation | crc_le… in HAL_SPI_Init()
413 hspi->Init.FifoThreshold | hspi->Init.DataSize)); in HAL_SPI_Init()
416 WRITE_REG(hspi->Instance->CFG2, (hspi->Init.NSSPMode | hspi->Init.TIMode | in HAL_SPI_Init()
417 hspi->Init.NSSPolarity | hspi->Init.NSS | in HAL_SPI_Init()
418 hspi->Init.CLKPolarity | hspi->Init.CLKPhase | in HAL_SPI_Init()
419 hspi->Init.FirstBit | hspi->Init.Mode | in HAL_SPI_Init()
420 hspi->Init.MasterInterDataIdleness | hspi->Init.Direction | in HAL_SPI_Init()
421 hspi->Init.MasterSSIdleness | hspi->Init.IOSwap | in HAL_SPI_Init()
422 hspi->Init.ReadyMasterManagement | hspi->Init.ReadyPolarity)); in HAL_SPI_Init()
427 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
430 if (hspi->Init.TxCRCInitializationPattern == SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN) in HAL_SPI_Init()
432 SET_BIT(hspi->Instance->CR1, SPI_CR1_TCRCINI); in HAL_SPI_Init()
436 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_TCRCINI); in HAL_SPI_Init()
440 if (hspi->Init.RxCRCInitializationPattern == SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN) in HAL_SPI_Init()
442 SET_BIT(hspi->Instance->CR1, SPI_CR1_RCRCINI); in HAL_SPI_Init()
446 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_RCRCINI); in HAL_SPI_Init()
450 if (((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (crc_length == SPI_CRC_LENGTH_16BIT)) || in HAL_SPI_Init()
451 ((IS_SPI_FULL_INSTANCE(hspi->Instance)) && (crc_length == SPI_CRC_LENGTH_32BIT))) in HAL_SPI_Init()
454 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRC33_17); in HAL_SPI_Init()
456 WRITE_REG(hspi->Instance->CRCPOLY, hspi->Init.CRCPolynomial); in HAL_SPI_Init()
461 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_CRC33_17); in HAL_SPI_Init()
466 WRITE_REG(hspi->Instance->CRCPOLY, (hspi->Init.CRCPolynomial) | crc_poly_msb_mask); in HAL_SPI_Init()
472 if (hspi->Init.Mode == SPI_MODE_SLAVE) in HAL_SPI_Init()
475 MODIFY_REG(hspi->Instance->CFG1, SPI_CFG1_UDRCFG, SPI_CFG1_UDRCFG); in HAL_SPI_Init()
481 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
485 if ((hspi->Init.Mode & SPI_MODE_MASTER) == SPI_MODE_MASTER) in HAL_SPI_Init()
488 MODIFY_REG(hspi->Instance->CFG2, SPI_CFG2_AFCNTR, (hspi->Init.MasterKeepIOState)); in HAL_SPI_Init()
491 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
492 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
503 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
506 if (hspi == NULL) in HAL_SPI_DeInit()
512 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
514 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
517 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
520 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
522 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
526 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
529 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
532 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
533 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
536 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
547 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
550 UNUSED(hspi); in HAL_SPI_MspInit()
563 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
566 UNUSED(hspi); in HAL_SPI_MspDeInit()
585 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
593 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
598 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
603 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
607 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
611 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
615 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
619 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
623 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
627 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
631 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
635 hspi->SuspendCallback = pCallback; in HAL_SPI_RegisterCallback()
639 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
643 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
648 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
655 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
660 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
664 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
669 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
679 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
698 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
702 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
707 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
711 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
715 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
719 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
723 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
727 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
731 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
735 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
739 … hspi->SuspendCallback = HAL_SPI_SuspendCallback; /* Legacy weak SuspendCallback */ in HAL_SPI_UnRegisterCallback()
743 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
747 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
752 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
759 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
764 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
768 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
773 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
783 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
838 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, ui… in HAL_SPI_Transmit() argument
841 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_Transmit()
847 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit()
852 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
863 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
866 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
867 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
868 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit()
869 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
870 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
873 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit()
874 hspi->RxXferSize = (uint16_t) 0UL; in HAL_SPI_Transmit()
875 hspi->RxXferCount = (uint16_t) 0UL; in HAL_SPI_Transmit()
876 hspi->TxISR = NULL; in HAL_SPI_Transmit()
877 hspi->RxISR = NULL; in HAL_SPI_Transmit()
880 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
882 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
886 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit()
890 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit()
893 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
895 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit()
898 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit()
902 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Transmit()
905 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
908 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
910 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
911 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
912 hspi->TxXferCount--; in HAL_SPI_Transmit()
920 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
922 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
923 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
926 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
934 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
937 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
940 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
942 if ((hspi->TxXferCount > 1UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_01DATA)) in HAL_SPI_Transmit()
944 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
945 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
946 hspi->TxXferCount -= (uint16_t)2UL; in HAL_SPI_Transmit()
951 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
953 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
955 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
956 hspi->TxXferCount--; in HAL_SPI_Transmit()
965 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
967 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
968 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
971 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
981 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
984 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
986 if ((hspi->TxXferCount > 3UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_03DATA)) in HAL_SPI_Transmit()
988 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
989 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
990 hspi->TxXferCount -= (uint16_t)4UL; in HAL_SPI_Transmit()
992 … else if ((hspi->TxXferCount > 1UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_01DATA)) in HAL_SPI_Transmit()
995 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
997 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
999 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
1000 hspi->TxXferCount -= (uint16_t)2UL; in HAL_SPI_Transmit()
1004 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
1005 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
1006 hspi->TxXferCount--; in HAL_SPI_Transmit()
1015 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
1017 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
1018 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
1021 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1030 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
1032 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_Transmit()
1036 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
1038 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
1041 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1043 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
1062 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1067 init_max_data_in_fifo = (((uint16_t)(hspi->Init.FifoThreshold >> 5U) + 1U)); in HAL_SPI_Receive()
1069 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_Receive()
1073 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive()
1078 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1089 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1092 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1093 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1094 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1095 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1096 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1099 hspi->pTxBuffPtr = NULL; in HAL_SPI_Receive()
1100 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive()
1101 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive()
1102 hspi->RxISR = NULL; in HAL_SPI_Receive()
1103 hspi->TxISR = NULL; in HAL_SPI_Receive()
1106 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1108 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1112 SPI_2LINES_RX(hspi); in HAL_SPI_Receive()
1116 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive()
1119 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1121 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive()
1124 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive()
1128 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Receive()
1131 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1134 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1137 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1139 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1140 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_Receive()
1141 hspi->RxXferCount--; in HAL_SPI_Receive()
1144 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1146 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1147 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_Receive()
1148 hspi->RxXferCount--; in HAL_SPI_Receive()
1156 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1158 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1159 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1162 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1170 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1173 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1176 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1179 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1182 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1184 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1186 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1187 hspi->RxXferCount--; in HAL_SPI_Receive()
1190 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1193 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1195 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1197 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1199 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1201 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1203 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1204 hspi->RxXferCount -= (uint16_t)2UL; in HAL_SPI_Receive()
1207 else if ((hspi->RxXferCount == 1UL) && ((temp_sr_reg & SPI_SR_RXPLVL_0) != 0UL)) in HAL_SPI_Receive()
1210 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1212 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1214 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1215 hspi->RxXferCount--; in HAL_SPI_Receive()
1223 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1225 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1226 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1229 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1240 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1243 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1246 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1248 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1249 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1250 hspi->RxXferCount--; in HAL_SPI_Receive()
1253 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1255 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1256 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1257 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1258 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1259 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1260 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1261 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1262 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1263 hspi->RxXferCount -= (uint16_t)4UL; in HAL_SPI_Receive()
1266 else if ((hspi->RxXferCount < 4UL) && ((temp_sr_reg & SPI_SR_RXPLVL_Msk) != 0UL)) in HAL_SPI_Receive()
1268 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1269 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1270 hspi->RxXferCount--; in HAL_SPI_Receive()
1278 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1280 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1281 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1284 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1293 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1296 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1298 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_Receive()
1304 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1306 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1309 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1312 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1332 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t … in HAL_SPI_TransmitReceive() argument
1336 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_TransmitReceive()
1337 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_TransmitReceive()
1346 init_max_data_in_fifo = (((uint16_t)(hspi->Init.FifoThreshold >> 5U) + 1U)); in HAL_SPI_TransmitReceive()
1349 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1357 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive()
1368 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1371 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1372 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1373 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1374 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1375 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1376 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1377 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1378 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1381 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1382 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1385 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive()
1388 if (IS_SPI_FULL_INSTANCE(hspi->Instance)) in HAL_SPI_TransmitReceive()
1398 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive()
1400 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1402 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive()
1405 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive()
1409 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_TransmitReceive()
1417 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1420 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1421 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1422 hspi->TxXferCount --; in HAL_SPI_TransmitReceive()
1423 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1427 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1432 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1434 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1435 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1436 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1437 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1442 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1443 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1444 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1445 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1453 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1455 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1456 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1459 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1468 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1476 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1480 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1482 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1484 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1485 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1486 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1490 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1495 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1498 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1500 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1502 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1503 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1504 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1510 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1512 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1514 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1516 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1518 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1520 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1521 hspi->RxXferCount -= (uint16_t)2UL; in HAL_SPI_TransmitReceive()
1522 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1528 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1530 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1532 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1533 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1534 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1542 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1544 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1545 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1548 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1562 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1565 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1566 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1567 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1568 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1572 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1577 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1579 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1580 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1581 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1582 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1587 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1588 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1589 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1590 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1591 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1592 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1593 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1594 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1595 hspi->RxXferCount -= (uint16_t)4UL; in HAL_SPI_TransmitReceive()
1596 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1601 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1602 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1603 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1604 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1612 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1614 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1615 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1618 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1628 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1630 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_TransmitReceive()
1634 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1636 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1639 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1641 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1659 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1662 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1669 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1675 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1678 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1679 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1680 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_IT()
1681 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1682 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1685 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit_IT()
1686 hspi->RxXferSize = (uint16_t) 0UL; in HAL_SPI_Transmit_IT()
1687 hspi->RxXferCount = (uint16_t) 0UL; in HAL_SPI_Transmit_IT()
1688 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1691 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Transmit_IT()
1693 hspi->TxISR = SPI_TxISR_32BIT; in HAL_SPI_Transmit_IT()
1695 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1697 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1701 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1705 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1707 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1711 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit_IT()
1715 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit_IT()
1718 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1721 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1724 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_TXP | SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Transmit_IT()
1726 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit_IT()
1729 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit_IT()
1743 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1746 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive_IT()
1748 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1759 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1762 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1763 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1764 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1765 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1766 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1769 hspi->pTxBuffPtr = NULL; in HAL_SPI_Receive_IT()
1770 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive_IT()
1771 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive_IT()
1772 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1775 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Receive_IT()
1777 hspi->RxISR = SPI_RxISR_32BIT; in HAL_SPI_Receive_IT()
1779 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1781 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1785 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1789 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1791 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1795 SPI_2LINES_RX(hspi); in HAL_SPI_Receive_IT()
1803 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive_IT()
1806 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1809 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1812 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_RXP | SPI_IT_OVR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Receive_IT()
1814 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive_IT()
1817 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive_IT()
1832 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8… in HAL_SPI_TransmitReceive_IT() argument
1837 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_TransmitReceive_IT()
1841 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1843 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive_IT()
1854 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1857 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1858 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1859 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1860 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1861 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1862 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1863 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1864 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1865 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1868 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_TransmitReceive_IT()
1870 hspi->TxISR = SPI_TxISR_32BIT; in HAL_SPI_TransmitReceive_IT()
1871 hspi->RxISR = SPI_RxISR_32BIT; in HAL_SPI_TransmitReceive_IT()
1873 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1875 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1876 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1880 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1881 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1885 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive_IT()
1888 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive_IT()
1891 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1894 while ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (tmp_TxXferCount != 0UL)) in HAL_SPI_TransmitReceive_IT()
1897 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_IT()
1899 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1900 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive_IT()
1901 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1902 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1905 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1908 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1910 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1912 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive_IT()
1913 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1914 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1919 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1920 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive_IT()
1921 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1922 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1927 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1930 …__HAL_SPI_ENABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_DXP | SPI_IT_UDR | SPI_IT_OVR | SPI_IT_FRE | SPI_IT… in HAL_SPI_TransmitReceive_IT()
1932 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive_IT()
1935 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive_IT()
1952 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
1957 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
1959 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
1970 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
1973 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
1974 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
1975 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_DMA()
1976 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
1977 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
1980 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit_DMA()
1981 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
1982 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
1983 hspi->RxXferSize = (uint16_t)0UL; in HAL_SPI_Transmit_DMA()
1984 hspi->RxXferCount = (uint16_t)0UL; in HAL_SPI_Transmit_DMA()
1987 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
1989 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
1993 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit_DMA()
1997 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmatx->Init.SrcDataWidth != DMA_SRC_DA… in HAL_SPI_Transmit_DMA()
1998 (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ in HAL_SPI_Transmit_DMA()
1999 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWI… in HAL_SPI_Transmit_DMA()
2002 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2007 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_DMA()
2009 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_HALFWORD) in HAL_SPI_Transmit_DMA()
2011 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Transmit_DMA()
2013 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_Transmit_DMA()
2015 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_Transmit_DMA()
2018 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Transmit_DMA()
2020 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_Transmit_DMA()
2022 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Transmit_DMA()
2031 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
2034 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
2037 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
2040 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
2043 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_Transmit_DMA()
2045 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_DMA()
2047 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
2049 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Transmit_DMA()
2051 hspi->TxXferCount = Size * 2U; in HAL_SPI_Transmit_DMA()
2055 hspi->TxXferCount = Size * 4U; in HAL_SPI_Transmit_DMA()
2059 if ((hspi->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_Transmit_DMA()
2061 if (hspi->hdmatx->LinkedListQueue != NULL) in HAL_SPI_Transmit_DMA()
2064 … hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->TxXferCount; in HAL_SPI_Transmit_DMA()
2067 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hspi->pTx… in HAL_SPI_Transmit_DMA()
2070 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_Transmit_DMA()
2072 status = HAL_DMAEx_List_Start_IT(hspi->hdmatx); in HAL_SPI_Transmit_DMA()
2081 …status = HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance->TXD… in HAL_SPI_Transmit_DMA()
2082 hspi->TxXferCount); in HAL_SPI_Transmit_DMA()
2089 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
2090 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit_DMA()
2093 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2099 if (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR) in HAL_SPI_Transmit_DMA()
2101 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_Transmit_DMA()
2105 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit_DMA()
2109 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_Transmit_DMA()
2112 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Transmit_DMA()
2115 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
2117 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit_DMA()
2120 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit_DMA()
2124 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2138 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
2143 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive_DMA()
2146 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2148 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2154 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2159 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2162 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2163 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2164 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2165 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2166 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2169 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2170 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2171 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive_DMA()
2172 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive_DMA()
2175 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2177 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2181 SPI_2LINES_RX(hspi); in HAL_SPI_Receive_DMA()
2185 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmarx->Init.DestDataWidth != DMA_DEST_D… in HAL_SPI_Receive_DMA()
2186 (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ in HAL_SPI_Receive_DMA()
2187 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAW… in HAL_SPI_Receive_DMA()
2190 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2195 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_Receive_DMA()
2198 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2200 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_HALFWORD) in HAL_SPI_Receive_DMA()
2202 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Receive_DMA()
2204 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_Receive_DMA()
2206 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_Receive_DMA()
2209 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Receive_DMA()
2211 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_Receive_DMA()
2213 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Receive_DMA()
2222 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2225 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2228 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2231 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2233 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2235 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2237 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Receive_DMA()
2239 hspi->RxXferCount = Size * 2U; in HAL_SPI_Receive_DMA()
2243 hspi->RxXferCount = Size * 4U; in HAL_SPI_Receive_DMA()
2247 if ((hspi->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_Receive_DMA()
2249 if (hspi->hdmarx->LinkedListQueue != NULL) in HAL_SPI_Receive_DMA()
2252 … hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->RxXferCount; in HAL_SPI_Receive_DMA()
2255 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_Receive_DMA()
2258 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hspi->pRx… in HAL_SPI_Receive_DMA()
2260 status = HAL_DMAEx_List_Start_IT(hspi->hdmarx); in HAL_SPI_Receive_DMA()
2269 …status = HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->RXDR, (uint32_t)hspi->pRxBuffPt… in HAL_SPI_Receive_DMA()
2270 hspi->RxXferCount); in HAL_SPI_Receive_DMA()
2277 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2278 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive_DMA()
2281 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2287 if (hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) in HAL_SPI_Receive_DMA()
2289 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_Receive_DMA()
2293 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive_DMA()
2297 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_Receive_DMA()
2300 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_OVR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Receive_DMA()
2303 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2305 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive_DMA()
2308 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive_DMA()
2312 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2327 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint… in HAL_SPI_TransmitReceive_DMA() argument
2333 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2335 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive_DMA()
2346 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2349 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2350 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2351 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2352 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2353 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2354 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2355 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2356 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2359 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2360 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2363 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive_DMA()
2366 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2369 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmarx->Init.DestDataWidth != DMA_DEST_D… in HAL_SPI_TransmitReceive_DMA()
2370 (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ in HAL_SPI_TransmitReceive_DMA()
2371 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAW… in HAL_SPI_TransmitReceive_DMA()
2375 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2380 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2382 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2384 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2386 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2388 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_TransmitReceive_DMA()
2390 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2392 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2394 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2396 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_TransmitReceive_DMA()
2399 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2401 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2403 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2405 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2407 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2416 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2417 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2420 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2423 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2425 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2427 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2429 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2431 hspi->RxXferCount = Size * 2U; in HAL_SPI_TransmitReceive_DMA()
2435 hspi->RxXferCount = Size * 4U; in HAL_SPI_TransmitReceive_DMA()
2438 if ((hspi->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_TransmitReceive_DMA()
2440 if (hspi->hdmarx->LinkedListQueue != NULL) in HAL_SPI_TransmitReceive_DMA()
2443 … hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->RxXferCount; in HAL_SPI_TransmitReceive_DMA()
2446 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_TransmitReceive_DMA()
2449 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hspi->pRx… in HAL_SPI_TransmitReceive_DMA()
2451 status = HAL_DMAEx_List_Start_IT(hspi->hdmarx); in HAL_SPI_TransmitReceive_DMA()
2460 …status = HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->RXDR, (uint32_t)hspi->pRxBuffPt… in HAL_SPI_TransmitReceive_DMA()
2461 hspi->RxXferCount); in HAL_SPI_TransmitReceive_DMA()
2468 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2469 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2472 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2478 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2482 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2483 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2484 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2487 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2489 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2491 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2493 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2495 hspi->TxXferCount = Size * 2U; in HAL_SPI_TransmitReceive_DMA()
2499 hspi->TxXferCount = Size * 4U; in HAL_SPI_TransmitReceive_DMA()
2503 if ((hspi->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_TransmitReceive_DMA()
2505 if (hspi->hdmatx->LinkedListQueue != NULL) in HAL_SPI_TransmitReceive_DMA()
2508 … hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->TxXferCount; in HAL_SPI_TransmitReceive_DMA()
2511 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hspi->pTx… in HAL_SPI_TransmitReceive_DMA()
2514 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_TransmitReceive_DMA()
2516 status = HAL_DMAEx_List_Start_IT(hspi->hdmatx); in HAL_SPI_TransmitReceive_DMA()
2525 …status = HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance->TXD… in HAL_SPI_TransmitReceive_DMA()
2526 hspi->TxXferCount); in HAL_SPI_TransmitReceive_DMA()
2533 (void)HAL_DMA_Abort(hspi->hdmarx); in HAL_SPI_TransmitReceive_DMA()
2536 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2537 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2540 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2545 …if ((hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) && (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCU… in HAL_SPI_TransmitReceive_DMA()
2547 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_TransmitReceive_DMA()
2551 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive_DMA()
2555 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2558 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_OVR | SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_TransmitReceive_DMA()
2561 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2563 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive_DMA()
2566 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive_DMA()
2570 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2588 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2595 __HAL_LOCK(hspi); in HAL_SPI_Abort()
2598 hspi->State = HAL_SPI_STATE_ABORT; in HAL_SPI_Abort()
2605 if (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)) in HAL_SPI_Abort()
2608 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_Abort()
2614 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2617 } while (HAL_IS_BIT_SET(hspi->Instance->IER, SPI_IT_EOT)); in HAL_SPI_Abort()
2620 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSUSP); in HAL_SPI_Abort()
2626 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2629 } while (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)); in HAL_SPI_Abort()
2632 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_Abort()
2638 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2641 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_SUSP)); in HAL_SPI_Abort()
2645 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN)) in HAL_SPI_Abort()
2647 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2650 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2653 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2655 if (HAL_DMA_GetError(hspi->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SPI_Abort()
2657 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2664 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort()
2666 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2669 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2672 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2674 if (HAL_DMA_GetError(hspi->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SPI_Abort()
2676 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2683 SPI_AbortTransfer(hspi); in HAL_SPI_Abort()
2686 if (HAL_IS_BIT_SET(hspi->ErrorCode, HAL_SPI_ERROR_ABORT)) in HAL_SPI_Abort()
2694 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2698 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2701 __HAL_UNLOCK(hspi); in HAL_SPI_Abort()
2721 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2729 hspi->State = HAL_SPI_STATE_ABORT; in HAL_SPI_Abort_IT()
2736 if (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)) in HAL_SPI_Abort_IT()
2739 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_Abort_IT()
2745 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2748 } while (HAL_IS_BIT_SET(hspi->Instance->IER, SPI_IT_EOT)); in HAL_SPI_Abort_IT()
2751 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSUSP); in HAL_SPI_Abort_IT()
2757 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2760 } while (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)); in HAL_SPI_Abort_IT()
2763 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_Abort_IT()
2769 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2772 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_SUSP)); in HAL_SPI_Abort_IT()
2778 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2780 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN)) in HAL_SPI_Abort_IT()
2783 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2788 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2790 if (HAL_DMA_GetError(hspi->hdmatx) == HAL_DMA_ERROR_NO_XFER) in HAL_SPI_Abort_IT()
2793 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2799 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2803 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2805 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort_IT()
2808 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2813 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2815 if (HAL_DMA_GetError(hspi->hdmarx) == HAL_DMA_ERROR_NO_XFER) in HAL_SPI_Abort_IT()
2818 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2824 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2832 SPI_AbortTransfer(hspi); in HAL_SPI_Abort_IT()
2835 if (HAL_IS_BIT_SET(hspi->ErrorCode, HAL_SPI_ERROR_ABORT)) in HAL_SPI_Abort_IT()
2843 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2847 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2851 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2853 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2867 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2870 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAPause()
2882 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2885 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAResume()
2897 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2900 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAStop()
2911 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2913 uint32_t itsource = hspi->Instance->IER; in HAL_SPI_IRQHandler()
2914 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2916 uint32_t cfg1 = hspi->Instance->CFG1; in HAL_SPI_IRQHandler()
2919 HAL_SPI_StateTypeDef State = hspi->State; in HAL_SPI_IRQHandler()
2921 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_IRQHandler()
2928 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_IRQHandler()
2932 hspi->SuspendCallback(hspi); in HAL_SPI_IRQHandler()
2934 HAL_SPI_SuspendCallback(hspi); in HAL_SPI_IRQHandler()
2943 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2944 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2952 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2960 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2973 __HAL_SPI_CLEAR_EOTFLAG(hspi); in HAL_SPI_IRQHandler()
2974 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in HAL_SPI_IRQHandler()
2975 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_IRQHandler()
2978 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_IRQHandler()
2981 if (HAL_IS_BIT_CLR(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN)) in HAL_SPI_IRQHandler()
2984 while (hspi->RxXferCount != 0UL) in HAL_SPI_IRQHandler()
2987 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_IRQHandler()
2989 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
2990 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_IRQHandler()
2993 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_IRQHandler()
2996 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_IRQHandler()
2998 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
3000 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_IRQHandler()
3005 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
3006 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_IRQHandler()
3009 hspi->RxXferCount--; in HAL_SPI_IRQHandler()
3014 SPI_CloseTransfer(hspi); in HAL_SPI_IRQHandler()
3016 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
3017 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
3020 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3022 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3031 hspi->TxRxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3035 hspi->RxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3039 hspi->TxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3045 HAL_SPI_TxRxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3049 HAL_SPI_RxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3053 HAL_SPI_TxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3070 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
3071 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
3077 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
3078 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
3084 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
3085 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
3091 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_UDR); in HAL_SPI_IRQHandler()
3092 __HAL_SPI_CLEAR_UDRFLAG(hspi); in HAL_SPI_IRQHandler()
3095 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
3098 __HAL_SPI_DISABLE(hspi); in HAL_SPI_IRQHandler()
3101 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_RXP | SPI_IT_TXP | SPI_IT_MODF | in HAL_SPI_IRQHandler()
3108 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in HAL_SPI_IRQHandler()
3111 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
3115 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
3116 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
3118 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
3122 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
3126 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
3127 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
3129 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
3136 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
3140 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3142 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3156 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_TxCpltCallback() argument
3159 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
3172 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_RxCpltCallback() argument
3175 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
3188 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_TxRxCpltCallback() argument
3191 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
3204 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 … in HAL_SPI_TxHalfCpltCallback() argument
3207 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
3220 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 … in HAL_SPI_RxHalfCpltCallback() argument
3223 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
3236 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.1… in HAL_SPI_TxRxHalfCpltCallback() argument
3239 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
3252 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_ErrorCallback() argument
3255 UNUSED(hspi); in HAL_SPI_ErrorCallback()
3270 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_AbortCpltCallback() argument
3273 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
3285 __weak void HAL_SPI_SuspendCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_SuspendCallback() argument
3288 UNUSED(hspi); in HAL_SPI_SuspendCallback()
3320 HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
3323 return hspi->State; in HAL_SPI_GetState()
3332 uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3335 return hspi->ErrorCode; in HAL_SPI_GetError()
3359 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATransmitCplt() local
3361 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMATransmitCplt()
3363 if (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR) in SPI_DMATransmitCplt()
3366 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3368 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3374 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMATransmitCplt()
3387 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAReceiveCplt() local
3389 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMAReceiveCplt()
3391 if (hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) in SPI_DMAReceiveCplt()
3394 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3396 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3402 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMAReceiveCplt()
3415 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATransmitReceiveCplt() local
3417 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMATransmitReceiveCplt()
3419 if ((hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) && in SPI_DMATransmitReceiveCplt()
3420 (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR)) in SPI_DMATransmitReceiveCplt()
3423 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3425 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3431 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMATransmitReceiveCplt()
3444 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfTransmitCplt() local
3448 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3450 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3462 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfReceiveCplt() local
3466 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3468 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3480 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfTransmitReceiveCplt() local
3484 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3486 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3498 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAError() local
3504 SPI_CloseTransfer(hspi); in SPI_DMAError()
3506 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3507 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3509 hspi->ErrorCallback(hspi); in SPI_DMAError()
3511 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3524 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAAbortOnError() local
3525 hspi->RxXferCount = (uint16_t) 0UL; in SPI_DMAAbortOnError()
3526 hspi->TxXferCount = (uint16_t) 0UL; in SPI_DMAAbortOnError()
3529 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAAbortOnError()
3532 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3534 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3548 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATxAbortCallback() local
3550 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3553 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3555 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3562 SPI_AbortTransfer(hspi); in SPI_DMATxAbortCallback()
3565 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3569 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3571 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3585 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMARxAbortCallback() local
3587 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3590 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3592 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3599 SPI_AbortTransfer(hspi); in SPI_DMARxAbortCallback()
3602 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3606 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3608 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3618 static void SPI_RxISR_8BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3621 *((uint8_t *)hspi->pRxBuffPtr) = (*(__IO uint8_t *)&hspi->Instance->RXDR); in SPI_RxISR_8BIT()
3622 hspi->pRxBuffPtr += sizeof(uint8_t); in SPI_RxISR_8BIT()
3623 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3626 if (hspi->RxXferCount == 0UL) in SPI_RxISR_8BIT()
3629 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_8BIT()
3640 static void SPI_RxISR_16BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3644 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in SPI_RxISR_16BIT()
3646 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in SPI_RxISR_16BIT()
3648 *((uint16_t *)hspi->pRxBuffPtr) = (*(__IO uint16_t *)&hspi->Instance->RXDR); in SPI_RxISR_16BIT()
3650 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3651 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3654 if (hspi->RxXferCount == 0UL) in SPI_RxISR_16BIT()
3657 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_16BIT()
3668 static void SPI_RxISR_32BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_32BIT() argument
3671 *((uint32_t *)hspi->pRxBuffPtr) = (*(__IO uint32_t *)&hspi->Instance->RXDR); in SPI_RxISR_32BIT()
3672 hspi->pRxBuffPtr += sizeof(uint32_t); in SPI_RxISR_32BIT()
3673 hspi->RxXferCount--; in SPI_RxISR_32BIT()
3676 if (hspi->RxXferCount == 0UL) in SPI_RxISR_32BIT()
3679 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_32BIT()
3690 static void SPI_TxISR_8BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3693 *(__IO uint8_t *)&hspi->Instance->TXDR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3694 hspi->pTxBuffPtr += sizeof(uint8_t); in SPI_TxISR_8BIT()
3695 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3698 if (hspi->TxXferCount == 0UL) in SPI_TxISR_8BIT()
3701 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_8BIT()
3711 static void SPI_TxISR_16BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3715 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in SPI_TxISR_16BIT()
3717 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3719 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3721 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3722 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3725 if (hspi->TxXferCount == 0UL) in SPI_TxISR_16BIT()
3728 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_16BIT()
3738 static void SPI_TxISR_32BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_32BIT() argument
3741 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in SPI_TxISR_32BIT()
3742 hspi->pTxBuffPtr += sizeof(uint32_t); in SPI_TxISR_32BIT()
3743 hspi->TxXferCount--; in SPI_TxISR_32BIT()
3746 if (hspi->TxXferCount == 0UL) in SPI_TxISR_32BIT()
3749 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_32BIT()
3759 static void SPI_AbortTransfer(SPI_HandleTypeDef *hspi) in SPI_AbortTransfer() argument
3762 __HAL_SPI_DISABLE(hspi); in SPI_AbortTransfer()
3765 …__HAL_SPI_DISABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_TXP | SPI_IT_RXP | SPI_IT_DXP | SPI_IT_UDR | SPI_I… in SPI_AbortTransfer()
3769 __HAL_SPI_CLEAR_EOTFLAG(hspi); in SPI_AbortTransfer()
3770 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in SPI_AbortTransfer()
3773 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in SPI_AbortTransfer()
3776 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_AbortTransfer()
3777 __HAL_SPI_CLEAR_UDRFLAG(hspi); in SPI_AbortTransfer()
3778 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_AbortTransfer()
3779 __HAL_SPI_CLEAR_MODFFLAG(hspi); in SPI_AbortTransfer()
3780 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in SPI_AbortTransfer()
3783 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_AbortTransfer()
3786 hspi->TxXferCount = (uint16_t)0UL; in SPI_AbortTransfer()
3787 hspi->RxXferCount = (uint16_t)0UL; in SPI_AbortTransfer()
3798 static void SPI_CloseTransfer(SPI_HandleTypeDef *hspi) in SPI_CloseTransfer() argument
3800 uint32_t itflag = hspi->Instance->SR; in SPI_CloseTransfer()
3802 __HAL_SPI_CLEAR_EOTFLAG(hspi); in SPI_CloseTransfer()
3803 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in SPI_CloseTransfer()
3806 __HAL_SPI_DISABLE(hspi); in SPI_CloseTransfer()
3809 …__HAL_SPI_DISABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_TXP | SPI_IT_RXP | SPI_IT_DXP | SPI_IT_UDR | SPI_I… in SPI_CloseTransfer()
3813 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in SPI_CloseTransfer()
3816 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in SPI_CloseTransfer()
3820 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_UDR); in SPI_CloseTransfer()
3821 __HAL_SPI_CLEAR_UDRFLAG(hspi); in SPI_CloseTransfer()
3826 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in SPI_CloseTransfer()
3830 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in SPI_CloseTransfer()
3831 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTransfer()
3836 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_CloseTransfer()
3840 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseTransfer()
3841 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseTransfer()
3850 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in SPI_CloseTransfer()
3851 __HAL_SPI_CLEAR_MODFFLAG(hspi); in SPI_CloseTransfer()
3857 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in SPI_CloseTransfer()
3858 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_CloseTransfer()
3861 hspi->TxXferCount = (uint16_t)0UL; in SPI_CloseTransfer()
3862 hspi->RxXferCount = (uint16_t)0UL; in SPI_CloseTransfer()
3875 static HAL_StatusTypeDef SPI_WaitOnFlagUntilTimeout(const SPI_HandleTypeDef *hspi, uint32_t Flag, F… in SPI_WaitOnFlagUntilTimeout() argument
3879 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) == Status) in SPI_WaitOnFlagUntilTimeout()
3896 static uint32_t SPI_GetPacketSize(const SPI_HandleTypeDef *hspi) in SPI_GetPacketSize() argument
3898 uint32_t fifo_threashold = (hspi->Init.FifoThreshold >> SPI_CFG1_FTHLV_Pos) + 1UL; in SPI_GetPacketSize()
3899 uint32_t data_size = (hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) + 1UL; in SPI_GetPacketSize()