Lines Matching refs:hspi
176 static HAL_StatusTypeDef SPI_WaitOnFlagUntilTimeout(const SPI_HandleTypeDef *hspi, uint32_t Flag,
178 static void SPI_TxISR_8BIT(SPI_HandleTypeDef *hspi);
179 static void SPI_TxISR_16BIT(SPI_HandleTypeDef *hspi);
180 static void SPI_TxISR_32BIT(SPI_HandleTypeDef *hspi);
181 static void SPI_RxISR_8BIT(SPI_HandleTypeDef *hspi);
182 static void SPI_RxISR_16BIT(SPI_HandleTypeDef *hspi);
183 static void SPI_RxISR_32BIT(SPI_HandleTypeDef *hspi);
184 static void SPI_AbortTransfer(SPI_HandleTypeDef *hspi);
185 static void SPI_CloseTransfer(SPI_HandleTypeDef *hspi);
186 static uint32_t SPI_GetPacketSize(const SPI_HandleTypeDef *hspi);
241 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) in HAL_SPI_Init() argument
250 if (hspi == NULL) in HAL_SPI_Init()
256 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_Init()
257 assert_param(IS_SPI_MODE(hspi->Init.Mode)); in HAL_SPI_Init()
258 assert_param(IS_SPI_DIRECTION(hspi->Init.Direction)); in HAL_SPI_Init()
259 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Init()
261 assert_param(IS_SPI_LIMITED_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
262 assert_param(IS_SPI_LIMITED_FIFOTHRESHOLD(hspi->Init.FifoThreshold)); in HAL_SPI_Init()
266 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); in HAL_SPI_Init()
267 assert_param(IS_SPI_FIFOTHRESHOLD(hspi->Init.FifoThreshold)); in HAL_SPI_Init()
269 assert_param(IS_SPI_NSS(hspi->Init.NSS)); in HAL_SPI_Init()
270 assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); in HAL_SPI_Init()
271 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); in HAL_SPI_Init()
272 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); in HAL_SPI_Init()
273 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); in HAL_SPI_Init()
274 if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) in HAL_SPI_Init()
276 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); in HAL_SPI_Init()
277 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); in HAL_SPI_Init()
280 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation)); in HAL_SPI_Init()
281 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
283 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Init()
285 assert_param(IS_SPI_LIMITED_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
289 assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); in HAL_SPI_Init()
291 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); in HAL_SPI_Init()
292 assert_param(IS_SPI_CRC_INITIALIZATION_PATTERN(hspi->Init.TxCRCInitializationPattern)); in HAL_SPI_Init()
293 assert_param(IS_SPI_CRC_INITIALIZATION_PATTERN(hspi->Init.RxCRCInitializationPattern)); in HAL_SPI_Init()
296 hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; in HAL_SPI_Init()
299 assert_param(IS_SPI_RDY_MASTER_MANAGEMENT(hspi->Init.ReadyMasterManagement)); in HAL_SPI_Init()
300 assert_param(IS_SPI_RDY_POLARITY(hspi->Init.ReadyPolarity)); in HAL_SPI_Init()
301 assert_param(IS_SPI_MASTER_RX_AUTOSUSP(hspi->Init.MasterReceiverAutoSusp)); in HAL_SPI_Init()
304 if ((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (hspi->Init.DataSize > SPI_DATASIZE_16BIT)) in HAL_SPI_Init()
310 packet_length = SPI_GetPacketSize(hspi); in HAL_SPI_Init()
311 if (((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (packet_length > SPI_LOWEND_FIFO_SIZE)) || in HAL_SPI_Init()
312 ((IS_SPI_FULL_INSTANCE(hspi->Instance)) && (packet_length > SPI_HIGHEND_FIFO_SIZE))) in HAL_SPI_Init()
317 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
320 if ((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (hspi->Init.CRCLength > SPI_CRC_LENGTH_16BIT)) in HAL_SPI_Init()
326 if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE) in HAL_SPI_Init()
328 crc_length = (hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) << SPI_CFG1_CRCSIZE_Pos; in HAL_SPI_Init()
332 crc_length = hspi->Init.CRCLength; in HAL_SPI_Init()
336 assert_param(IS_SPI_CRC_POLYNOMIAL_SIZE(hspi->Init.CRCPolynomial, crc_length)); in HAL_SPI_Init()
339 if ((hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) > (crc_length >> SPI_CFG1_CRCSIZE_Pos)) in HAL_SPI_Init()
346 crc_length = hspi->Init.DataSize << SPI_CFG1_CRCSIZE_Pos; in HAL_SPI_Init()
350 if (hspi->State == HAL_SPI_STATE_RESET) in HAL_SPI_Init()
353 hspi->Lock = HAL_UNLOCKED; in HAL_SPI_Init()
357 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_Init()
358 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_Init()
359 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_Init()
360 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_Init()
361 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_Init()
362 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_Init()
363 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_Init()
364 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_Init()
365 … hspi->SuspendCallback = HAL_SPI_SuspendCallback; /* Legacy weak SuspendCallback */ in HAL_SPI_Init()
367 if (hspi->MspInitCallback == NULL) in HAL_SPI_Init()
369 hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_Init()
373 hspi->MspInitCallback(hspi); in HAL_SPI_Init()
376 HAL_SPI_MspInit(hspi); in HAL_SPI_Init()
380 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_Init()
383 __HAL_SPI_DISABLE(hspi); in HAL_SPI_Init()
387 crc_length = hspi->Instance->CFG1 & SPI_CFG1_CRCSIZE; in HAL_SPI_Init()
395 if ((hspi->Init.NSS == SPI_NSS_SOFT) && (((hspi->Init.Mode == SPI_MODE_MASTER) && \ in HAL_SPI_Init()
396 (hspi->Init.NSSPolarity == SPI_NSS_POLARITY_LOW)) || \ in HAL_SPI_Init()
397 ((hspi->Init.Mode == SPI_MODE_SLAVE) && \ in HAL_SPI_Init()
398 (hspi->Init.NSSPolarity == SPI_NSS_POLARITY_HIGH)))) in HAL_SPI_Init()
400 SET_BIT(hspi->Instance->CR1, SPI_CR1_SSI); in HAL_SPI_Init()
404 …if (((hspi->Init.Mode & SPI_MODE_MASTER) == SPI_MODE_MASTER) && (hspi->Init.DataSize >= SPI_DATASI… in HAL_SPI_Init()
406 MODIFY_REG(hspi->Instance->CR1, SPI_CR1_MASRX, hspi->Init.MasterReceiverAutoSusp); in HAL_SPI_Init()
410 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_MASRX); in HAL_SPI_Init()
414 …WRITE_REG(hspi->Instance->CFG1, (hspi->Init.BaudRatePrescaler | hspi->Init.CRCCalculation | crc_le… in HAL_SPI_Init()
415 hspi->Init.FifoThreshold | hspi->Init.DataSize)); in HAL_SPI_Init()
418 WRITE_REG(hspi->Instance->CFG2, (hspi->Init.NSSPMode | hspi->Init.TIMode | in HAL_SPI_Init()
419 hspi->Init.NSSPolarity | hspi->Init.NSS | in HAL_SPI_Init()
420 hspi->Init.CLKPolarity | hspi->Init.CLKPhase | in HAL_SPI_Init()
421 hspi->Init.FirstBit | hspi->Init.Mode | in HAL_SPI_Init()
422 hspi->Init.MasterInterDataIdleness | hspi->Init.Direction | in HAL_SPI_Init()
423 hspi->Init.MasterSSIdleness | hspi->Init.IOSwap | in HAL_SPI_Init()
424 hspi->Init.ReadyMasterManagement | hspi->Init.ReadyPolarity)); in HAL_SPI_Init()
429 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Init()
432 if (hspi->Init.TxCRCInitializationPattern == SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN) in HAL_SPI_Init()
434 SET_BIT(hspi->Instance->CR1, SPI_CR1_TCRCINI); in HAL_SPI_Init()
438 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_TCRCINI); in HAL_SPI_Init()
442 if (hspi->Init.RxCRCInitializationPattern == SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN) in HAL_SPI_Init()
444 SET_BIT(hspi->Instance->CR1, SPI_CR1_RCRCINI); in HAL_SPI_Init()
448 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_RCRCINI); in HAL_SPI_Init()
452 if (((IS_SPI_LIMITED_INSTANCE(hspi->Instance)) && (crc_length == SPI_CRC_LENGTH_16BIT)) || in HAL_SPI_Init()
453 ((IS_SPI_FULL_INSTANCE(hspi->Instance)) && (crc_length == SPI_CRC_LENGTH_32BIT))) in HAL_SPI_Init()
456 SET_BIT(hspi->Instance->CR1, SPI_CR1_CRC33_17); in HAL_SPI_Init()
458 WRITE_REG(hspi->Instance->CRCPOLY, hspi->Init.CRCPolynomial); in HAL_SPI_Init()
463 CLEAR_BIT(hspi->Instance->CR1, SPI_CR1_CRC33_17); in HAL_SPI_Init()
468 WRITE_REG(hspi->Instance->CRCPOLY, (hspi->Init.CRCPolynomial) | crc_poly_msb_mask); in HAL_SPI_Init()
474 if (hspi->Init.Mode == SPI_MODE_SLAVE) in HAL_SPI_Init()
477 MODIFY_REG(hspi->Instance->CFG1, SPI_CFG1_UDRCFG, SPI_CFG1_UDRCFG); in HAL_SPI_Init()
483 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); in HAL_SPI_Init()
487 if ((hspi->Init.Mode & SPI_MODE_MASTER) == SPI_MODE_MASTER) in HAL_SPI_Init()
490 MODIFY_REG(hspi->Instance->CFG2, SPI_CFG2_AFCNTR, (hspi->Init.MasterKeepIOState)); in HAL_SPI_Init()
493 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Init()
494 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Init()
505 HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_DeInit() argument
508 if (hspi == NULL) in HAL_SPI_DeInit()
514 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance)); in HAL_SPI_DeInit()
516 hspi->State = HAL_SPI_STATE_BUSY; in HAL_SPI_DeInit()
519 __HAL_SPI_DISABLE(hspi); in HAL_SPI_DeInit()
522 if (hspi->MspDeInitCallback == NULL) in HAL_SPI_DeInit()
524 hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_DeInit()
528 hspi->MspDeInitCallback(hspi); in HAL_SPI_DeInit()
531 HAL_SPI_MspDeInit(hspi); in HAL_SPI_DeInit()
534 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_DeInit()
535 hspi->State = HAL_SPI_STATE_RESET; in HAL_SPI_DeInit()
538 __HAL_UNLOCK(hspi); in HAL_SPI_DeInit()
549 __weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspInit() argument
552 UNUSED(hspi); in HAL_SPI_MspInit()
565 __weak void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi) in HAL_SPI_MspDeInit() argument
568 UNUSED(hspi); in HAL_SPI_MspDeInit()
587 HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Callb… in HAL_SPI_RegisterCallback() argument
595 hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK; in HAL_SPI_RegisterCallback()
600 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_RegisterCallback()
605 hspi->TxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
609 hspi->RxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
613 hspi->TxRxCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
617 hspi->TxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
621 hspi->RxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
625 hspi->TxRxHalfCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
629 hspi->ErrorCallback = pCallback; in HAL_SPI_RegisterCallback()
633 hspi->AbortCpltCallback = pCallback; in HAL_SPI_RegisterCallback()
637 hspi->SuspendCallback = pCallback; in HAL_SPI_RegisterCallback()
641 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
645 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
650 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
657 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_RegisterCallback()
662 hspi->MspInitCallback = pCallback; in HAL_SPI_RegisterCallback()
666 hspi->MspDeInitCallback = pCallback; in HAL_SPI_RegisterCallback()
671 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
681 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_RegisterCallback()
700 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef Cal… in HAL_SPI_UnRegisterCallback() argument
704 if (HAL_SPI_STATE_READY == hspi->State) in HAL_SPI_UnRegisterCallback()
709 … hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_SPI_UnRegisterCallback()
713 … hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_SPI_UnRegisterCallback()
717 … hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */ in HAL_SPI_UnRegisterCallback()
721 … hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
725 … hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
729 … hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */ in HAL_SPI_UnRegisterCallback()
733 … hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_SPI_UnRegisterCallback()
737 … hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_SPI_UnRegisterCallback()
741 … hspi->SuspendCallback = HAL_SPI_SuspendCallback; /* Legacy weak SuspendCallback */ in HAL_SPI_UnRegisterCallback()
745 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
749 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
754 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
761 else if (HAL_SPI_STATE_RESET == hspi->State) in HAL_SPI_UnRegisterCallback()
766 … hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */ in HAL_SPI_UnRegisterCallback()
770 … hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_SPI_UnRegisterCallback()
775 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
785 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK); in HAL_SPI_UnRegisterCallback()
840 HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, ui… in HAL_SPI_Transmit() argument
843 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_Transmit()
849 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit()
852 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Transmit()
864 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit()
875 __HAL_LOCK(hspi); in HAL_SPI_Transmit()
878 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit()
879 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit()
880 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit()
881 hspi->TxXferSize = Size; in HAL_SPI_Transmit()
882 hspi->TxXferCount = Size; in HAL_SPI_Transmit()
885 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit()
886 hspi->RxXferSize = (uint16_t) 0UL; in HAL_SPI_Transmit()
887 hspi->RxXferCount = (uint16_t) 0UL; in HAL_SPI_Transmit()
888 hspi->TxISR = NULL; in HAL_SPI_Transmit()
889 hspi->RxISR = NULL; in HAL_SPI_Transmit()
892 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit()
894 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit()
898 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit()
902 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit()
905 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit()
907 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit()
910 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit()
914 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Transmit()
917 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
920 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
922 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
923 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
924 hspi->TxXferCount--; in HAL_SPI_Transmit()
932 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
934 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
935 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
938 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
946 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit()
949 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
952 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
954 if ((hspi->TxXferCount > 1UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_01DATA)) in HAL_SPI_Transmit()
956 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
957 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
958 hspi->TxXferCount -= (uint16_t)2UL; in HAL_SPI_Transmit()
963 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
965 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
967 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
968 hspi->TxXferCount--; in HAL_SPI_Transmit()
977 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
979 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
980 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
983 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
993 while (hspi->TxXferCount > 0UL) in HAL_SPI_Transmit()
996 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) in HAL_SPI_Transmit()
998 if ((hspi->TxXferCount > 3UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_03DATA)) in HAL_SPI_Transmit()
1000 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
1001 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_Transmit()
1002 hspi->TxXferCount -= (uint16_t)4UL; in HAL_SPI_Transmit()
1004 … else if ((hspi->TxXferCount > 1UL) && (hspi->Init.FifoThreshold > SPI_FIFO_THRESHOLD_01DATA)) in HAL_SPI_Transmit()
1007 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
1009 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
1011 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_Transmit()
1012 hspi->TxXferCount -= (uint16_t)2UL; in HAL_SPI_Transmit()
1016 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_Transmit()
1017 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_Transmit()
1018 hspi->TxXferCount--; in HAL_SPI_Transmit()
1027 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
1029 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Transmit()
1030 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
1033 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1042 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Transmit()
1044 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_Transmit()
1048 SPI_CloseTransfer(hspi); in HAL_SPI_Transmit()
1050 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit()
1053 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit()
1055 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Transmit()
1074 HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SPI_Receive() argument
1079 init_max_data_in_fifo = (((uint16_t)(hspi->Init.FifoThreshold >> 5U) + 1U)); in HAL_SPI_Receive()
1081 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_Receive()
1085 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive()
1088 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Receive()
1100 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive()
1111 __HAL_LOCK(hspi); in HAL_SPI_Receive()
1114 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive()
1115 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive()
1116 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive()
1117 hspi->RxXferSize = Size; in HAL_SPI_Receive()
1118 hspi->RxXferCount = Size; in HAL_SPI_Receive()
1121 hspi->pTxBuffPtr = NULL; in HAL_SPI_Receive()
1122 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive()
1123 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive()
1124 hspi->RxISR = NULL; in HAL_SPI_Receive()
1125 hspi->TxISR = NULL; in HAL_SPI_Receive()
1128 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive()
1130 SPI_1LINE_RX(hspi); in HAL_SPI_Receive()
1134 SPI_2LINES_RX(hspi); in HAL_SPI_Receive()
1138 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive()
1141 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive()
1143 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive()
1146 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive()
1150 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Receive()
1153 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1156 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1159 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1161 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1162 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_Receive()
1163 hspi->RxXferCount--; in HAL_SPI_Receive()
1166 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1168 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1169 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_Receive()
1170 hspi->RxXferCount--; in HAL_SPI_Receive()
1178 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1180 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1181 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1184 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1192 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive()
1195 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1198 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1201 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1204 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1206 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1208 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1209 hspi->RxXferCount--; in HAL_SPI_Receive()
1212 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1215 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1217 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1219 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1221 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1223 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1225 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1226 hspi->RxXferCount -= (uint16_t)2UL; in HAL_SPI_Receive()
1229 else if ((hspi->RxXferCount == 1UL) && ((temp_sr_reg & SPI_SR_RXPLVL_0) != 0UL)) in HAL_SPI_Receive()
1232 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_Receive()
1234 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1236 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_Receive()
1237 hspi->RxXferCount--; in HAL_SPI_Receive()
1245 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1247 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1248 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1251 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1262 while (hspi->RxXferCount > 0UL) in HAL_SPI_Receive()
1265 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_Receive()
1268 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_Receive()
1270 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1271 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1272 hspi->RxXferCount--; in HAL_SPI_Receive()
1275 … else if ((hspi->RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg & SPI_SR_RXWNE_Msk) != 0UL)) in HAL_SPI_Receive()
1277 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1278 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1279 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1280 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1281 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1282 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1283 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1284 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1285 hspi->RxXferCount -= (uint16_t)4UL; in HAL_SPI_Receive()
1288 else if ((hspi->RxXferCount < 4UL) && ((temp_sr_reg & SPI_SR_RXPLVL_Msk) != 0UL)) in HAL_SPI_Receive()
1290 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_Receive()
1291 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_Receive()
1292 hspi->RxXferCount--; in HAL_SPI_Receive()
1300 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1302 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_Receive()
1303 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1306 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1315 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in HAL_SPI_Receive()
1318 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_Receive()
1320 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_Receive()
1326 SPI_CloseTransfer(hspi); in HAL_SPI_Receive()
1328 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive()
1331 __HAL_UNLOCK(hspi); in HAL_SPI_Receive()
1334 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_Receive()
1354 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t … in HAL_SPI_TransmitReceive() argument
1358 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_TransmitReceive()
1359 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_TransmitReceive()
1368 init_max_data_in_fifo = (((uint16_t)(hspi->Init.FifoThreshold >> 5U) + 1U)); in HAL_SPI_TransmitReceive()
1371 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive()
1374 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_TransmitReceive()
1389 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive()
1400 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive()
1403 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive()
1404 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive()
1405 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive()
1406 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive()
1407 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive()
1408 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive()
1409 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive()
1410 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive()
1413 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive()
1414 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive()
1417 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive()
1420 if (IS_SPI_FULL_INSTANCE(hspi->Instance)) in HAL_SPI_TransmitReceive()
1430 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive()
1432 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive()
1434 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive()
1437 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive()
1441 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_TransmitReceive()
1449 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1452 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1453 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1454 hspi->TxXferCount --; in HAL_SPI_TransmitReceive()
1455 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1459 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1464 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1466 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1467 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1468 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1469 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1474 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1475 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive()
1476 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1477 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1485 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1487 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1488 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1491 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1500 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive()
1508 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1512 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1514 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1516 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1517 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1518 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1522 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1527 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1530 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1532 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1534 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1535 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1536 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1542 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1544 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1546 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1548 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1550 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1552 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1553 hspi->RxXferCount -= (uint16_t)2UL; in HAL_SPI_TransmitReceive()
1554 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1560 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_TransmitReceive()
1562 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1564 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive()
1565 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1566 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1574 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1576 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1577 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1580 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1594 if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (initial_TxXferCount > 0UL) && in HAL_SPI_TransmitReceive()
1597 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive()
1598 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1599 hspi->TxXferCount--; in HAL_SPI_TransmitReceive()
1600 initial_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive()
1604 temp_sr_reg = hspi->Instance->SR; in HAL_SPI_TransmitReceive()
1609 if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXP)) in HAL_SPI_TransmitReceive()
1611 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1612 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1613 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1614 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1619 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1620 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1621 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1622 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1623 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1624 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1625 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1626 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1627 hspi->RxXferCount -= (uint16_t)4UL; in HAL_SPI_TransmitReceive()
1628 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1633 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_TransmitReceive()
1634 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive()
1635 hspi->RxXferCount--; in HAL_SPI_TransmitReceive()
1636 initial_RxXferCount = hspi->RxXferCount; in HAL_SPI_TransmitReceive()
1644 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1646 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_TIMEOUT); in HAL_SPI_TransmitReceive()
1647 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1650 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1660 if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, Timeout, tickstart) != HAL_OK) in HAL_SPI_TransmitReceive()
1662 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); in HAL_SPI_TransmitReceive()
1666 SPI_CloseTransfer(hspi); in HAL_SPI_TransmitReceive()
1668 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive()
1671 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive()
1673 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_TransmitReceive()
1691 HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_IT() argument
1694 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit_IT()
1697 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Transmit_IT()
1711 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_IT()
1717 __HAL_LOCK(hspi); in HAL_SPI_Transmit_IT()
1720 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_IT()
1721 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_IT()
1722 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_IT()
1723 hspi->TxXferSize = Size; in HAL_SPI_Transmit_IT()
1724 hspi->TxXferCount = Size; in HAL_SPI_Transmit_IT()
1727 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit_IT()
1728 hspi->RxXferSize = (uint16_t) 0UL; in HAL_SPI_Transmit_IT()
1729 hspi->RxXferCount = (uint16_t) 0UL; in HAL_SPI_Transmit_IT()
1730 hspi->RxISR = NULL; in HAL_SPI_Transmit_IT()
1733 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Transmit_IT()
1735 hspi->TxISR = SPI_TxISR_32BIT; in HAL_SPI_Transmit_IT()
1737 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_IT()
1739 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_Transmit_IT()
1743 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_Transmit_IT()
1747 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_IT()
1749 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_IT()
1753 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit_IT()
1757 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit_IT()
1760 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_IT()
1763 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_IT()
1766 __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()
1768 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit_IT()
1771 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit_IT()
1785 HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_IT() argument
1788 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive_IT()
1791 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Receive_IT()
1800 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_IT()
1811 __HAL_LOCK(hspi); in HAL_SPI_Receive_IT()
1814 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_IT()
1815 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_IT()
1816 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_IT()
1817 hspi->RxXferSize = Size; in HAL_SPI_Receive_IT()
1818 hspi->RxXferCount = Size; in HAL_SPI_Receive_IT()
1821 hspi->pTxBuffPtr = NULL; in HAL_SPI_Receive_IT()
1822 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive_IT()
1823 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive_IT()
1824 hspi->TxISR = NULL; in HAL_SPI_Receive_IT()
1827 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_Receive_IT()
1829 hspi->RxISR = SPI_RxISR_32BIT; in HAL_SPI_Receive_IT()
1831 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_Receive_IT()
1833 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_Receive_IT()
1837 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_Receive_IT()
1841 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_IT()
1843 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_IT()
1847 SPI_2LINES_RX(hspi); in HAL_SPI_Receive_IT()
1855 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive_IT()
1858 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_IT()
1861 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_IT()
1864 __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()
1866 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive_IT()
1869 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive_IT()
1884 HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8… in HAL_SPI_TransmitReceive_IT() argument
1889 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in HAL_SPI_TransmitReceive_IT()
1893 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_IT()
1896 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_TransmitReceive_IT()
1905 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive_IT()
1916 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1919 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_IT()
1920 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_IT()
1921 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_IT()
1922 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1923 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1924 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_IT()
1925 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_IT()
1926 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_IT()
1927 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1930 if ((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (IS_SPI_FULL_INSTANCE(hspi->Instance))) in HAL_SPI_TransmitReceive_IT()
1932 hspi->TxISR = SPI_TxISR_32BIT; in HAL_SPI_TransmitReceive_IT()
1933 hspi->RxISR = SPI_RxISR_32BIT; in HAL_SPI_TransmitReceive_IT()
1935 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1937 hspi->RxISR = SPI_RxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1938 hspi->TxISR = SPI_TxISR_16BIT; in HAL_SPI_TransmitReceive_IT()
1942 hspi->RxISR = SPI_RxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1943 hspi->TxISR = SPI_TxISR_8BIT; in HAL_SPI_TransmitReceive_IT()
1947 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive_IT()
1950 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive_IT()
1953 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_IT()
1956 while ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXP)) && (tmp_TxXferCount != 0UL)) in HAL_SPI_TransmitReceive_IT()
1959 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_IT()
1961 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1962 hspi->pTxBuffPtr += sizeof(uint32_t); in HAL_SPI_TransmitReceive_IT()
1963 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1964 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1967 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_IT()
1970 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1972 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1974 hspi->pTxBuffPtr += sizeof(uint16_t); in HAL_SPI_TransmitReceive_IT()
1975 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1976 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1981 *((__IO uint8_t *)&hspi->Instance->TXDR) = *((const uint8_t *)hspi->pTxBuffPtr); in HAL_SPI_TransmitReceive_IT()
1982 hspi->pTxBuffPtr += sizeof(uint8_t); in HAL_SPI_TransmitReceive_IT()
1983 hspi->TxXferCount--; in HAL_SPI_TransmitReceive_IT()
1984 tmp_TxXferCount = hspi->TxXferCount; in HAL_SPI_TransmitReceive_IT()
1989 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_IT()
1992 …__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()
1994 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive_IT()
1997 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive_IT()
2015 HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size) in HAL_SPI_Transmit_DMA() argument
2020 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(hspi->Init.Direction)); in HAL_SPI_Transmit_DMA()
2023 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Transmit_DMA()
2032 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Transmit_DMA()
2043 __HAL_LOCK(hspi); in HAL_SPI_Transmit_DMA()
2046 hspi->State = HAL_SPI_STATE_BUSY_TX; in HAL_SPI_Transmit_DMA()
2047 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Transmit_DMA()
2048 hspi->pTxBuffPtr = (const uint8_t *)pData; in HAL_SPI_Transmit_DMA()
2049 hspi->TxXferSize = Size; in HAL_SPI_Transmit_DMA()
2050 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
2053 hspi->pRxBuffPtr = NULL; in HAL_SPI_Transmit_DMA()
2054 hspi->TxISR = NULL; in HAL_SPI_Transmit_DMA()
2055 hspi->RxISR = NULL; in HAL_SPI_Transmit_DMA()
2056 hspi->RxXferSize = (uint16_t)0UL; in HAL_SPI_Transmit_DMA()
2057 hspi->RxXferCount = (uint16_t)0UL; in HAL_SPI_Transmit_DMA()
2060 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Transmit_DMA()
2062 SPI_1LINE_TX(hspi); in HAL_SPI_Transmit_DMA()
2066 SPI_2LINES_TX(hspi); in HAL_SPI_Transmit_DMA()
2070 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmatx->Init.SrcDataWidth != DMA_SRC_DA… in HAL_SPI_Transmit_DMA()
2071 (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ in HAL_SPI_Transmit_DMA()
2072 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWI… in HAL_SPI_Transmit_DMA()
2075 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2080 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_DMA()
2082 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_HALFWORD) in HAL_SPI_Transmit_DMA()
2084 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Transmit_DMA()
2086 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_Transmit_DMA()
2088 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_Transmit_DMA()
2091 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Transmit_DMA()
2093 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_Transmit_DMA()
2095 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Transmit_DMA()
2104 hspi->hdmatx->XferHalfCpltCallback = SPI_DMAHalfTransmitCplt; in HAL_SPI_Transmit_DMA()
2107 hspi->hdmatx->XferCpltCallback = SPI_DMATransmitCplt; in HAL_SPI_Transmit_DMA()
2110 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Transmit_DMA()
2113 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Transmit_DMA()
2116 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_Transmit_DMA()
2118 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Transmit_DMA()
2120 hspi->TxXferCount = Size; in HAL_SPI_Transmit_DMA()
2122 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Transmit_DMA()
2124 hspi->TxXferCount = Size * 2U; in HAL_SPI_Transmit_DMA()
2128 hspi->TxXferCount = Size * 4U; in HAL_SPI_Transmit_DMA()
2132 if ((hspi->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_Transmit_DMA()
2134 if (hspi->hdmatx->LinkedListQueue != NULL) in HAL_SPI_Transmit_DMA()
2137 … hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->TxXferCount; in HAL_SPI_Transmit_DMA()
2140 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hspi->pTx… in HAL_SPI_Transmit_DMA()
2143 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_Transmit_DMA()
2145 status = HAL_DMAEx_List_Start_IT(hspi->hdmatx); in HAL_SPI_Transmit_DMA()
2154 …status = HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance->TXD… in HAL_SPI_Transmit_DMA()
2155 hspi->TxXferCount); in HAL_SPI_Transmit_DMA()
2162 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Transmit_DMA()
2163 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Transmit_DMA()
2166 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2172 if (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR) in HAL_SPI_Transmit_DMA()
2174 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_Transmit_DMA()
2178 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Transmit_DMA()
2182 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_Transmit_DMA()
2185 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Transmit_DMA()
2188 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Transmit_DMA()
2190 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Transmit_DMA()
2193 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Transmit_DMA()
2197 __HAL_UNLOCK(hspi); in HAL_SPI_Transmit_DMA()
2211 HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) in HAL_SPI_Receive_DMA() argument
2216 assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(hspi->Init.Direction)); in HAL_SPI_Receive_DMA()
2219 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_Receive_DMA()
2228 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_Receive_DMA()
2230 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2236 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2241 __HAL_LOCK(hspi); in HAL_SPI_Receive_DMA()
2244 hspi->State = HAL_SPI_STATE_BUSY_RX; in HAL_SPI_Receive_DMA()
2245 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Receive_DMA()
2246 hspi->pRxBuffPtr = (uint8_t *)pData; in HAL_SPI_Receive_DMA()
2247 hspi->RxXferSize = Size; in HAL_SPI_Receive_DMA()
2248 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2251 hspi->RxISR = NULL; in HAL_SPI_Receive_DMA()
2252 hspi->TxISR = NULL; in HAL_SPI_Receive_DMA()
2253 hspi->TxXferSize = (uint16_t) 0UL; in HAL_SPI_Receive_DMA()
2254 hspi->TxXferCount = (uint16_t) 0UL; in HAL_SPI_Receive_DMA()
2257 if (hspi->Init.Direction == SPI_DIRECTION_1LINE) in HAL_SPI_Receive_DMA()
2259 SPI_1LINE_RX(hspi); in HAL_SPI_Receive_DMA()
2263 SPI_2LINES_RX(hspi); in HAL_SPI_Receive_DMA()
2267 …if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmarx->Init.DestDataWidth != DMA_DEST_D… in HAL_SPI_Receive_DMA()
2268 (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ in HAL_SPI_Receive_DMA()
2269 …((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAW… in HAL_SPI_Receive_DMA()
2272 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2277 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_Receive_DMA()
2280 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2282 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_HALFWORD) in HAL_SPI_Receive_DMA()
2284 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Receive_DMA()
2286 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_Receive_DMA()
2288 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_Receive_DMA()
2291 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Receive_DMA()
2293 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_Receive_DMA()
2295 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_Receive_DMA()
2304 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; in HAL_SPI_Receive_DMA()
2307 hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; in HAL_SPI_Receive_DMA()
2310 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_Receive_DMA()
2313 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Receive_DMA()
2315 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_Receive_DMA()
2317 hspi->RxXferCount = Size; in HAL_SPI_Receive_DMA()
2319 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_Receive_DMA()
2321 hspi->RxXferCount = Size * 2U; in HAL_SPI_Receive_DMA()
2325 hspi->RxXferCount = Size * 4U; in HAL_SPI_Receive_DMA()
2329 if ((hspi->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_Receive_DMA()
2331 if (hspi->hdmarx->LinkedListQueue != NULL) in HAL_SPI_Receive_DMA()
2334 … hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->RxXferCount; in HAL_SPI_Receive_DMA()
2337 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_Receive_DMA()
2340 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hspi->pRx… in HAL_SPI_Receive_DMA()
2342 status = HAL_DMAEx_List_Start_IT(hspi->hdmarx); in HAL_SPI_Receive_DMA()
2351 …status = HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->RXDR, (uint32_t)hspi->pRxBuffPt… in HAL_SPI_Receive_DMA()
2352 hspi->RxXferCount); in HAL_SPI_Receive_DMA()
2359 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_Receive_DMA()
2360 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Receive_DMA()
2363 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2369 if (hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) in HAL_SPI_Receive_DMA()
2371 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_Receive_DMA()
2375 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_Receive_DMA()
2379 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_Receive_DMA()
2382 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_OVR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_Receive_DMA()
2385 __HAL_SPI_ENABLE(hspi); in HAL_SPI_Receive_DMA()
2387 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_Receive_DMA()
2390 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_Receive_DMA()
2394 __HAL_UNLOCK(hspi); in HAL_SPI_Receive_DMA()
2409 HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint… in HAL_SPI_TransmitReceive_DMA() argument
2415 assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); in HAL_SPI_TransmitReceive_DMA()
2418 if (IS_SPI_LIMITED_INSTANCE(hspi->Instance)) in HAL_SPI_TransmitReceive_DMA()
2427 if (hspi->State != HAL_SPI_STATE_READY) in HAL_SPI_TransmitReceive_DMA()
2438 __HAL_LOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2441 hspi->State = HAL_SPI_STATE_BUSY_TX_RX; in HAL_SPI_TransmitReceive_DMA()
2442 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_TransmitReceive_DMA()
2443 hspi->pTxBuffPtr = (const uint8_t *)pTxData; in HAL_SPI_TransmitReceive_DMA()
2444 hspi->TxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2445 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2446 hspi->pRxBuffPtr = (uint8_t *)pRxData; in HAL_SPI_TransmitReceive_DMA()
2447 hspi->RxXferSize = Size; in HAL_SPI_TransmitReceive_DMA()
2448 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2451 hspi->RxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2452 hspi->TxISR = NULL; in HAL_SPI_TransmitReceive_DMA()
2455 SPI_2LINES(hspi); in HAL_SPI_TransmitReceive_DMA()
2458 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2461 if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && \ in HAL_SPI_TransmitReceive_DMA()
2462 ((hspi->hdmarx->Init.DestDataWidth != DMA_DEST_DATAWIDTH_WORD) || \ in HAL_SPI_TransmitReceive_DMA()
2463 (hspi->hdmatx->Init.SrcDataWidth != DMA_SRC_DATAWIDTH_WORD)) && \ in HAL_SPI_TransmitReceive_DMA()
2464 (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ in HAL_SPI_TransmitReceive_DMA()
2465 ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && \ in HAL_SPI_TransmitReceive_DMA()
2466 ((hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_BYTE) || \ in HAL_SPI_TransmitReceive_DMA()
2467 (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_BYTE)))) in HAL_SPI_TransmitReceive_DMA()
2471 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2476 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2478 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2480 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2482 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2484 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_TransmitReceive_DMA()
2486 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_HALFWORD) in HAL_SPI_TransmitReceive_DMA()
2488 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2490 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2492 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 3UL) >> 2UL; in HAL_SPI_TransmitReceive_DMA()
2495 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2497 if (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2499 hspi->TxXferCount = (hspi->TxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2501 if (hspi->hdmarx->Init.DestDataWidth == DMA_DEST_DATAWIDTH_WORD) in HAL_SPI_TransmitReceive_DMA()
2503 hspi->RxXferCount = (hspi->RxXferCount + (uint16_t) 1UL) >> 1UL; in HAL_SPI_TransmitReceive_DMA()
2512 hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfTransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2513 hspi->hdmarx->XferCpltCallback = SPI_DMATransmitReceiveCplt; in HAL_SPI_TransmitReceive_DMA()
2516 hspi->hdmarx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2519 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2521 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2523 hspi->RxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2525 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2527 hspi->RxXferCount = Size * 2U; in HAL_SPI_TransmitReceive_DMA()
2531 hspi->RxXferCount = Size * 4U; in HAL_SPI_TransmitReceive_DMA()
2534 if ((hspi->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_TransmitReceive_DMA()
2536 if (hspi->hdmarx->LinkedListQueue != NULL) in HAL_SPI_TransmitReceive_DMA()
2539 … hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->RxXferCount; in HAL_SPI_TransmitReceive_DMA()
2542 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_TransmitReceive_DMA()
2545 …hspi->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)hspi->pRx… in HAL_SPI_TransmitReceive_DMA()
2547 status = HAL_DMAEx_List_Start_IT(hspi->hdmarx); in HAL_SPI_TransmitReceive_DMA()
2556 …status = HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->RXDR, (uint32_t)hspi->pRxBuffPt… in HAL_SPI_TransmitReceive_DMA()
2557 hspi->RxXferCount); in HAL_SPI_TransmitReceive_DMA()
2564 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2565 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2568 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2574 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2578 hspi->hdmatx->XferHalfCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2579 hspi->hdmatx->XferCpltCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2580 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_TransmitReceive_DMA()
2583 hspi->hdmatx->XferErrorCallback = SPI_DMAError; in HAL_SPI_TransmitReceive_DMA()
2585 if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) in HAL_SPI_TransmitReceive_DMA()
2587 hspi->TxXferCount = Size; in HAL_SPI_TransmitReceive_DMA()
2589 else if (hspi->Init.DataSize <= SPI_DATASIZE_16BIT) in HAL_SPI_TransmitReceive_DMA()
2591 hspi->TxXferCount = Size * 2U; in HAL_SPI_TransmitReceive_DMA()
2595 hspi->TxXferCount = Size * 4U; in HAL_SPI_TransmitReceive_DMA()
2599 if ((hspi->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_SPI_TransmitReceive_DMA()
2601 if (hspi->hdmatx->LinkedListQueue != NULL) in HAL_SPI_TransmitReceive_DMA()
2604 … hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = hspi->TxXferCount; in HAL_SPI_TransmitReceive_DMA()
2607 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = (uint32_t)hspi->pTx… in HAL_SPI_TransmitReceive_DMA()
2610 …hspi->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = (uint32_t)&hspi->In… in HAL_SPI_TransmitReceive_DMA()
2612 status = HAL_DMAEx_List_Start_IT(hspi->hdmatx); in HAL_SPI_TransmitReceive_DMA()
2621 …status = HAL_DMA_Start_IT(hspi->hdmatx, (uint32_t)hspi->pTxBuffPtr, (uint32_t)&hspi->Instance->TXD… in HAL_SPI_TransmitReceive_DMA()
2622 hspi->TxXferCount); in HAL_SPI_TransmitReceive_DMA()
2629 (void)HAL_DMA_Abort(hspi->hdmarx); in HAL_SPI_TransmitReceive_DMA()
2632 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in HAL_SPI_TransmitReceive_DMA()
2633 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_TransmitReceive_DMA()
2636 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2641 …if ((hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) && (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCU… in HAL_SPI_TransmitReceive_DMA()
2643 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, 0UL); in HAL_SPI_TransmitReceive_DMA()
2647 MODIFY_REG(hspi->Instance->CR2, SPI_CR2_TSIZE, Size); in HAL_SPI_TransmitReceive_DMA()
2651 SET_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN); in HAL_SPI_TransmitReceive_DMA()
2654 __HAL_SPI_ENABLE_IT(hspi, (SPI_IT_OVR | SPI_IT_UDR | SPI_IT_FRE | SPI_IT_MODF)); in HAL_SPI_TransmitReceive_DMA()
2657 __HAL_SPI_ENABLE(hspi); in HAL_SPI_TransmitReceive_DMA()
2659 if (hspi->Init.Mode == SPI_MODE_MASTER) in HAL_SPI_TransmitReceive_DMA()
2662 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSTART); in HAL_SPI_TransmitReceive_DMA()
2666 __HAL_UNLOCK(hspi); in HAL_SPI_TransmitReceive_DMA()
2685 HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort() argument
2692 __HAL_LOCK(hspi); in HAL_SPI_Abort()
2695 hspi->State = HAL_SPI_STATE_ABORT; in HAL_SPI_Abort()
2702 if (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)) in HAL_SPI_Abort()
2705 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_Abort()
2711 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2714 } while (HAL_IS_BIT_SET(hspi->Instance->IER, SPI_IT_EOT)); in HAL_SPI_Abort()
2717 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSUSP); in HAL_SPI_Abort()
2723 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2726 } while (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)); in HAL_SPI_Abort()
2729 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_Abort()
2735 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort()
2738 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_SUSP)); in HAL_SPI_Abort()
2743 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN)) in HAL_SPI_Abort()
2745 if (hspi->hdmatx != NULL) in HAL_SPI_Abort()
2748 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2751 if (HAL_DMA_Abort(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort()
2753 if (HAL_DMA_GetError(hspi->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SPI_Abort()
2755 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2762 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort()
2764 if (hspi->hdmarx != NULL) in HAL_SPI_Abort()
2767 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort()
2770 if (HAL_DMA_Abort(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort()
2772 if (HAL_DMA_GetError(hspi->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SPI_Abort()
2774 hspi->ErrorCode = HAL_SPI_ERROR_ABORT; in HAL_SPI_Abort()
2782 SPI_AbortTransfer(hspi); in HAL_SPI_Abort()
2785 if (HAL_IS_BIT_SET(hspi->ErrorCode, HAL_SPI_ERROR_ABORT)) in HAL_SPI_Abort()
2793 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort()
2797 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort()
2800 __HAL_UNLOCK(hspi); in HAL_SPI_Abort()
2820 HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi) in HAL_SPI_Abort_IT() argument
2830 hspi->State = HAL_SPI_STATE_ABORT; in HAL_SPI_Abort_IT()
2837 if (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)) in HAL_SPI_Abort_IT()
2840 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_Abort_IT()
2846 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2849 } while (HAL_IS_BIT_SET(hspi->Instance->IER, SPI_IT_EOT)); in HAL_SPI_Abort_IT()
2852 SET_BIT(hspi->Instance->CR1, SPI_CR1_CSUSP); in HAL_SPI_Abort_IT()
2858 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2861 } while (HAL_IS_BIT_SET(hspi->Instance->CR1, SPI_CR1_CSTART)); in HAL_SPI_Abort_IT()
2864 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_Abort_IT()
2870 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_Abort_IT()
2873 } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_SUSP)); in HAL_SPI_Abort_IT()
2880 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2882 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort_IT()
2885 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2889 if (hspi->hdmatx != NULL) in HAL_SPI_Abort_IT()
2891 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN)) in HAL_SPI_Abort_IT()
2894 hspi->hdmatx->XferAbortCallback = SPI_DMATxAbortCallback; in HAL_SPI_Abort_IT()
2899 if (HAL_DMA_Abort_IT(hspi->hdmatx) != HAL_OK) in HAL_SPI_Abort_IT()
2901 if (HAL_DMA_GetError(hspi->hdmatx) == HAL_DMA_ERROR_NO_XFER) in HAL_SPI_Abort_IT()
2904 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2910 hspi->hdmatx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2914 if (hspi->hdmarx != NULL) in HAL_SPI_Abort_IT()
2916 if (HAL_IS_BIT_SET(hspi->Instance->CFG1, SPI_CFG1_RXDMAEN)) in HAL_SPI_Abort_IT()
2919 hspi->hdmarx->XferAbortCallback = SPI_DMARxAbortCallback; in HAL_SPI_Abort_IT()
2924 if (HAL_DMA_Abort_IT(hspi->hdmarx) != HAL_OK) in HAL_SPI_Abort_IT()
2926 if (HAL_DMA_GetError(hspi->hdmarx) == HAL_DMA_ERROR_NO_XFER) in HAL_SPI_Abort_IT()
2929 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2935 hspi->hdmarx->XferAbortCallback = NULL; in HAL_SPI_Abort_IT()
2944 SPI_AbortTransfer(hspi); in HAL_SPI_Abort_IT()
2947 if (HAL_IS_BIT_SET(hspi->ErrorCode, HAL_SPI_ERROR_ABORT)) in HAL_SPI_Abort_IT()
2955 hspi->ErrorCode = HAL_SPI_ERROR_NONE; in HAL_SPI_Abort_IT()
2959 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_Abort_IT()
2963 hspi->AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2965 HAL_SPI_AbortCpltCallback(hspi); in HAL_SPI_Abort_IT()
2982 HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAPause() argument
2985 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAPause()
2997 HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAResume() argument
3000 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAResume()
3012 HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi) in HAL_SPI_DMAStop() argument
3015 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_NOT_SUPPORTED); in HAL_SPI_DMAStop()
3027 void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi) in HAL_SPI_IRQHandler() argument
3029 uint32_t itsource = hspi->Instance->IER; in HAL_SPI_IRQHandler()
3030 uint32_t itflag = hspi->Instance->SR; in HAL_SPI_IRQHandler()
3032 uint32_t cfg1 = hspi->Instance->CFG1; in HAL_SPI_IRQHandler()
3035 HAL_SPI_StateTypeDef State = hspi->State; in HAL_SPI_IRQHandler()
3037 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in HAL_SPI_IRQHandler()
3044 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_IRQHandler()
3048 hspi->SuspendCallback(hspi); in HAL_SPI_IRQHandler()
3050 HAL_SPI_SuspendCallback(hspi); in HAL_SPI_IRQHandler()
3059 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
3060 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
3068 hspi->RxISR(hspi); in HAL_SPI_IRQHandler()
3076 hspi->TxISR(hspi); in HAL_SPI_IRQHandler()
3089 __HAL_SPI_CLEAR_EOTFLAG(hspi); in HAL_SPI_IRQHandler()
3090 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in HAL_SPI_IRQHandler()
3091 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in HAL_SPI_IRQHandler()
3094 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_EOT); in HAL_SPI_IRQHandler()
3097 if (HAL_IS_BIT_CLR(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN)) in HAL_SPI_IRQHandler()
3100 while (hspi->RxXferCount != 0UL) in HAL_SPI_IRQHandler()
3103 if (hspi->Init.DataSize > SPI_DATASIZE_16BIT) in HAL_SPI_IRQHandler()
3105 *((uint32_t *)hspi->pRxBuffPtr) = *((__IO uint32_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
3106 hspi->pRxBuffPtr += sizeof(uint32_t); in HAL_SPI_IRQHandler()
3109 else if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) in HAL_SPI_IRQHandler()
3112 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in HAL_SPI_IRQHandler()
3114 *((uint16_t *)hspi->pRxBuffPtr) = *((__IO uint16_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
3116 hspi->pRxBuffPtr += sizeof(uint16_t); in HAL_SPI_IRQHandler()
3121 *((uint8_t *)hspi->pRxBuffPtr) = *((__IO uint8_t *)&hspi->Instance->RXDR); in HAL_SPI_IRQHandler()
3122 hspi->pRxBuffPtr += sizeof(uint8_t); in HAL_SPI_IRQHandler()
3125 hspi->RxXferCount--; in HAL_SPI_IRQHandler()
3130 SPI_CloseTransfer(hspi); in HAL_SPI_IRQHandler()
3132 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
3133 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
3136 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3138 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3147 hspi->TxRxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3151 hspi->RxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3155 hspi->TxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3161 HAL_SPI_TxRxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3165 HAL_SPI_RxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3169 HAL_SPI_TxCpltCallback(hspi); in HAL_SPI_IRQHandler()
3186 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in HAL_SPI_IRQHandler()
3187 __HAL_SPI_CLEAR_OVRFLAG(hspi); in HAL_SPI_IRQHandler()
3193 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in HAL_SPI_IRQHandler()
3194 __HAL_SPI_CLEAR_MODFFLAG(hspi); in HAL_SPI_IRQHandler()
3200 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in HAL_SPI_IRQHandler()
3201 __HAL_SPI_CLEAR_FREFLAG(hspi); in HAL_SPI_IRQHandler()
3207 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_UDR); in HAL_SPI_IRQHandler()
3208 __HAL_SPI_CLEAR_UDRFLAG(hspi); in HAL_SPI_IRQHandler()
3211 if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) in HAL_SPI_IRQHandler()
3214 __HAL_SPI_DISABLE(hspi); in HAL_SPI_IRQHandler()
3217 __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_EOT | SPI_IT_RXP | SPI_IT_TXP | SPI_IT_MODF | in HAL_SPI_IRQHandler()
3225 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in HAL_SPI_IRQHandler()
3228 if (hspi->hdmarx != NULL) in HAL_SPI_IRQHandler()
3232 hspi->hdmarx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
3233 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmarx)) in HAL_SPI_IRQHandler()
3235 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
3239 if (hspi->hdmatx != NULL) in HAL_SPI_IRQHandler()
3243 hspi->hdmatx->XferAbortCallback = SPI_DMAAbortOnError; in HAL_SPI_IRQHandler()
3244 if (HAL_OK != HAL_DMA_Abort_IT(hspi->hdmatx)) in HAL_SPI_IRQHandler()
3246 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_ABORT); in HAL_SPI_IRQHandler()
3254 hspi->State = HAL_SPI_STATE_READY; in HAL_SPI_IRQHandler()
3258 hspi->ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3260 HAL_SPI_ErrorCallback(hspi); in HAL_SPI_IRQHandler()
3276 __weak void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_TxCpltCallback() argument
3279 UNUSED(hspi); in HAL_SPI_TxCpltCallback()
3292 __weak void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_RxCpltCallback() argument
3295 UNUSED(hspi); in HAL_SPI_RxCpltCallback()
3308 __weak void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_TxRxCpltCallback() argument
3311 UNUSED(hspi); in HAL_SPI_TxRxCpltCallback()
3324 __weak void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 … in HAL_SPI_TxHalfCpltCallback() argument
3327 UNUSED(hspi); in HAL_SPI_TxHalfCpltCallback()
3340 __weak void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 … in HAL_SPI_RxHalfCpltCallback() argument
3343 UNUSED(hspi); in HAL_SPI_RxHalfCpltCallback()
3356 __weak void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.1… in HAL_SPI_TxRxHalfCpltCallback() argument
3359 UNUSED(hspi); in HAL_SPI_TxRxHalfCpltCallback()
3372 __weak void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_ErrorCallback() argument
3375 UNUSED(hspi); in HAL_SPI_ErrorCallback()
3390 __weak void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_AbortCpltCallback() argument
3393 UNUSED(hspi); in HAL_SPI_AbortCpltCallback()
3405 __weak void HAL_SPI_SuspendCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */ in HAL_SPI_SuspendCallback() argument
3408 UNUSED(hspi); in HAL_SPI_SuspendCallback()
3440 HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetState() argument
3443 return hspi->State; in HAL_SPI_GetState()
3452 uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi) in HAL_SPI_GetError() argument
3455 return hspi->ErrorCode; in HAL_SPI_GetError()
3480 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATransmitCplt() local
3482 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMATransmitCplt()
3484 if (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR) in SPI_DMATransmitCplt()
3487 hspi->TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3489 HAL_SPI_TxCpltCallback(hspi); in SPI_DMATransmitCplt()
3495 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMATransmitCplt()
3508 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAReceiveCplt() local
3510 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMAReceiveCplt()
3512 if (hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) in SPI_DMAReceiveCplt()
3515 hspi->RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3517 HAL_SPI_RxCpltCallback(hspi); in SPI_DMAReceiveCplt()
3523 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMAReceiveCplt()
3536 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATransmitReceiveCplt() local
3538 if (hspi->State != HAL_SPI_STATE_ABORT) in SPI_DMATransmitReceiveCplt()
3540 if ((hspi->hdmarx->Mode == DMA_LINKEDLIST_CIRCULAR) && in SPI_DMATransmitReceiveCplt()
3541 (hspi->hdmatx->Mode == DMA_LINKEDLIST_CIRCULAR)) in SPI_DMATransmitReceiveCplt()
3544 hspi->TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3546 HAL_SPI_TxRxCpltCallback(hspi); in SPI_DMATransmitReceiveCplt()
3552 __HAL_SPI_ENABLE_IT(hspi, SPI_IT_EOT); in SPI_DMATransmitReceiveCplt()
3565 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfTransmitCplt() local
3569 hspi->TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3571 HAL_SPI_TxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitCplt()
3583 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfReceiveCplt() local
3587 hspi->RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3589 HAL_SPI_RxHalfCpltCallback(hspi); in SPI_DMAHalfReceiveCplt()
3601 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *) in SPI_DMAHalfTransmitReceiveCplt() local
3605 hspi->TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3607 HAL_SPI_TxRxHalfCpltCallback(hspi); in SPI_DMAHalfTransmitReceiveCplt()
3619 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAError() local
3625 SPI_CloseTransfer(hspi); in SPI_DMAError()
3627 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_DMA); in SPI_DMAError()
3628 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAError()
3630 hspi->ErrorCallback(hspi); in SPI_DMAError()
3632 HAL_SPI_ErrorCallback(hspi); in SPI_DMAError()
3645 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMAAbortOnError() local
3646 hspi->RxXferCount = (uint16_t) 0UL; in SPI_DMAAbortOnError()
3647 hspi->TxXferCount = (uint16_t) 0UL; in SPI_DMAAbortOnError()
3650 hspi->State = HAL_SPI_STATE_READY; in SPI_DMAAbortOnError()
3653 hspi->ErrorCallback(hspi); in SPI_DMAAbortOnError()
3655 HAL_SPI_ErrorCallback(hspi); in SPI_DMAAbortOnError()
3669 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMATxAbortCallback() local
3671 hspi->hdmatx->XferAbortCallback = NULL; in SPI_DMATxAbortCallback()
3674 if (hspi->hdmarx != NULL) in SPI_DMATxAbortCallback()
3676 if (hspi->hdmarx->XferAbortCallback != NULL) in SPI_DMATxAbortCallback()
3683 SPI_AbortTransfer(hspi); in SPI_DMATxAbortCallback()
3686 hspi->State = HAL_SPI_STATE_READY; in SPI_DMATxAbortCallback()
3690 hspi->AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3692 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMATxAbortCallback()
3706 SPI_HandleTypeDef *hspi = (SPI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SPI_DMARxAbortCallback() local
3708 hspi->hdmarx->XferAbortCallback = NULL; in SPI_DMARxAbortCallback()
3711 if (hspi->hdmatx != NULL) in SPI_DMARxAbortCallback()
3713 if (hspi->hdmatx->XferAbortCallback != NULL) in SPI_DMARxAbortCallback()
3720 SPI_AbortTransfer(hspi); in SPI_DMARxAbortCallback()
3723 hspi->State = HAL_SPI_STATE_READY; in SPI_DMARxAbortCallback()
3727 hspi->AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3729 HAL_SPI_AbortCpltCallback(hspi); in SPI_DMARxAbortCallback()
3740 static void SPI_RxISR_8BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_8BIT() argument
3743 *((uint8_t *)hspi->pRxBuffPtr) = (*(__IO uint8_t *)&hspi->Instance->RXDR); in SPI_RxISR_8BIT()
3744 hspi->pRxBuffPtr += sizeof(uint8_t); in SPI_RxISR_8BIT()
3745 hspi->RxXferCount--; in SPI_RxISR_8BIT()
3748 if (hspi->RxXferCount == 0UL) in SPI_RxISR_8BIT()
3751 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_8BIT()
3762 static void SPI_RxISR_16BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_16BIT() argument
3766 __IO uint16_t *prxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->RXDR)); in SPI_RxISR_16BIT()
3768 *((uint16_t *)hspi->pRxBuffPtr) = *prxdr_16bits; in SPI_RxISR_16BIT()
3770 *((uint16_t *)hspi->pRxBuffPtr) = (*(__IO uint16_t *)&hspi->Instance->RXDR); in SPI_RxISR_16BIT()
3772 hspi->pRxBuffPtr += sizeof(uint16_t); in SPI_RxISR_16BIT()
3773 hspi->RxXferCount--; in SPI_RxISR_16BIT()
3776 if (hspi->RxXferCount == 0UL) in SPI_RxISR_16BIT()
3779 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_16BIT()
3790 static void SPI_RxISR_32BIT(SPI_HandleTypeDef *hspi) in SPI_RxISR_32BIT() argument
3793 *((uint32_t *)hspi->pRxBuffPtr) = (*(__IO uint32_t *)&hspi->Instance->RXDR); in SPI_RxISR_32BIT()
3794 hspi->pRxBuffPtr += sizeof(uint32_t); in SPI_RxISR_32BIT()
3795 hspi->RxXferCount--; in SPI_RxISR_32BIT()
3798 if (hspi->RxXferCount == 0UL) in SPI_RxISR_32BIT()
3801 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXP); in SPI_RxISR_32BIT()
3812 static void SPI_TxISR_8BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_8BIT() argument
3815 *(__IO uint8_t *)&hspi->Instance->TXDR = *((const uint8_t *)hspi->pTxBuffPtr); in SPI_TxISR_8BIT()
3816 hspi->pTxBuffPtr += sizeof(uint8_t); in SPI_TxISR_8BIT()
3817 hspi->TxXferCount--; in SPI_TxISR_8BIT()
3820 if (hspi->TxXferCount == 0UL) in SPI_TxISR_8BIT()
3823 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_8BIT()
3833 static void SPI_TxISR_16BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_16BIT() argument
3837 __IO uint16_t *ptxdr_16bits = (__IO uint16_t *)(&(hspi->Instance->TXDR)); in SPI_TxISR_16BIT()
3839 *ptxdr_16bits = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3841 *((__IO uint16_t *)&hspi->Instance->TXDR) = *((const uint16_t *)hspi->pTxBuffPtr); in SPI_TxISR_16BIT()
3843 hspi->pTxBuffPtr += sizeof(uint16_t); in SPI_TxISR_16BIT()
3844 hspi->TxXferCount--; in SPI_TxISR_16BIT()
3847 if (hspi->TxXferCount == 0UL) in SPI_TxISR_16BIT()
3850 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_16BIT()
3860 static void SPI_TxISR_32BIT(SPI_HandleTypeDef *hspi) in SPI_TxISR_32BIT() argument
3863 *((__IO uint32_t *)&hspi->Instance->TXDR) = *((const uint32_t *)hspi->pTxBuffPtr); in SPI_TxISR_32BIT()
3864 hspi->pTxBuffPtr += sizeof(uint32_t); in SPI_TxISR_32BIT()
3865 hspi->TxXferCount--; in SPI_TxISR_32BIT()
3868 if (hspi->TxXferCount == 0UL) in SPI_TxISR_32BIT()
3871 __HAL_SPI_DISABLE_IT(hspi, SPI_IT_TXP); in SPI_TxISR_32BIT()
3881 static void SPI_AbortTransfer(SPI_HandleTypeDef *hspi) in SPI_AbortTransfer() argument
3884 __HAL_SPI_DISABLE(hspi); in SPI_AbortTransfer()
3887 …__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()
3891 __HAL_SPI_CLEAR_EOTFLAG(hspi); in SPI_AbortTransfer()
3892 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in SPI_AbortTransfer()
3895 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in SPI_AbortTransfer()
3898 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_AbortTransfer()
3899 __HAL_SPI_CLEAR_UDRFLAG(hspi); in SPI_AbortTransfer()
3900 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_AbortTransfer()
3901 __HAL_SPI_CLEAR_MODFFLAG(hspi); in SPI_AbortTransfer()
3902 __HAL_SPI_CLEAR_SUSPFLAG(hspi); in SPI_AbortTransfer()
3905 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_AbortTransfer()
3908 hspi->TxXferCount = (uint16_t)0UL; in SPI_AbortTransfer()
3909 hspi->RxXferCount = (uint16_t)0UL; in SPI_AbortTransfer()
3920 static void SPI_CloseTransfer(SPI_HandleTypeDef *hspi) in SPI_CloseTransfer() argument
3922 uint32_t itflag = hspi->Instance->SR; in SPI_CloseTransfer()
3924 __HAL_SPI_CLEAR_EOTFLAG(hspi); in SPI_CloseTransfer()
3925 __HAL_SPI_CLEAR_TXTFFLAG(hspi); in SPI_CloseTransfer()
3928 __HAL_SPI_DISABLE(hspi); in SPI_CloseTransfer()
3931 …__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()
3935 CLEAR_BIT(hspi->Instance->CFG1, SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN); in SPI_CloseTransfer()
3938 if (hspi->State != HAL_SPI_STATE_BUSY_RX) in SPI_CloseTransfer()
3942 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_UDR); in SPI_CloseTransfer()
3943 __HAL_SPI_CLEAR_UDRFLAG(hspi); in SPI_CloseTransfer()
3948 if (hspi->State != HAL_SPI_STATE_BUSY_TX) in SPI_CloseTransfer()
3952 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_OVR); in SPI_CloseTransfer()
3953 __HAL_SPI_CLEAR_OVRFLAG(hspi); in SPI_CloseTransfer()
3958 if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) in SPI_CloseTransfer()
3962 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); in SPI_CloseTransfer()
3963 __HAL_SPI_CLEAR_CRCERRFLAG(hspi); in SPI_CloseTransfer()
3972 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_MODF); in SPI_CloseTransfer()
3973 __HAL_SPI_CLEAR_MODFFLAG(hspi); in SPI_CloseTransfer()
3979 SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FRE); in SPI_CloseTransfer()
3980 __HAL_SPI_CLEAR_FREFLAG(hspi); in SPI_CloseTransfer()
3983 hspi->TxXferCount = (uint16_t)0UL; in SPI_CloseTransfer()
3984 hspi->RxXferCount = (uint16_t)0UL; in SPI_CloseTransfer()
3997 static HAL_StatusTypeDef SPI_WaitOnFlagUntilTimeout(const SPI_HandleTypeDef *hspi, uint32_t Flag, F… in SPI_WaitOnFlagUntilTimeout() argument
4001 while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) == Status) in SPI_WaitOnFlagUntilTimeout()
4018 static uint32_t SPI_GetPacketSize(const SPI_HandleTypeDef *hspi) in SPI_GetPacketSize() argument
4020 uint32_t fifo_threashold = (hspi->Init.FifoThreshold >> SPI_CFG1_FTHLV_Pos) + 1UL; in SPI_GetPacketSize()
4021 uint32_t data_size = (hspi->Init.DataSize >> SPI_CFG1_DSIZE_Pos) + 1UL; in SPI_GetPacketSize()