Lines Matching refs:hpssi
189 static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode);
196 static HAL_StatusTypeDef PSSI_WaitOnStatusUntilTimeout(PSSI_HandleTypeDef *hpssi, uint32_t Flag, Fl…
246 HAL_StatusTypeDef HAL_PSSI_Init(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_Init() argument
249 if (hpssi == NULL) in HAL_PSSI_Init()
255 assert_param(IS_PSSI_ALL_INSTANCE(hpssi->Instance)); in HAL_PSSI_Init()
256 assert_param(IS_PSSI_CONTROL_SIGNAL(hpssi->Init.ControlSignal)); in HAL_PSSI_Init()
257 assert_param(IS_PSSI_BUSWIDTH(hpssi->Init.BusWidth)); in HAL_PSSI_Init()
258 assert_param(IS_PSSI_CLOCK_POLARITY(hpssi->Init.ClockPolarity)); in HAL_PSSI_Init()
259 assert_param(IS_PSSI_DE_POLARITY(hpssi->Init.DataEnablePolarity)); in HAL_PSSI_Init()
260 assert_param(IS_PSSI_RDY_POLARITY(hpssi->Init.ReadyPolarity)); in HAL_PSSI_Init()
262 if (hpssi->State == HAL_PSSI_STATE_RESET) in HAL_PSSI_Init()
265 hpssi->Lock = HAL_UNLOCKED; in HAL_PSSI_Init()
269 hpssi->TxCpltCallback = HAL_PSSI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_PSSI_Init()
270 hpssi->RxCpltCallback = HAL_PSSI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_PSSI_Init()
271 …hpssi->ErrorCallback = HAL_PSSI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_PSSI_Init()
272 …hpssi->AbortCpltCallback = HAL_PSSI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_PSSI_Init()
274 if (hpssi->MspInitCallback == NULL) in HAL_PSSI_Init()
276 hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */ in HAL_PSSI_Init()
280 hpssi->MspInitCallback(hpssi); in HAL_PSSI_Init()
283 HAL_PSSI_MspInit(hpssi); in HAL_PSSI_Init()
287 hpssi->State = HAL_PSSI_STATE_BUSY; in HAL_PSSI_Init()
290 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_Init()
295 MODIFY_REG(hpssi->Instance->CR, PSSI_CR_DERDYCFG | PSSI_CR_EDM | PSSI_CR_DEPOL | PSSI_CR_RDYPOL, in HAL_PSSI_Init()
296 hpssi->Init.ControlSignal | hpssi->Init.DataEnablePolarity | in HAL_PSSI_Init()
297 hpssi->Init.ReadyPolarity | hpssi->Init.BusWidth); in HAL_PSSI_Init()
299 hpssi->ErrorCode = HAL_PSSI_ERROR_NONE; in HAL_PSSI_Init()
300 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Init()
311 HAL_StatusTypeDef HAL_PSSI_DeInit(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_DeInit() argument
314 if (hpssi == NULL) in HAL_PSSI_DeInit()
320 assert_param(IS_PSSI_ALL_INSTANCE(hpssi->Instance)); in HAL_PSSI_DeInit()
322 hpssi->State = HAL_PSSI_STATE_BUSY; in HAL_PSSI_DeInit()
325 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_DeInit()
328 if (hpssi->MspDeInitCallback == NULL) in HAL_PSSI_DeInit()
330 hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PSSI_DeInit()
334 hpssi->MspDeInitCallback(hpssi); in HAL_PSSI_DeInit()
337 HAL_PSSI_MspDeInit(hpssi); in HAL_PSSI_DeInit()
340 hpssi->ErrorCode = HAL_PSSI_ERROR_NONE; in HAL_PSSI_DeInit()
341 hpssi->State = HAL_PSSI_STATE_RESET; in HAL_PSSI_DeInit()
344 __HAL_UNLOCK(hpssi); in HAL_PSSI_DeInit()
355 __weak void HAL_PSSI_MspInit(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_MspInit() argument
358 UNUSED(hpssi); in HAL_PSSI_MspInit()
371 __weak void HAL_PSSI_MspDeInit(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_MspDeInit() argument
374 UNUSED(hpssi); in HAL_PSSI_MspDeInit()
401 HAL_StatusTypeDef HAL_PSSI_RegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_CallbackIDTypeDef C… in HAL_PSSI_RegisterCallback() argument
409 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_RegisterCallback()
414 if (HAL_PSSI_STATE_READY == hpssi->State) in HAL_PSSI_RegisterCallback()
419 hpssi->TxCpltCallback = pCallback; in HAL_PSSI_RegisterCallback()
423 hpssi->RxCpltCallback = pCallback; in HAL_PSSI_RegisterCallback()
427 hpssi->ErrorCallback = pCallback; in HAL_PSSI_RegisterCallback()
431 hpssi->AbortCpltCallback = pCallback; in HAL_PSSI_RegisterCallback()
435 hpssi->MspInitCallback = pCallback; in HAL_PSSI_RegisterCallback()
439 hpssi->MspDeInitCallback = pCallback; in HAL_PSSI_RegisterCallback()
444 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_RegisterCallback()
451 else if (HAL_PSSI_STATE_RESET == hpssi->State) in HAL_PSSI_RegisterCallback()
456 hpssi->MspInitCallback = pCallback; in HAL_PSSI_RegisterCallback()
460 hpssi->MspDeInitCallback = pCallback; in HAL_PSSI_RegisterCallback()
465 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_RegisterCallback()
475 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_RegisterCallback()
502 HAL_StatusTypeDef HAL_PSSI_UnRegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_CallbackIDTypeDef… in HAL_PSSI_UnRegisterCallback() argument
506 if (HAL_PSSI_STATE_READY == hpssi->State) in HAL_PSSI_UnRegisterCallback()
511 … hpssi->TxCpltCallback = HAL_PSSI_TxCpltCallback; /* Legacy weak TxCpltCallback */ in HAL_PSSI_UnRegisterCallback()
515 … hpssi->RxCpltCallback = HAL_PSSI_RxCpltCallback; /* Legacy weak RxCpltCallback */ in HAL_PSSI_UnRegisterCallback()
519 … hpssi->ErrorCallback = HAL_PSSI_ErrorCallback; /* Legacy weak ErrorCallback */ in HAL_PSSI_UnRegisterCallback()
523 … hpssi->AbortCpltCallback = HAL_PSSI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ in HAL_PSSI_UnRegisterCallback()
527 … hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */ in HAL_PSSI_UnRegisterCallback()
531 … hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PSSI_UnRegisterCallback()
536 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_UnRegisterCallback()
543 else if (HAL_PSSI_STATE_RESET == hpssi->State) in HAL_PSSI_UnRegisterCallback()
548 … hpssi->MspInitCallback = HAL_PSSI_MspInit; /* Legacy weak MspInit */ in HAL_PSSI_UnRegisterCallback()
552 … hpssi->MspDeInitCallback = HAL_PSSI_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PSSI_UnRegisterCallback()
557 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_UnRegisterCallback()
567 hpssi->ErrorCode |= HAL_PSSI_ERROR_INVALID_CALLBACK; in HAL_PSSI_UnRegisterCallback()
629 HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, uint32_t Size, uint3… in HAL_PSSI_Transmit() argument
634 if (((hpssi->Init.DataWidth == HAL_PSSI_8BITS) && (hpssi->Init.BusWidth != HAL_PSSI_8LINES)) || in HAL_PSSI_Transmit()
635 ((hpssi->Init.DataWidth == HAL_PSSI_16BITS) && ((Size % 2U) != 0U)) || in HAL_PSSI_Transmit()
636 ((hpssi->Init.DataWidth == HAL_PSSI_32BITS) && ((Size % 4U) != 0U))) in HAL_PSSI_Transmit()
638 hpssi->ErrorCode = HAL_PSSI_ERROR_NOT_SUPPORTED; in HAL_PSSI_Transmit()
641 if (hpssi->State == HAL_PSSI_STATE_READY) in HAL_PSSI_Transmit()
644 __HAL_LOCK(hpssi); in HAL_PSSI_Transmit()
646 hpssi->State = HAL_PSSI_STATE_BUSY; in HAL_PSSI_Transmit()
647 hpssi->ErrorCode = HAL_PSSI_ERROR_NONE; in HAL_PSSI_Transmit()
650 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_Transmit()
653 MODIFY_REG(hpssi->Instance->CR, (PSSI_CR_OUTEN | PSSI_CR_CKPOL), in HAL_PSSI_Transmit()
654 …(PSSI_CR_OUTEN_OUTPUT |((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? 0U : PSSI_CR_CKPOL))… in HAL_PSSI_Transmit()
658 hpssi->Instance->CR &= PSSI_CR_DMA_DISABLE; in HAL_PSSI_Transmit()
662 HAL_PSSI_ENABLE(hpssi); in HAL_PSSI_Transmit()
664 if (hpssi->Init.DataWidth == HAL_PSSI_8BITS) in HAL_PSSI_Transmit()
672 … if (PSSI_WaitOnStatusUntilTimeout(hpssi, PSSI_FLAG_RTT1B, RESET, Timeout, tickstart) != HAL_OK) in HAL_PSSI_Transmit()
674 hpssi->ErrorCode = HAL_PSSI_ERROR_TIMEOUT; in HAL_PSSI_Transmit()
675 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit()
677 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit()
681 *(__IO uint8_t *)(&hpssi->Instance->DR) = *(uint8_t *)pbuffer; in HAL_PSSI_Transmit()
689 else if (hpssi->Init.DataWidth == HAL_PSSI_16BITS) in HAL_PSSI_Transmit()
692 __IO uint16_t *dr = (__IO uint16_t *)(&hpssi->Instance->DR); in HAL_PSSI_Transmit()
699 … if (PSSI_WaitOnStatusUntilTimeout(hpssi, PSSI_FLAG_RTT4B, RESET, Timeout, tickstart) != HAL_OK) in HAL_PSSI_Transmit()
701 hpssi->ErrorCode = HAL_PSSI_ERROR_TIMEOUT; in HAL_PSSI_Transmit()
702 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit()
704 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit()
715 else if (hpssi->Init.DataWidth == HAL_PSSI_32BITS) in HAL_PSSI_Transmit()
723 … if (PSSI_WaitOnStatusUntilTimeout(hpssi, PSSI_FLAG_RTT4B, RESET, Timeout, tickstart) != HAL_OK) in HAL_PSSI_Transmit()
725 hpssi->ErrorCode = HAL_PSSI_ERROR_TIMEOUT; in HAL_PSSI_Transmit()
726 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit()
728 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit()
732 *(__IO uint32_t *)(&hpssi->Instance->DR) = *pbuffer; in HAL_PSSI_Transmit()
741 hpssi->ErrorCode = HAL_PSSI_ERROR_NOT_SUPPORTED; in HAL_PSSI_Transmit()
742 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit()
744 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit()
749 if (HAL_PSSI_GET_FLAG(hpssi, PSSI_FLAG_OVR_RIS) != 0U) in HAL_PSSI_Transmit()
751 HAL_PSSI_CLEAR_FLAG(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Transmit()
752 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_Transmit()
753 hpssi->ErrorCode = HAL_PSSI_ERROR_UNDER_RUN; in HAL_PSSI_Transmit()
754 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit()
756 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit()
760 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit()
763 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit()
782 HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, uint32_t Size, uint32… in HAL_PSSI_Receive() argument
787 if (((hpssi->Init.DataWidth == HAL_PSSI_8BITS) && (hpssi->Init.BusWidth != HAL_PSSI_8LINES)) || in HAL_PSSI_Receive()
788 ((hpssi->Init.DataWidth == HAL_PSSI_16BITS) && ((Size % 2U) != 0U)) || in HAL_PSSI_Receive()
789 ((hpssi->Init.DataWidth == HAL_PSSI_32BITS) && ((Size % 4U) != 0U))) in HAL_PSSI_Receive()
791 hpssi->ErrorCode = HAL_PSSI_ERROR_NOT_SUPPORTED; in HAL_PSSI_Receive()
795 if (hpssi->State == HAL_PSSI_STATE_READY) in HAL_PSSI_Receive()
798 __HAL_LOCK(hpssi); in HAL_PSSI_Receive()
800 hpssi->State = HAL_PSSI_STATE_BUSY; in HAL_PSSI_Receive()
801 hpssi->ErrorCode = HAL_PSSI_ERROR_NONE; in HAL_PSSI_Receive()
804 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_Receive()
806 MODIFY_REG(hpssi->Instance->CR, (PSSI_CR_OUTEN | PSSI_CR_CKPOL), in HAL_PSSI_Receive()
807 …(PSSI_CR_OUTEN_INPUT | ((hpssi->Init.ClockPolarity == HAL_PSSI_FALLING_EDGE) ? 0U : PSSI_CR_CKPOL)… in HAL_PSSI_Receive()
811 hpssi->Instance->CR &= PSSI_CR_DMA_DISABLE; in HAL_PSSI_Receive()
815 HAL_PSSI_ENABLE(hpssi); in HAL_PSSI_Receive()
816 if (hpssi->Init.DataWidth == HAL_PSSI_8BITS) in HAL_PSSI_Receive()
825 … if (PSSI_WaitOnStatusUntilTimeout(hpssi, PSSI_FLAG_RTT1B, RESET, Timeout, tickstart) != HAL_OK) in HAL_PSSI_Receive()
827 hpssi->ErrorCode = HAL_PSSI_ERROR_TIMEOUT; in HAL_PSSI_Receive()
828 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive()
830 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive()
834 *pbuffer = *(__IO uint8_t *)(&hpssi->Instance->DR); in HAL_PSSI_Receive()
839 else if (hpssi->Init.DataWidth == HAL_PSSI_16BITS) in HAL_PSSI_Receive()
842 __IO uint16_t *dr = (__IO uint16_t *)(&hpssi->Instance->DR); in HAL_PSSI_Receive()
849 … if (PSSI_WaitOnStatusUntilTimeout(hpssi, PSSI_FLAG_RTT4B, RESET, Timeout, tickstart) != HAL_OK) in HAL_PSSI_Receive()
851 hpssi->ErrorCode = HAL_PSSI_ERROR_TIMEOUT; in HAL_PSSI_Receive()
852 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive()
854 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive()
864 else if (hpssi->Init.DataWidth == HAL_PSSI_32BITS) in HAL_PSSI_Receive()
873 … if (PSSI_WaitOnStatusUntilTimeout(hpssi, PSSI_FLAG_RTT4B, RESET, Timeout, tickstart) != HAL_OK) in HAL_PSSI_Receive()
875 hpssi->ErrorCode = HAL_PSSI_ERROR_TIMEOUT; in HAL_PSSI_Receive()
876 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive()
878 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive()
883 *pbuffer = *(__IO uint32_t *)(&hpssi->Instance->DR); in HAL_PSSI_Receive()
890 hpssi->ErrorCode = HAL_PSSI_ERROR_NOT_SUPPORTED; in HAL_PSSI_Receive()
891 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive()
893 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive()
898 if (HAL_PSSI_GET_FLAG(hpssi, PSSI_FLAG_OVR_RIS) != 0U) in HAL_PSSI_Receive()
900 HAL_PSSI_CLEAR_FLAG(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Receive()
901 hpssi->ErrorCode = HAL_PSSI_ERROR_OVER_RUN; in HAL_PSSI_Receive()
902 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive()
906 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive()
909 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive()
928 HAL_StatusTypeDef HAL_PSSI_Transmit_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pData, uint32_t Size) in HAL_PSSI_Transmit_DMA() argument
932 if (hpssi->State == HAL_PSSI_STATE_READY) in HAL_PSSI_Transmit_DMA()
936 __HAL_LOCK(hpssi); in HAL_PSSI_Transmit_DMA()
938 hpssi->State = HAL_PSSI_STATE_BUSY_TX; in HAL_PSSI_Transmit_DMA()
939 hpssi->ErrorCode = HAL_PSSI_ERROR_NONE; in HAL_PSSI_Transmit_DMA()
942 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_Transmit_DMA()
945 hpssi->pBuffPtr = pData; in HAL_PSSI_Transmit_DMA()
946 hpssi->XferCount = Size; in HAL_PSSI_Transmit_DMA()
948 if (hpssi->XferCount > PSSI_MAX_NBYTE_SIZE) in HAL_PSSI_Transmit_DMA()
950 hpssi->XferSize = PSSI_MAX_NBYTE_SIZE; in HAL_PSSI_Transmit_DMA()
954 hpssi->XferSize = hpssi->XferCount; in HAL_PSSI_Transmit_DMA()
957 if (hpssi->XferSize > 0U) in HAL_PSSI_Transmit_DMA()
959 if (hpssi->hdmatx != NULL) in HAL_PSSI_Transmit_DMA()
963 if (hpssi->hdmatx->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE) in HAL_PSSI_Transmit_DMA()
965 MODIFY_REG(hpssi->Instance->CR, PSSI_CR_DMAEN | PSSI_CR_OUTEN | PSSI_CR_CKPOL, in HAL_PSSI_Transmit_DMA()
967 ((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? 0U : PSSI_CR_CKPOL)); in HAL_PSSI_Transmit_DMA()
971 MODIFY_REG(hpssi->Instance->CR, PSSI_CR_DMAEN | PSSI_CR_OUTEN | PSSI_CR_CKPOL, in HAL_PSSI_Transmit_DMA()
972 PSSI_CR_DMA_ENABLE | hpssi->Init.BusWidth | PSSI_CR_OUTEN_OUTPUT | in HAL_PSSI_Transmit_DMA()
973 ((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? 0U : PSSI_CR_CKPOL)); in HAL_PSSI_Transmit_DMA()
977 hpssi->hdmatx->XferCpltCallback = PSSI_DMATransmitCplt; in HAL_PSSI_Transmit_DMA()
980 hpssi->hdmatx->XferErrorCallback = PSSI_DMAError; in HAL_PSSI_Transmit_DMA()
983 hpssi->hdmatx->XferHalfCpltCallback = NULL; in HAL_PSSI_Transmit_DMA()
984 hpssi->hdmatx->XferAbortCallback = NULL; in HAL_PSSI_Transmit_DMA()
987 … dmaxferstatus = HAL_DMA_Start_IT(hpssi->hdmatx, (uint32_t)pData, (uint32_t)&hpssi->Instance->DR, in HAL_PSSI_Transmit_DMA()
988 hpssi->XferSize); in HAL_PSSI_Transmit_DMA()
993 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit_DMA()
996 hpssi->ErrorCode |= HAL_PSSI_ERROR_DMA; in HAL_PSSI_Transmit_DMA()
999 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit_DMA()
1007 hpssi->XferCount -= hpssi->XferSize; in HAL_PSSI_Transmit_DMA()
1010 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit_DMA()
1016 HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Transmit_DMA()
1019 hpssi->Instance->CR |= PSSI_CR_DMA_ENABLE; in HAL_PSSI_Transmit_DMA()
1021 HAL_PSSI_ENABLE(hpssi); in HAL_PSSI_Transmit_DMA()
1026 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Transmit_DMA()
1029 hpssi->ErrorCode |= HAL_PSSI_ERROR_DMA; in HAL_PSSI_Transmit_DMA()
1032 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit_DMA()
1040 __HAL_UNLOCK(hpssi); in HAL_PSSI_Transmit_DMA()
1048 HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Transmit_DMA()
1066 HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pData, uint32_t Size) in HAL_PSSI_Receive_DMA() argument
1071 if (hpssi->State == HAL_PSSI_STATE_READY) in HAL_PSSI_Receive_DMA()
1075 HAL_PSSI_DISABLE(hpssi); in HAL_PSSI_Receive_DMA()
1077 __HAL_LOCK(hpssi); in HAL_PSSI_Receive_DMA()
1079 hpssi->State = HAL_PSSI_STATE_BUSY_RX; in HAL_PSSI_Receive_DMA()
1080 hpssi->ErrorCode = HAL_PSSI_ERROR_NONE; in HAL_PSSI_Receive_DMA()
1083 hpssi->pBuffPtr = pData; in HAL_PSSI_Receive_DMA()
1084 hpssi->XferCount = Size; in HAL_PSSI_Receive_DMA()
1086 if (hpssi->XferCount > PSSI_MAX_NBYTE_SIZE) in HAL_PSSI_Receive_DMA()
1088 hpssi->XferSize = PSSI_MAX_NBYTE_SIZE; in HAL_PSSI_Receive_DMA()
1092 hpssi->XferSize = hpssi->XferCount; in HAL_PSSI_Receive_DMA()
1095 if (hpssi->XferSize > 0U) in HAL_PSSI_Receive_DMA()
1097 if (hpssi->hdmarx != NULL) in HAL_PSSI_Receive_DMA()
1100 if (hpssi->hdmarx->Init.PeriphDataAlignment == DMA_PDATAALIGN_BYTE) in HAL_PSSI_Receive_DMA()
1102 …MODIFY_REG(hpssi->Instance->CR, PSSI_CR_DMAEN | PSSI_CR_OUTEN | PSSI_CR_CKPOL, PSSI_CR_DMA_ENABLE | in HAL_PSSI_Receive_DMA()
1103 ((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? PSSI_CR_CKPOL : 0U)); in HAL_PSSI_Receive_DMA()
1107 MODIFY_REG(hpssi->Instance->CR, PSSI_CR_DMAEN | PSSI_CR_OUTEN | PSSI_CR_CKPOL, in HAL_PSSI_Receive_DMA()
1108 PSSI_CR_DMA_ENABLE | hpssi->Init.BusWidth | in HAL_PSSI_Receive_DMA()
1109 ((hpssi->Init.ClockPolarity == HAL_PSSI_RISING_EDGE) ? PSSI_CR_CKPOL : 0U)); in HAL_PSSI_Receive_DMA()
1113 hpssi->hdmarx->XferCpltCallback = PSSI_DMAReceiveCplt; in HAL_PSSI_Receive_DMA()
1116 hpssi->hdmarx->XferErrorCallback = PSSI_DMAError; in HAL_PSSI_Receive_DMA()
1119 hpssi->hdmarx->XferHalfCpltCallback = NULL; in HAL_PSSI_Receive_DMA()
1120 hpssi->hdmarx->XferAbortCallback = NULL; in HAL_PSSI_Receive_DMA()
1123 … dmaxferstatus = HAL_DMA_Start_IT(hpssi->hdmarx, (uint32_t)&hpssi->Instance->DR, (uint32_t)pData, in HAL_PSSI_Receive_DMA()
1124 hpssi->XferSize); in HAL_PSSI_Receive_DMA()
1129 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive_DMA()
1132 hpssi->ErrorCode |= HAL_PSSI_ERROR_DMA; in HAL_PSSI_Receive_DMA()
1135 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive_DMA()
1143 hpssi->XferCount -= hpssi->XferSize; in HAL_PSSI_Receive_DMA()
1146 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive_DMA()
1152 HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Receive_DMA()
1155 hpssi->Instance->CR |= PSSI_CR_DMA_ENABLE; in HAL_PSSI_Receive_DMA()
1157 HAL_PSSI_ENABLE(hpssi); in HAL_PSSI_Receive_DMA()
1162 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_Receive_DMA()
1165 hpssi->ErrorCode |= HAL_PSSI_ERROR_DMA; in HAL_PSSI_Receive_DMA()
1168 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive_DMA()
1176 __HAL_UNLOCK(hpssi); in HAL_PSSI_Receive_DMA()
1179 HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Receive_DMA()
1196 HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_Abort_DMA() argument
1199 __HAL_LOCK(hpssi); in HAL_PSSI_Abort_DMA()
1202 HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Abort_DMA()
1205 hpssi->State = HAL_PSSI_STATE_ABORT; in HAL_PSSI_Abort_DMA()
1208 if ((hpssi->Instance->CR & PSSI_CR_DMAEN) == PSSI_CR_DMAEN) in HAL_PSSI_Abort_DMA()
1210 if (hpssi->State == HAL_PSSI_STATE_BUSY_TX) in HAL_PSSI_Abort_DMA()
1212 hpssi->Instance->CR &= ~PSSI_CR_DMAEN; in HAL_PSSI_Abort_DMA()
1214 if (hpssi->hdmatx != NULL) in HAL_PSSI_Abort_DMA()
1218 hpssi->hdmatx->XferAbortCallback = PSSI_DMAAbort; in HAL_PSSI_Abort_DMA()
1221 if (HAL_DMA_Abort_IT(hpssi->hdmatx) != HAL_OK) in HAL_PSSI_Abort_DMA()
1224 hpssi->hdmatx->XferAbortCallback(hpssi->hdmatx); in HAL_PSSI_Abort_DMA()
1229 else if (hpssi->State == HAL_PSSI_STATE_BUSY_RX) in HAL_PSSI_Abort_DMA()
1231 hpssi->Instance->CR &= ~PSSI_CR_DMAEN; in HAL_PSSI_Abort_DMA()
1233 if (hpssi->hdmarx != NULL) in HAL_PSSI_Abort_DMA()
1237 hpssi->hdmarx->XferAbortCallback = PSSI_DMAAbort; in HAL_PSSI_Abort_DMA()
1240 if (HAL_DMA_Abort_IT(hpssi->hdmarx) != HAL_OK) in HAL_PSSI_Abort_DMA()
1243 hpssi->hdmarx->XferAbortCallback(hpssi->hdmarx); in HAL_PSSI_Abort_DMA()
1252 hpssi->ErrorCallback(hpssi); in HAL_PSSI_Abort_DMA()
1254 HAL_PSSI_ErrorCallback(hpssi); in HAL_PSSI_Abort_DMA()
1260 __HAL_UNLOCK(hpssi); in HAL_PSSI_Abort_DMA()
1265 HAL_PSSI_ENABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_Abort_DMA()
1285 void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_IRQHandler() argument
1288 if (HAL_PSSI_GET_FLAG(hpssi, PSSI_FLAG_OVR_MIS) != 0U) in HAL_PSSI_IRQHandler()
1291 hpssi->XferCount = 0U; in HAL_PSSI_IRQHandler()
1294 HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in HAL_PSSI_IRQHandler()
1298 if ((hpssi->Instance->CR & PSSI_CR_DMAEN) == PSSI_CR_DMAEN) in HAL_PSSI_IRQHandler()
1300 if (hpssi->State == HAL_PSSI_STATE_BUSY_TX) in HAL_PSSI_IRQHandler()
1303 hpssi->ErrorCode |= HAL_PSSI_ERROR_UNDER_RUN; in HAL_PSSI_IRQHandler()
1305 hpssi->Instance->CR &= ~PSSI_CR_DMAEN; in HAL_PSSI_IRQHandler()
1307 if (hpssi->hdmatx != NULL) in HAL_PSSI_IRQHandler()
1311 hpssi->hdmatx->XferAbortCallback = PSSI_DMAAbort; in HAL_PSSI_IRQHandler()
1314 __HAL_UNLOCK(hpssi); in HAL_PSSI_IRQHandler()
1317 if (HAL_DMA_Abort_IT(hpssi->hdmatx) != HAL_OK) in HAL_PSSI_IRQHandler()
1320 hpssi->hdmatx->XferAbortCallback(hpssi->hdmatx); in HAL_PSSI_IRQHandler()
1325 else if (hpssi->State == HAL_PSSI_STATE_BUSY_RX) in HAL_PSSI_IRQHandler()
1328 hpssi->ErrorCode |= HAL_PSSI_ERROR_OVER_RUN; in HAL_PSSI_IRQHandler()
1330 hpssi->Instance->CR &= ~PSSI_CR_DMAEN; in HAL_PSSI_IRQHandler()
1332 if (hpssi->hdmarx != NULL) in HAL_PSSI_IRQHandler()
1336 hpssi->hdmarx->XferAbortCallback = PSSI_DMAAbort; in HAL_PSSI_IRQHandler()
1339 __HAL_UNLOCK(hpssi); in HAL_PSSI_IRQHandler()
1342 if (HAL_DMA_Abort_IT(hpssi->hdmarx) != HAL_OK) in HAL_PSSI_IRQHandler()
1345 hpssi->hdmarx->XferAbortCallback(hpssi->hdmarx); in HAL_PSSI_IRQHandler()
1353 hpssi->ErrorCallback(hpssi); in HAL_PSSI_IRQHandler()
1355 HAL_PSSI_ErrorCallback(hpssi); in HAL_PSSI_IRQHandler()
1362 if (hpssi->State == HAL_PSSI_STATE_ABORT) in HAL_PSSI_IRQHandler()
1364 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_IRQHandler()
1367 __HAL_UNLOCK(hpssi); in HAL_PSSI_IRQHandler()
1371 hpssi->AbortCpltCallback(hpssi); in HAL_PSSI_IRQHandler()
1373 HAL_PSSI_AbortCpltCallback(hpssi); in HAL_PSSI_IRQHandler()
1379 hpssi->State = HAL_PSSI_STATE_READY; in HAL_PSSI_IRQHandler()
1381 __HAL_UNLOCK(hpssi); in HAL_PSSI_IRQHandler()
1385 hpssi->ErrorCallback(hpssi); in HAL_PSSI_IRQHandler()
1387 HAL_PSSI_ErrorCallback(hpssi); in HAL_PSSI_IRQHandler()
1399 __weak void HAL_PSSI_TxCpltCallback(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_TxCpltCallback() argument
1402 UNUSED(hpssi); in HAL_PSSI_TxCpltCallback()
1415 __weak void HAL_PSSI_RxCpltCallback(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_RxCpltCallback() argument
1418 UNUSED(hpssi); in HAL_PSSI_RxCpltCallback()
1431 __weak void HAL_PSSI_ErrorCallback(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_ErrorCallback() argument
1434 UNUSED(hpssi); in HAL_PSSI_ErrorCallback()
1447 __weak void HAL_PSSI_AbortCpltCallback(PSSI_HandleTypeDef *hpssi) in HAL_PSSI_AbortCpltCallback() argument
1450 UNUSED(hpssi); in HAL_PSSI_AbortCpltCallback()
1482 HAL_PSSI_StateTypeDef HAL_PSSI_GetState(const PSSI_HandleTypeDef *hpssi) in HAL_PSSI_GetState() argument
1485 return hpssi->State; in HAL_PSSI_GetState()
1494 uint32_t HAL_PSSI_GetError(const PSSI_HandleTypeDef *hpssi) in HAL_PSSI_GetError() argument
1496 return hpssi->ErrorCode; in HAL_PSSI_GetError()
1517 static void PSSI_Error(PSSI_HandleTypeDef *hpssi, uint32_t ErrorCode) in PSSI_Error() argument
1520 hpssi->XferCount = 0U; in PSSI_Error()
1523 hpssi->ErrorCode |= ErrorCode; in PSSI_Error()
1526 HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in PSSI_Error()
1530 if ((hpssi->Instance->CR & PSSI_CR_DMAEN) == PSSI_CR_DMAEN) in PSSI_Error()
1532 if (hpssi->State == HAL_PSSI_STATE_BUSY_TX) in PSSI_Error()
1534 hpssi->Instance->CR &= ~PSSI_CR_DMAEN; in PSSI_Error()
1536 if (hpssi->hdmatx != NULL) in PSSI_Error()
1540 hpssi->hdmatx->XferAbortCallback = PSSI_DMAAbort; in PSSI_Error()
1543 __HAL_UNLOCK(hpssi); in PSSI_Error()
1546 if (HAL_DMA_Abort_IT(hpssi->hdmatx) != HAL_OK) in PSSI_Error()
1549 hpssi->hdmatx->XferAbortCallback(hpssi->hdmatx); in PSSI_Error()
1554 else if (hpssi->State == HAL_PSSI_STATE_BUSY_RX) in PSSI_Error()
1556 hpssi->Instance->CR &= ~PSSI_CR_DMAEN; in PSSI_Error()
1558 if (hpssi->hdmarx != NULL) in PSSI_Error()
1562 hpssi->hdmarx->XferAbortCallback = PSSI_DMAAbort; in PSSI_Error()
1565 __HAL_UNLOCK(hpssi); in PSSI_Error()
1568 if (HAL_DMA_Abort_IT(hpssi->hdmarx) != HAL_OK) in PSSI_Error()
1571 hpssi->hdmarx->XferAbortCallback(hpssi->hdmarx); in PSSI_Error()
1583 if (hpssi->State == HAL_PSSI_STATE_ABORT) in PSSI_Error()
1585 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_Error()
1588 __HAL_UNLOCK(hpssi); in PSSI_Error()
1592 hpssi->AbortCpltCallback(hpssi); in PSSI_Error()
1594 HAL_PSSI_AbortCpltCallback(hpssi); in PSSI_Error()
1600 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_Error()
1603 __HAL_UNLOCK(hpssi); in PSSI_Error()
1607 hpssi->ErrorCallback(hpssi); in PSSI_Error()
1609 HAL_PSSI_ErrorCallback(hpssi); in PSSI_Error()
1623 PSSI_HandleTypeDef *hpssi = (PSSI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in PSSI_DMATransmitCplt() local
1628 HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in PSSI_DMATransmitCplt()
1631 tmperror = hpssi->ErrorCode; in PSSI_DMATransmitCplt()
1634 if ((hpssi->State == HAL_PSSI_STATE_ABORT) || (tmperror != HAL_PSSI_ERROR_NONE)) in PSSI_DMATransmitCplt()
1637 PSSI_Error(hpssi, hpssi->ErrorCode); in PSSI_DMATransmitCplt()
1642 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_DMATransmitCplt()
1645 __HAL_UNLOCK(hpssi); in PSSI_DMATransmitCplt()
1649 hpssi->TxCpltCallback(hpssi); in PSSI_DMATransmitCplt()
1651 HAL_PSSI_TxCpltCallback(hpssi); in PSSI_DMATransmitCplt()
1664 PSSI_HandleTypeDef *hpssi = (PSSI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in PSSI_DMAReceiveCplt() local
1669 HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in PSSI_DMAReceiveCplt()
1672 tmperror = hpssi->ErrorCode; in PSSI_DMAReceiveCplt()
1675 if ((hpssi->State == HAL_PSSI_STATE_ABORT) || (tmperror != HAL_PSSI_ERROR_NONE)) in PSSI_DMAReceiveCplt()
1678 PSSI_Error(hpssi, hpssi->ErrorCode); in PSSI_DMAReceiveCplt()
1683 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_DMAReceiveCplt()
1686 __HAL_UNLOCK(hpssi); in PSSI_DMAReceiveCplt()
1690 hpssi->RxCpltCallback(hpssi); in PSSI_DMAReceiveCplt()
1692 HAL_PSSI_RxCpltCallback(hpssi); in PSSI_DMAReceiveCplt()
1706 PSSI_HandleTypeDef *hpssi = (PSSI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in PSSI_DMAAbort() local
1709 hpssi->hdmatx->XferAbortCallback = NULL; in PSSI_DMAAbort()
1710 hpssi->hdmarx->XferAbortCallback = NULL; in PSSI_DMAAbort()
1713 if (hpssi->State == HAL_PSSI_STATE_ABORT) in PSSI_DMAAbort()
1715 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_DMAAbort()
1719 hpssi->AbortCpltCallback(hpssi); in PSSI_DMAAbort()
1721 HAL_PSSI_AbortCpltCallback(hpssi); in PSSI_DMAAbort()
1728 hpssi->ErrorCallback(hpssi); in PSSI_DMAAbort()
1730 HAL_PSSI_ErrorCallback(hpssi); in PSSI_DMAAbort()
1746 static HAL_StatusTypeDef PSSI_WaitOnStatusUntilTimeout(PSSI_HandleTypeDef *hpssi, uint32_t Flag, Fl… in PSSI_WaitOnStatusUntilTimeout() argument
1749 while ((HAL_PSSI_GET_STATUS(hpssi, Flag) & Flag) == (uint32_t)Status) in PSSI_WaitOnStatusUntilTimeout()
1756 hpssi->ErrorCode |= HAL_PSSI_ERROR_TIMEOUT; in PSSI_WaitOnStatusUntilTimeout()
1757 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_WaitOnStatusUntilTimeout()
1760 __HAL_UNLOCK(hpssi); in PSSI_WaitOnStatusUntilTimeout()
1773 PSSI_HandleTypeDef *hpssi = (PSSI_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); in PSSI_DMAError() local
1778 HAL_PSSI_DISABLE(hpssi); in PSSI_DMAError()
1781 HAL_PSSI_DISABLE_IT(hpssi, PSSI_FLAG_OVR_RIS); in PSSI_DMAError()
1784 tmperror = hpssi->ErrorCode; in PSSI_DMAError()
1787 if ((hpssi->State == HAL_PSSI_STATE_ABORT) || (tmperror != HAL_PSSI_ERROR_NONE)) in PSSI_DMAError()
1790 PSSI_Error(hpssi, hpssi->ErrorCode); in PSSI_DMAError()
1794 hpssi->State = HAL_PSSI_STATE_READY; in PSSI_DMAError()
1797 __HAL_UNLOCK(hpssi); in PSSI_DMAError()
1801 hpssi->ErrorCallback(hpssi); in PSSI_DMAError()
1803 HAL_PSSI_ErrorCallback(hpssi); in PSSI_DMAError()