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 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
258 assert_param(IS_SPI_FIFOTHRESHOLD(hspi->Init.FifoThreshold)); in HAL_SPI_Init()
259 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
260 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
261 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
262 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
263 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
264 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
266 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
267 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
270 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
271 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
273 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
274 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
275 assert_param(IS_SPI_CRC_INITIALIZATION_PATTERN(hspi->Init.TxCRCInitializationPattern)); in HAL_SPI_Init()
276 assert_param(IS_SPI_CRC_INITIALIZATION_PATTERN(hspi->Init.RxCRCInitializationPattern)); in HAL_SPI_Init()
279 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
283 if ((!IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) && (hspi->Init.DataSize > SPI_DATASIZE_16BIT)) in HAL_SPI_Init()
289 packet_length = SPI_GetPacketSize(hspi); in HAL_SPI_Init()
290 if (((!IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) && (packet_length > SPI_LOWEND_FIFO_SIZE)) || in HAL_SPI_Init()
291 ((IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) && (packet_length > SPI_HIGHEND_FIFO_SIZE))) in HAL_SPI_Init()
297 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
300 if ((!IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) && (hspi->Init.CRCLength > SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Init()
306 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
308 crc_length = (hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) << SPI_CFG1_CRCSIZE_Pos; in HAL_SPI_Init()
312 crc_length = hspi->Init.CRCLength; in HAL_SPI_Init()
316 assert_param(IS_SPI_CRC_POLYNOMIAL_SIZE(hspi->Init.CRCPolynomial, crc_length)); in HAL_SPI_Init()
319 if ((hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) > (crc_length >> SPI_CFG1_CRCSIZE_Pos)) in HAL_SPI_Init()
326 crc_length = hspi->Init.DataSize << SPI_CFG1_CRCSIZE_Pos; in HAL_SPI_Init()
330 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
333 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
337 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
338 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
339 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
340 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
341 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
342 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
343 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
344 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
345 … hspi->SuspendCallback = HAL_SPI_SuspendCallback; /* Legacy weak SuspendCallback */ in HAL_SPI_Init()
347 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
349 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
353 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
356 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
360 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
363 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
367 crc_length = hspi->Instance->CFG1 & SPI_CFG1_CRCSIZE; in HAL_SPI_Init()
375 if ((hspi->Init.NSS == SPI_NSS_SOFT) && (((hspi->Init.Mode == SPI_MODE_MASTER) && \ in HAL_SPI_Init()
376 (hspi->Init.NSSPolarity == SPI_NSS_POLARITY_LOW)) || \ in HAL_SPI_Init()
377 ((hspi->Init.Mode == SPI_MODE_SLAVE) && \ in HAL_SPI_Init()
378 (hspi->Init.NSSPolarity == SPI_NSS_POLARITY_HIGH)))) in HAL_SPI_Init()
380 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSI); in HAL_SPI_Init()
384 …if (((hspi->Init.Mode & SPI_MODE_MASTER) == SPI_MODE_MASTER) && (hspi->Init.DataSize >= SPI_DATASI… in HAL_SPI_Init()
386 MODIFY_REG(hspi->Instance->CR1, SPI_CR1_MASRX, hspi->Init.MasterReceiverAutoSusp); in HAL_SPI_Init()
390 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_MASRX); in HAL_SPI_Init()
394 …WRITE_REG(hspi->Instance->CFG1, (hspi->Init.BaudRatePrescaler | hspi->Init.CRCCalculation | crc_le… in HAL_SPI_Init()
395 hspi->Init.FifoThreshold | hspi->Init.DataSize)); in HAL_SPI_Init()
398 WRITE_REG(hspi->Instance->CFG2, (hspi->Init.NSSPMode | hspi->Init.TIMode | in HAL_SPI_Init()
399 hspi->Init.NSSPolarity | hspi->Init.NSS | in HAL_SPI_Init()
400 hspi->Init.CLKPolarity | hspi->Init.CLKPhase | in HAL_SPI_Init()
401 hspi->Init.FirstBit | hspi->Init.Mode | in HAL_SPI_Init()
402 hspi->Init.MasterInterDataIdleness | hspi->Init.Direction | in HAL_SPI_Init()
403 hspi->Init.MasterSSIdleness | hspi->Init.IOSwap)); in HAL_SPI_Init()
408 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
411 if (hspi->Init.TxCRCInitializationPattern == SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN) in HAL_SPI_Init()
413 SET_BIT(hspi->Instance->CR1, SPI_CR1_TCRCINI); in HAL_SPI_Init()
417 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_TCRCINI); in HAL_SPI_Init()
421 if (hspi->Init.RxCRCInitializationPattern == SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN) in HAL_SPI_Init()
423 SET_BIT(hspi->Instance->CR1, SPI_CR1_RCRCINI); in HAL_SPI_Init()
427 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_RCRCINI); in HAL_SPI_Init()
431 if (((!IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) && (crc_length == SPI_CRC_LENGTH_16BIT)) || in HAL_SPI_Init()
432 ((IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) && (crc_length == SPI_CRC_LENGTH_32BIT))) in HAL_SPI_Init()
435 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRC33_17); in HAL_SPI_Init()
437 WRITE_REG(hspi->Instance->CRCPOLY, hspi->Init.CRCPolynomial); in HAL_SPI_Init()
442 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_CRC33_17); in HAL_SPI_Init()
447 WRITE_REG(hspi->Instance->CRCPOLY, (hspi->Init.CRCPolynomial) | crc_poly_msb_mask); in HAL_SPI_Init()
453 if (hspi->Init.Mode == SPI_MODE_SLAVE) in HAL_SPI_Init()
457 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_DISABLE) in HAL_SPI_Init()
460 MODIFY_REG(hspi->Instance->CFG1, SPI_CFG1_UDRDET, SPI_CFG1_UDRDET_0); in HAL_SPI_Init()
462 MODIFY_REG(hspi->Instance->CFG1, SPI_CFG1_UDRCFG, SPI_CFG1_UDRCFG_1); in HAL_SPI_Init()
467 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
471 if ((hspi->Init.Mode & SPI_MODE_MASTER) == SPI_MODE_MASTER) in HAL_SPI_Init()
474 MODIFY_REG(hspi->Instance->CFG2, SPI_CFG2_AFCNTR, (hspi->Init.MasterKeepIOState)); in HAL_SPI_Init()
477 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
478 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
489 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
492 if (hspi == NULL) in HAL_SPI_DeInit()
498 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
500 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
503 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
506 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
508 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
512 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
515 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
518 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
519 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
522 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
533 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
536 UNUSED(hspi); in HAL_SPI_MspInit()
549 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
552 UNUSED(hspi); in HAL_SPI_MspDeInit()
571 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
579 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
584 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
589 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
593 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
597 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
601 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
605 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
609 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
613 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
617 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
621 hspi->SuspendCallback = pCallback; in HAL_SPI_RegisterCallback()
625 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
629 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
634 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
641 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
646 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
650 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
655 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
665 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
684 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
688 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
693 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
697 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
701 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
705 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
709 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
713 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
717 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
721 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
725 … hspi->SuspendCallback = HAL_SPI_SuspendCallback; /* Legacy weak SuspendCallback */ in HAL_SPI_UnRegisterCallback()
729 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
733 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
738 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
745 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
750 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
754 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
759 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
769 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
824 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, ui… in HAL_SPI_Transmit() argument
827 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_Transmit()
833 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit()
838 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
849 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
852 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
853 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
854 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit()
855 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
856 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
859 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit()
860 hspi->RxXferSize = (uint16_t) 0UL; in HAL_SPI_Transmit()
861 hspi->RxXferCount = (uint16_t) 0UL; in HAL_SPI_Transmit()
862 hspi->TxISR = NULL; in HAL_SPI_Transmit()
863 hspi->RxISR = NULL; in HAL_SPI_Transmit()
866 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
868 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
872 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit()
876 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit()
879 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
881 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit()
884 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit()
888 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_Transmit()
891 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
894 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
896 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
897 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
898 hspi->TxXferCount--; in HAL_SPI_Transmit()
906 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
908 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
909 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
912 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
920 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
923 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
926 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
928 if ((hspi->TxXferCount > 1UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_01DATA)) in HAL_SPI_Transmit()
930 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
931 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
932 hspi->TxXferCount -= (uint16_t)2UL; in HAL_SPI_Transmit()
937 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
939 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
941 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
942 hspi->TxXferCount--; in HAL_SPI_Transmit()
951 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
953 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
954 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
957 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
967 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
970 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
972 if ((hspi->TxXferCount > 3UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_03DATA)) in HAL_SPI_Transmit()
974 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
975 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
976 hspi->TxXferCount -= (uint16_t)4UL; in HAL_SPI_Transmit()
978 … else if ((hspi->TxXferCount > 1UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_01DATA)) in HAL_SPI_Transmit()
981 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
983 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
985 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
986 hspi->TxXferCount -= (uint16_t)2UL; in HAL_SPI_Transmit()
990 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
991 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
992 hspi->TxXferCount--; in HAL_SPI_Transmit()
1001 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
1003 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
1004 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
1007 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1016 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
1018 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_Transmit()
1022 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
1024 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
1027 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1029 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
1048 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1053 init_max_data_in_fifo = (((uint16_t)(hspi->Init.FifoThreshold >> 5U) + 1U)); in HAL_SPI_Receive()
1055 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_Receive()
1059 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive()
1064 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1075 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1078 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1079 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1080 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1081 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1082 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1085 hspi->pTxBuffPtr = NULL; in HAL_SPI_Receive()
1086 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive()
1087 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive()
1088 hspi->RxISR = NULL; in HAL_SPI_Receive()
1089 hspi->TxISR = NULL; in HAL_SPI_Receive()
1092 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1094 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1098 SPI_2LINES_RX(hspi); in HAL_SPI_Receive()
1102 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive()
1105 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1107 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive()
1110 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive()
1114 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_Receive()
1117 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1120 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1123 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1125 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1126 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_Receive()
1127 hspi->RxXferCount--; in HAL_SPI_Receive()
1130 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1132 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1133 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_Receive()
1134 hspi->RxXferCount--; in HAL_SPI_Receive()
1142 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1144 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1145 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1148 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1156 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1159 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1162 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1165 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1168 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1170 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1172 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1173 hspi->RxXferCount--; in HAL_SPI_Receive()
1176 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1179 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1181 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1183 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1185 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1187 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1189 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1190 hspi->RxXferCount -= (uint16_t)2UL; in HAL_SPI_Receive()
1193 else if ((hspi->RxXferCount == 1UL) && ((temp_sr_reg & SPI_SR_RXPLVL_0) != 0UL)) in HAL_SPI_Receive()
1196 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1198 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1200 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1201 hspi->RxXferCount--; in HAL_SPI_Receive()
1209 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1211 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1212 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1215 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1226 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1229 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1232 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1234 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1235 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1236 hspi->RxXferCount--; in HAL_SPI_Receive()
1239 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1241 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1242 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1243 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1244 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1245 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1246 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1247 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1248 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1249 hspi->RxXferCount -= (uint16_t)4UL; in HAL_SPI_Receive()
1252 else if ((hspi->RxXferCount < 4UL) && ((temp_sr_reg & SPI_SR_RXPLVL_Msk) != 0UL)) in HAL_SPI_Receive()
1254 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1255 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1256 hspi->RxXferCount--; in HAL_SPI_Receive()
1264 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1266 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1267 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1270 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1279 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1282 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1284 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_Receive()
1290 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1292 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1295 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1298 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1318 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t … in HAL_SPI_TransmitReceive() argument
1322 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_TransmitReceive()
1323 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_TransmitReceive()
1332 init_max_data_in_fifo = (((uint16_t)(hspi->Init.FifoThreshold >> 5U) + 1U)); in HAL_SPI_TransmitReceive()
1335 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1343 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive()
1354 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1357 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1358 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1359 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1360 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1361 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1362 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1363 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1364 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1367 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1368 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1371 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive()
1374 if (IS_SPI_HIGHEND_INSTANCE(hspi->Instance)) in HAL_SPI_TransmitReceive()
1384 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive()
1386 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1388 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive()
1391 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive()
1395 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive()
1403 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1406 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1407 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1408 hspi->TxXferCount --; in HAL_SPI_TransmitReceive()
1409 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1413 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1418 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1420 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1421 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1422 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1423 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1428 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1429 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1430 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1431 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1439 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1441 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1442 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1445 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1454 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1462 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1466 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1468 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1470 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1471 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1472 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1476 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1481 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1484 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1486 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1488 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1489 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1490 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1496 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1498 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1500 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1502 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1504 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1506 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1507 hspi->RxXferCount -= (uint16_t)2UL; in HAL_SPI_TransmitReceive()
1508 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1514 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1516 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1518 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1519 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1520 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1528 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1530 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1531 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1534 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1548 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1551 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1552 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1553 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1554 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1558 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1563 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1565 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1566 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1567 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1568 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1573 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1574 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1575 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1576 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1577 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1578 hspi->pRxBuffPtr += sizeof(uint8_t); 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 -= (uint16_t)4UL; 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 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1590 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1598 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1600 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1601 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1604 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1614 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1616 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_TransmitReceive()
1620 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1622 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1625 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1627 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1645 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1648 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1655 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1661 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1664 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1665 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1666 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_IT()
1667 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1668 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1671 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit_IT()
1672 hspi->RxXferSize = (uint16_t) 0UL; in HAL_SPI_Transmit_IT()
1673 hspi->RxXferCount = (uint16_t) 0UL; in HAL_SPI_Transmit_IT()
1674 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1677 hspi->Reload.Requested = 0UL; in HAL_SPI_Transmit_IT()
1678 hspi->Reload.pTxBuffPtr = NULL; in HAL_SPI_Transmit_IT()
1679 hspi->Reload.TxXferSize = NULL; in HAL_SPI_Transmit_IT()
1683 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_Transmit_IT()
1685 hspi->TxISR = SPI_TxISR_32BIT; in HAL_SPI_Transmit_IT()
1687 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1689 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1693 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1697 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1699 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1703 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit_IT()
1707 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit_IT()
1710 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1713 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1716 …__HAL_SPI_ENABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_TXP | SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF | SPI_I… in HAL_SPI_Transmit_IT()
1718 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit_IT()
1721 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit_IT()
1735 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1738 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive_IT()
1740 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1751 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1754 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1755 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1756 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1757 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1758 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1761 hspi->pTxBuffPtr = NULL; in HAL_SPI_Receive_IT()
1762 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive_IT()
1763 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive_IT()
1764 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1767 hspi->Reload.Requested = 0UL; in HAL_SPI_Receive_IT()
1768 hspi->Reload.pRxBuffPtr = NULL; in HAL_SPI_Receive_IT()
1769 hspi->Reload.RxXferSize = NULL; in HAL_SPI_Receive_IT()
1773 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_Receive_IT()
1775 hspi->RxISR = SPI_RxISR_32BIT; in HAL_SPI_Receive_IT()
1777 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1779 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1783 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1787 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1789 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1793 SPI_2LINES_RX(hspi); in HAL_SPI_Receive_IT()
1801 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive_IT()
1804 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1807 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1810 …__HAL_SPI_ENABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_RXP | SPI_IT_OVR | SPI_IT_FRE | SPI_IT_MODF | SPI_I… in HAL_SPI_Receive_IT()
1812 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive_IT()
1815 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive_IT()
1830 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8… in HAL_SPI_TransmitReceive_IT() argument
1835 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_TransmitReceive_IT()
1839 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1841 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive_IT()
1852 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1855 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1856 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1857 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1858 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1859 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1860 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1861 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1862 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1863 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1866 hspi->Reload.Requested = 0UL; in HAL_SPI_TransmitReceive_IT()
1867 hspi->Reload.pRxBuffPtr = NULL; in HAL_SPI_TransmitReceive_IT()
1868 hspi->Reload.RxXferSize = NULL; in HAL_SPI_TransmitReceive_IT()
1869 hspi->Reload.pTxBuffPtr = NULL; in HAL_SPI_TransmitReceive_IT()
1870 hspi->Reload.TxXferSize = NULL; in HAL_SPI_TransmitReceive_IT()
1874 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_IT()
1876 hspi->TxISR = SPI_TxISR_32BIT; in HAL_SPI_TransmitReceive_IT()
1877 hspi->RxISR = SPI_RxISR_32BIT; in HAL_SPI_TransmitReceive_IT()
1879 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1881 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1882 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1886 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1887 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1891 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive_IT()
1894 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive_IT()
1897 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1900 while ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (tmp_TxXferCount != 0UL)) in HAL_SPI_TransmitReceive_IT()
1903 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_IT()
1905 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1906 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive_IT()
1907 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1908 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1911 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1914 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1916 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1918 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive_IT()
1919 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1920 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1925 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1926 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive_IT()
1927 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1928 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1933 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1936 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_DXP | SPI_IT_UDR | SPI_IT_OVR | in HAL_SPI_TransmitReceive_IT()
1939 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive_IT()
1942 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive_IT()
1957 HAL_StatusTypeDef HAL_SPI_Reload_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_… in HAL_SPI_Reload_Transmit_IT() argument
1960 if ((hspi->Reload.Requested == 1UL) || (pData == NULL) || (Size == 0UL)) in HAL_SPI_Reload_Transmit_IT()
1965 if (hspi->State == HAL_SPI_STATE_BUSY_TX) in HAL_SPI_Reload_Transmit_IT()
1968 __HAL_LOCK(hspi); in HAL_SPI_Reload_Transmit_IT()
1971 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSER, (Size & 0xFFFFFFFFUL) << 16UL); in HAL_SPI_Reload_Transmit_IT()
1974 hspi->Reload.Requested = 1UL; in HAL_SPI_Reload_Transmit_IT()
1975 hspi->Reload.pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Reload_Transmit_IT()
1976 hspi->Reload.TxXferSize = Size; in HAL_SPI_Reload_Transmit_IT()
1979 __HAL_UNLOCK(hspi); in HAL_SPI_Reload_Transmit_IT()
1999 HAL_StatusTypeDef HAL_SPI_Reload_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Reload_Receive_IT() argument
2002 if ((hspi->Reload.Requested == 1UL) || (pData == NULL) || (Size == 0UL)) in HAL_SPI_Reload_Receive_IT()
2007 if (hspi->State == HAL_SPI_STATE_BUSY_RX) in HAL_SPI_Reload_Receive_IT()
2010 __HAL_LOCK(hspi); in HAL_SPI_Reload_Receive_IT()
2013 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSER, (Size & 0xFFFFFFFFUL) << 16UL); in HAL_SPI_Reload_Receive_IT()
2016 hspi->Reload.Requested = 1UL; in HAL_SPI_Reload_Receive_IT()
2017 hspi->Reload.pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Reload_Receive_IT()
2018 hspi->Reload.RxXferSize = Size; in HAL_SPI_Reload_Receive_IT()
2021 __HAL_UNLOCK(hspi); in HAL_SPI_Reload_Receive_IT()
2042 HAL_StatusTypeDef HAL_SPI_Reload_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, in HAL_SPI_Reload_TransmitReceive_IT() argument
2046 if ((hspi->Reload.Requested == 1UL) || (pTxData == NULL) || (pRxData == NULL) || (Size == 0UL)) in HAL_SPI_Reload_TransmitReceive_IT()
2051 if (hspi->State == HAL_SPI_STATE_BUSY_TX_RX) in HAL_SPI_Reload_TransmitReceive_IT()
2054 __HAL_LOCK(hspi); in HAL_SPI_Reload_TransmitReceive_IT()
2057 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSER, (Size & 0xFFFFFFFFUL) << 16UL); in HAL_SPI_Reload_TransmitReceive_IT()
2060 hspi->Reload.Requested = 1UL; in HAL_SPI_Reload_TransmitReceive_IT()
2061 hspi->Reload.pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_Reload_TransmitReceive_IT()
2062 hspi->Reload.TxXferSize = Size; in HAL_SPI_Reload_TransmitReceive_IT()
2063 hspi->Reload.pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_Reload_TransmitReceive_IT()
2064 hspi->Reload.RxXferSize = Size; in HAL_SPI_Reload_TransmitReceive_IT()
2067 __HAL_UNLOCK(hspi); in HAL_SPI_Reload_TransmitReceive_IT()
2086 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
2090 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
2092 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
2103 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
2106 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
2107 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
2108 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_DMA()
2109 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
2110 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
2113 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit_DMA()
2114 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
2115 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
2116 hspi->RxXferSize = (uint16_t)0UL; in HAL_SPI_Transmit_DMA()
2117 hspi->RxXferCount = (uint16_t)0UL; in HAL_SPI_Transmit_DMA()
2120 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
2122 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
2126 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit_DMA()
2130 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmatx->Init.MemDataAlignment != DMA_MDA… in HAL_SPI_Transmit_DMA()
2131 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && ((hspi->hdmatx->Init.MemDataAlignment != DMA_MDATAAL… in HAL_SPI_Transmit_DMA()
2132 … (hspi->hdmatx->Init.MemDataAlignment != DMA_MDATAALIGN_WORD)))) in HAL_SPI_Transmit_DMA()
2135 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2140 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_DMA()
2142 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Transmit_DMA()
2144 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Transmit_DMA()
2146 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_Transmit_DMA()
2148 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_Transmit_DMA()
2151 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Transmit_DMA()
2153 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_Transmit_DMA()
2155 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Transmit_DMA()
2164 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
2167 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
2170 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
2173 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
2176 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_Transmit_DMA()
2179 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_Transmit_DMA()
2180 hspi->TxXferCount)) in HAL_SPI_Transmit_DMA()
2183 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
2184 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit_DMA()
2187 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2193 if (hspi->hdmatx->Init.Mode == DMA_CIRCULAR) in HAL_SPI_Transmit_DMA()
2195 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_Transmit_DMA()
2199 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit_DMA()
2203 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_Transmit_DMA()
2206 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Transmit_DMA()
2209 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
2211 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit_DMA()
2214 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit_DMA()
2218 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2232 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
2236 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive_DMA()
2238 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2240 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2246 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2251 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2254 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2255 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2256 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2257 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2258 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2261 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2262 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2263 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive_DMA()
2264 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive_DMA()
2267 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2269 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2273 SPI_2LINES_RX(hspi); in HAL_SPI_Receive_DMA()
2277 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmarx->Init.MemDataAlignment != DMA_MDA… in HAL_SPI_Receive_DMA()
2278 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && ((hspi->hdmarx->Init.MemDataAlignment != DMA_MDATAAL… in HAL_SPI_Receive_DMA()
2279 … (hspi->hdmarx->Init.MemDataAlignment != DMA_MDATAALIGN_WORD)))) in HAL_SPI_Receive_DMA()
2282 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2287 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_Receive_DMA()
2290 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2292 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_Receive_DMA()
2294 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Receive_DMA()
2296 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_Receive_DMA()
2298 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_Receive_DMA()
2301 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Receive_DMA()
2303 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_Receive_DMA()
2305 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Receive_DMA()
2314 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2317 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2320 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2323 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2326 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->RXDR, (uint32_t)hspi->pRxB… in HAL_SPI_Receive_DMA()
2327 hspi->RxXferCount)) in HAL_SPI_Receive_DMA()
2330 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2331 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive_DMA()
2334 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2340 if (hspi->hdmarx->Init.Mode == DMA_CIRCULAR) in HAL_SPI_Receive_DMA()
2342 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_Receive_DMA()
2346 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive_DMA()
2350 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_Receive_DMA()
2353 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_OVR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Receive_DMA()
2356 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2358 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive_DMA()
2361 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive_DMA()
2365 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2380 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint… in HAL_SPI_TransmitReceive_DMA() argument
2384 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2386 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive_DMA()
2397 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2400 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2401 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2402 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2403 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2404 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2405 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2406 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2407 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2410 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2411 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2414 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive_DMA()
2417 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2420 if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && \ in HAL_SPI_TransmitReceive_DMA()
2421 ((hspi->hdmarx->Init.MemDataAlignment != DMA_MDATAALIGN_WORD) || \ in HAL_SPI_TransmitReceive_DMA()
2422 (hspi->hdmatx->Init.MemDataAlignment != DMA_MDATAALIGN_WORD))) || \ in HAL_SPI_TransmitReceive_DMA()
2423 ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && \ in HAL_SPI_TransmitReceive_DMA()
2424 (((hspi->hdmarx->Init.MemDataAlignment != DMA_MDATAALIGN_HALFWORD) && \ in HAL_SPI_TransmitReceive_DMA()
2425 (hspi->hdmarx->Init.MemDataAlignment != DMA_MDATAALIGN_WORD)) || \ in HAL_SPI_TransmitReceive_DMA()
2426 ((hspi->hdmatx->Init.MemDataAlignment != DMA_MDATAALIGN_HALFWORD) && \ in HAL_SPI_TransmitReceive_DMA()
2427 (hspi->hdmatx->Init.MemDataAlignment != DMA_MDATAALIGN_WORD))))) in HAL_SPI_TransmitReceive_DMA()
2431 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2436 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2438 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2440 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2442 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_TransmitReceive_DMA()
2444 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_TransmitReceive_DMA()
2446 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2448 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2450 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_TransmitReceive_DMA()
2452 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_TransmitReceive_DMA()
2455 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2457 if (hspi->hdmatx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_TransmitReceive_DMA()
2459 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2461 if (hspi->hdmarx->Init.MemDataAlignment == DMA_MDATAALIGN_WORD) in HAL_SPI_TransmitReceive_DMA()
2463 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2472 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2473 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2476 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2479 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2482 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->RXDR, (uint32_t)hspi->pRxB… in HAL_SPI_TransmitReceive_DMA()
2483 hspi->RxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2486 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2487 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2490 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2496 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2500 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2501 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2502 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2505 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2508 …if (HAL_OK != HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance… in HAL_SPI_TransmitReceive_DMA()
2509 hspi->TxXferCount)) in HAL_SPI_TransmitReceive_DMA()
2512 (void)HAL_DMA_Abort(hspi->hdmarx); in HAL_SPI_TransmitReceive_DMA()
2515 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2516 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2519 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2524 if (hspi->hdmatx->Init.Mode == DMA_CIRCULAR) in HAL_SPI_TransmitReceive_DMA()
2526 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_TransmitReceive_DMA()
2530 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive_DMA()
2534 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2537 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_OVR | SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_TransmitReceive_DMA()
2540 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2542 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive_DMA()
2545 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive_DMA()
2549 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2567 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2574 __HAL_LOCK(hspi); in HAL_SPI_Abort()
2577 hspi->State = HAL_SPI_STATE_ABORT; in HAL_SPI_Abort()
2584 if (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)) in HAL_SPI_Abort()
2587 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_Abort()
2593 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2596 } while (HAL_IS_BIT_SET(hspi->Instance->IER, SPI_IT_EOT)); in HAL_SPI_Abort()
2599 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSUSP); in HAL_SPI_Abort()
2605 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2608 } while (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)); in HAL_SPI_Abort()
2611 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_Abort()
2617 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2620 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_SUSP)); in HAL_SPI_Abort()
2624 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN)) in HAL_SPI_Abort()
2626 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2629 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2632 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2634 if (HAL_DMA_GetError(hspi->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SPI_Abort()
2636 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2643 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort()
2645 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2648 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2651 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2653 if (HAL_DMA_GetError(hspi->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SPI_Abort()
2655 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2662 SPI_AbortTransfer(hspi); in HAL_SPI_Abort()
2665 if (HAL_IS_BIT_SET(hspi->ErrorCode, HAL_SPI_ERROR_ABORT)) in HAL_SPI_Abort()
2673 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2677 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2680 __HAL_UNLOCK(hspi); in HAL_SPI_Abort()
2700 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2708 hspi->State = HAL_SPI_STATE_ABORT; in HAL_SPI_Abort_IT()
2715 if (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)) in HAL_SPI_Abort_IT()
2718 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_Abort_IT()
2724 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2727 } while (HAL_IS_BIT_SET(hspi->Instance->IER, SPI_IT_EOT)); in HAL_SPI_Abort_IT()
2730 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSUSP); in HAL_SPI_Abort_IT()
2736 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2739 } while (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)); in HAL_SPI_Abort_IT()
2742 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_Abort_IT()
2748 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2751 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_SUSP)); in HAL_SPI_Abort_IT()
2757 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2759 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN)) in HAL_SPI_Abort_IT()
2762 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2767 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2769 if (HAL_DMA_GetError(hspi->hdmatx) == HAL_DMA_ERROR_NO_XFER) in HAL_SPI_Abort_IT()
2772 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2778 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2782 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2784 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort_IT()
2787 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2792 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2794 if (HAL_DMA_GetError(hspi->hdmarx) == HAL_DMA_ERROR_NO_XFER) in HAL_SPI_Abort_IT()
2797 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2803 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2811 SPI_AbortTransfer(hspi); in HAL_SPI_Abort_IT()
2814 if (HAL_IS_BIT_SET(hspi->ErrorCode, HAL_SPI_ERROR_ABORT)) in HAL_SPI_Abort_IT()
2822 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2826 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2830 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2832 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2846 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2849 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAPause()
2861 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
2864 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAResume()
2876 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
2879 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAStop()
2890 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
2892 uint32_t itsource = hspi->Instance->IER; in HAL_SPI_IRQHandler()
2893 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
2895 uint32_t cfg1 = hspi->Instance->CFG1; in HAL_SPI_IRQHandler()
2898 HAL_SPI_StateTypeDef State = hspi->State; in HAL_SPI_IRQHandler()
2900 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_IRQHandler()
2907 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_IRQHandler()
2911 hspi->SuspendCallback(hspi); in HAL_SPI_IRQHandler()
2913 HAL_SPI_SuspendCallback(hspi); in HAL_SPI_IRQHandler()
2922 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2923 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2931 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
2939 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
2947 __HAL_SPI_CLEAR_TSERFFLAG(hspi); in HAL_SPI_IRQHandler()
2960 __HAL_SPI_CLEAR_EOTFLAG(hspi); in HAL_SPI_IRQHandler()
2961 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in HAL_SPI_IRQHandler()
2962 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_IRQHandler()
2965 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_IRQHandler()
2968 if (HAL_IS_BIT_CLR(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN)) in HAL_SPI_IRQHandler()
2971 while (hspi->RxXferCount != 0UL) in HAL_SPI_IRQHandler()
2974 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_IRQHandler()
2976 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
2977 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_IRQHandler()
2980 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_IRQHandler()
2983 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_IRQHandler()
2985 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
2987 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_IRQHandler()
2992 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
2993 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_IRQHandler()
2996 hspi->RxXferCount--; in HAL_SPI_IRQHandler()
3001 SPI_CloseTransfer(hspi); in HAL_SPI_IRQHandler()
3003 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
3004 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
3007 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3009 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3018 hspi->TxRxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3022 hspi->RxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3026 hspi->TxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3032 HAL_SPI_TxRxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3036 HAL_SPI_RxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3040 HAL_SPI_TxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3057 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
3058 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
3064 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
3065 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
3071 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
3072 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
3078 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_UDR); in HAL_SPI_IRQHandler()
3079 __HAL_SPI_CLEAR_UDRFLAG(hspi); in HAL_SPI_IRQHandler()
3082 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
3085 __HAL_SPI_DISABLE(hspi); in HAL_SPI_IRQHandler()
3088 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_RXP | SPI_IT_TXP | SPI_IT_MODF | in HAL_SPI_IRQHandler()
3095 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in HAL_SPI_IRQHandler()
3098 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
3102 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
3103 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
3105 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
3109 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
3113 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
3114 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
3116 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
3123 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
3127 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3129 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3143 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_TxCpltCallback() argument
3146 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
3159 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_RxCpltCallback() argument
3162 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
3175 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_TxRxCpltCallback() argument
3178 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
3191 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 … in HAL_SPI_TxHalfCpltCallback() argument
3194 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
3207 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 … in HAL_SPI_RxHalfCpltCallback() argument
3210 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
3223 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.1… in HAL_SPI_TxRxHalfCpltCallback() argument
3226 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
3239 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_ErrorCallback() argument
3242 UNUSED(hspi); in HAL_SPI_ErrorCallback()
3257 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_AbortCpltCallback() argument
3260 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
3272 __weak void HAL_SPI_SuspendCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_SuspendCallback() argument
3275 UNUSED(hspi); in HAL_SPI_SuspendCallback()
3307 HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
3310 return hspi->State; in HAL_SPI_GetState()
3319 uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3322 return hspi->ErrorCode; in HAL_SPI_GetError()
3346 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATransmitCplt() local
3348 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMATransmitCplt()
3350 if (hspi->hdmatx->Init.Mode == DMA_CIRCULAR) in SPI_DMATransmitCplt()
3353 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3355 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3361 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMATransmitCplt()
3374 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAReceiveCplt() local
3376 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMAReceiveCplt()
3378 if (hspi->hdmarx->Init.Mode == DMA_CIRCULAR) in SPI_DMAReceiveCplt()
3381 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3383 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3389 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMAReceiveCplt()
3402 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATransmitReceiveCplt() local
3404 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMATransmitReceiveCplt()
3406 if (hspi->hdmatx->Init.Mode == DMA_CIRCULAR) in SPI_DMATransmitReceiveCplt()
3409 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3411 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3417 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMATransmitReceiveCplt()
3430 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfTransmitCplt() local
3434 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3436 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3448 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfReceiveCplt() local
3452 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3454 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3466 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfTransmitReceiveCplt() local
3470 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3472 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3484 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAError() local
3490 SPI_CloseTransfer(hspi); in SPI_DMAError()
3492 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3493 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3495 hspi->ErrorCallback(hspi); in SPI_DMAError()
3497 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3510 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAAbortOnError() local
3511 hspi->RxXferCount = (uint16_t) 0UL; in SPI_DMAAbortOnError()
3512 hspi->TxXferCount = (uint16_t) 0UL; in SPI_DMAAbortOnError()
3515 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAAbortOnError()
3518 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3520 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3534 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATxAbortCallback() local
3536 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3539 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3541 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3548 SPI_AbortTransfer(hspi); in SPI_DMATxAbortCallback()
3551 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3555 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3557 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3571 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMARxAbortCallback() local
3573 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3576 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3578 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3585 SPI_AbortTransfer(hspi); in SPI_DMARxAbortCallback()
3588 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3592 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3594 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3604 static void SPI_RxISR_8BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3607 *((uint8_t *)hspi->pRxBuffPtr) = (*(__IO uint8_t *)&hspi->Instance->RXDR); in SPI_RxISR_8BIT()
3608 hspi->pRxBuffPtr += sizeof(uint8_t); in SPI_RxISR_8BIT()
3609 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3612 if (hspi->RxXferCount == 0UL) in SPI_RxISR_8BIT()
3616 if (hspi->Reload.Requested == 1UL) in SPI_RxISR_8BIT()
3618 hspi->RxXferSize = hspi->Reload.RxXferSize; in SPI_RxISR_8BIT()
3619 hspi->RxXferCount = hspi->Reload.RxXferSize; in SPI_RxISR_8BIT()
3620 hspi->pRxBuffPtr = hspi->Reload.pRxBuffPtr; in SPI_RxISR_8BIT()
3621 hspi->Reload.Requested = 0UL; in SPI_RxISR_8BIT()
3626 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_8BIT()
3630 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_8BIT()
3642 static void SPI_RxISR_16BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3646 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in SPI_RxISR_16BIT()
3648 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in SPI_RxISR_16BIT()
3650 *((uint16_t *)hspi->pRxBuffPtr) = (*(__IO uint16_t *)&hspi->Instance->RXDR); in SPI_RxISR_16BIT()
3652 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3653 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3656 if (hspi->RxXferCount == 0UL) in SPI_RxISR_16BIT()
3660 if (hspi->Reload.Requested == 1UL) in SPI_RxISR_16BIT()
3662 hspi->RxXferSize = hspi->Reload.RxXferSize; in SPI_RxISR_16BIT()
3663 hspi->RxXferCount = hspi->Reload.RxXferSize; in SPI_RxISR_16BIT()
3664 hspi->pRxBuffPtr = hspi->Reload.pRxBuffPtr; in SPI_RxISR_16BIT()
3665 hspi->Reload.Requested = 0UL; in SPI_RxISR_16BIT()
3670 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_16BIT()
3674 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_16BIT()
3686 static void SPI_RxISR_32BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_32BIT() argument
3689 *((uint32_t *)hspi->pRxBuffPtr) = (*(__IO uint32_t *)&hspi->Instance->RXDR); in SPI_RxISR_32BIT()
3690 hspi->pRxBuffPtr += sizeof(uint32_t); in SPI_RxISR_32BIT()
3691 hspi->RxXferCount--; in SPI_RxISR_32BIT()
3694 if (hspi->RxXferCount == 0UL) in SPI_RxISR_32BIT()
3698 if (hspi->Reload.Requested == 1UL) in SPI_RxISR_32BIT()
3700 hspi->RxXferSize = hspi->Reload.RxXferSize; in SPI_RxISR_32BIT()
3701 hspi->RxXferCount = hspi->Reload.RxXferSize; in SPI_RxISR_32BIT()
3702 hspi->pRxBuffPtr = hspi->Reload.pRxBuffPtr; in SPI_RxISR_32BIT()
3703 hspi->Reload.Requested = 0UL; in SPI_RxISR_32BIT()
3708 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_32BIT()
3712 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_32BIT()
3724 static void SPI_TxISR_8BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3727 *(__IO uint8_t *)&hspi->Instance->TXDR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3728 hspi->pTxBuffPtr += sizeof(uint8_t); in SPI_TxISR_8BIT()
3729 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3732 if (hspi->TxXferCount == 0UL) in SPI_TxISR_8BIT()
3736 if (hspi->Reload.Requested == 1UL) in SPI_TxISR_8BIT()
3738 hspi->TxXferSize = hspi->Reload.TxXferSize; in SPI_TxISR_8BIT()
3739 hspi->TxXferCount = hspi->Reload.TxXferSize; in SPI_TxISR_8BIT()
3740 hspi->pTxBuffPtr = hspi->Reload.pTxBuffPtr; in SPI_TxISR_8BIT()
3743 if (hspi->State == HAL_SPI_STATE_BUSY_TX) in SPI_TxISR_8BIT()
3745 hspi->Reload.Requested = 0UL; in SPI_TxISR_8BIT()
3751 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_8BIT()
3755 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_8BIT()
3766 static void SPI_TxISR_16BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3770 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in SPI_TxISR_16BIT()
3772 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3774 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3776 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3777 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3780 if (hspi->TxXferCount == 0UL) in SPI_TxISR_16BIT()
3784 if (hspi->Reload.Requested == 1UL) in SPI_TxISR_16BIT()
3786 hspi->TxXferSize = hspi->Reload.TxXferSize; in SPI_TxISR_16BIT()
3787 hspi->TxXferCount = hspi->Reload.TxXferSize; in SPI_TxISR_16BIT()
3788 hspi->pTxBuffPtr = hspi->Reload.pTxBuffPtr; in SPI_TxISR_16BIT()
3791 if (hspi->State == HAL_SPI_STATE_BUSY_TX) in SPI_TxISR_16BIT()
3793 hspi->Reload.Requested = 0UL; in SPI_TxISR_16BIT()
3799 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_16BIT()
3803 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_16BIT()
3814 static void SPI_TxISR_32BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_32BIT() argument
3817 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in SPI_TxISR_32BIT()
3818 hspi->pTxBuffPtr += sizeof(uint32_t); in SPI_TxISR_32BIT()
3819 hspi->TxXferCount--; in SPI_TxISR_32BIT()
3822 if (hspi->TxXferCount == 0UL) in SPI_TxISR_32BIT()
3826 if (hspi->Reload.Requested == 1UL) in SPI_TxISR_32BIT()
3828 hspi->TxXferSize = hspi->Reload.TxXferSize; in SPI_TxISR_32BIT()
3829 hspi->TxXferCount = hspi->Reload.TxXferSize; in SPI_TxISR_32BIT()
3830 hspi->pTxBuffPtr = hspi->Reload.pTxBuffPtr; in SPI_TxISR_32BIT()
3833 if (hspi->State == HAL_SPI_STATE_BUSY_TX) in SPI_TxISR_32BIT()
3835 hspi->Reload.Requested = 0UL; in SPI_TxISR_32BIT()
3841 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_32BIT()
3845 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_32BIT()
3856 static void SPI_AbortTransfer(SPI_HandleTypeDef *hspi) in SPI_AbortTransfer() argument
3859 __HAL_SPI_DISABLE(hspi); in SPI_AbortTransfer()
3862 …__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()
3866 __HAL_SPI_CLEAR_EOTFLAG(hspi); in SPI_AbortTransfer()
3867 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in SPI_AbortTransfer()
3870 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in SPI_AbortTransfer()
3873 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_AbortTransfer()
3874 __HAL_SPI_CLEAR_UDRFLAG(hspi); in SPI_AbortTransfer()
3875 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_AbortTransfer()
3876 __HAL_SPI_CLEAR_MODFFLAG(hspi); in SPI_AbortTransfer()
3877 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in SPI_AbortTransfer()
3880 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_AbortTransfer()
3883 hspi->TxXferCount = (uint16_t)0UL; in SPI_AbortTransfer()
3884 hspi->RxXferCount = (uint16_t)0UL; in SPI_AbortTransfer()
3895 static void SPI_CloseTransfer(SPI_HandleTypeDef *hspi) in SPI_CloseTransfer() argument
3897 uint32_t itflag = hspi->Instance->SR; in SPI_CloseTransfer()
3899 __HAL_SPI_CLEAR_EOTFLAG(hspi); in SPI_CloseTransfer()
3900 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in SPI_CloseTransfer()
3903 __HAL_SPI_DISABLE(hspi); in SPI_CloseTransfer()
3906 …__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()
3910 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in SPI_CloseTransfer()
3913 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in SPI_CloseTransfer()
3917 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_UDR); in SPI_CloseTransfer()
3918 __HAL_SPI_CLEAR_UDRFLAG(hspi); in SPI_CloseTransfer()
3923 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in SPI_CloseTransfer()
3927 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in SPI_CloseTransfer()
3928 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTransfer()
3933 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_CloseTransfer()
3937 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseTransfer()
3938 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseTransfer()
3947 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in SPI_CloseTransfer()
3948 __HAL_SPI_CLEAR_MODFFLAG(hspi); in SPI_CloseTransfer()
3954 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in SPI_CloseTransfer()
3955 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_CloseTransfer()
3958 hspi->TxXferCount = (uint16_t)0UL; in SPI_CloseTransfer()
3959 hspi->RxXferCount = (uint16_t)0UL; in SPI_CloseTransfer()
3972 static HAL_StatusTypeDef SPI_WaitOnFlagUntilTimeout(const SPI_HandleTypeDef *hspi, uint32_t Flag, F… in SPI_WaitOnFlagUntilTimeout() argument
3976 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) == Status) in SPI_WaitOnFlagUntilTimeout()
3993 static uint32_t SPI_GetPacketSize(const SPI_HandleTypeDef *hspi) in SPI_GetPacketSize() argument
3995 uint32_t fifo_threashold = (hspi->Init.FifoThreshold >> SPI_CFG1_FTHLV_Pos) + 1UL; in SPI_GetPacketSize()
3996 uint32_t data_size = (hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) + 1UL; in SPI_GetPacketSize()