Lines Matching refs:hsmartcard
229 void SMARTCARD_InitCallbacksToDefault(SMARTCARD_HandleTypeDef *hsmartcard);
231 static HAL_StatusTypeDef SMARTCARD_SetConfig(SMARTCARD_HandleTypeDef *hsmartcard);
232 static void SMARTCARD_AdvFeatureConfig(SMARTCARD_HandleTypeDef *hsmartcard);
233 static HAL_StatusTypeDef SMARTCARD_CheckIdleState(SMARTCARD_HandleTypeDef *hsmartcard);
234 static HAL_StatusTypeDef SMARTCARD_WaitOnFlagUntilTimeout(SMARTCARD_HandleTypeDef *hsmartcard, uint…
236 static void SMARTCARD_EndTxTransfer(SMARTCARD_HandleTypeDef *hsmartcard);
237 static void SMARTCARD_EndRxTransfer(SMARTCARD_HandleTypeDef *hsmartcard);
246 static void SMARTCARD_TxISR(SMARTCARD_HandleTypeDef *hsmartcard);
247 static void SMARTCARD_TxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard);
248 static void SMARTCARD_EndTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard);
249 static void SMARTCARD_RxISR(SMARTCARD_HandleTypeDef *hsmartcard);
250 static void SMARTCARD_RxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard);
316 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_Init() argument
319 if (hsmartcard == NULL) in HAL_SMARTCARD_Init()
325 assert_param(IS_SMARTCARD_INSTANCE(hsmartcard->Instance)); in HAL_SMARTCARD_Init()
327 if (hsmartcard->gState == HAL_SMARTCARD_STATE_RESET) in HAL_SMARTCARD_Init()
330 hsmartcard->Lock = HAL_UNLOCKED; in HAL_SMARTCARD_Init()
333 SMARTCARD_InitCallbacksToDefault(hsmartcard); in HAL_SMARTCARD_Init()
335 if (hsmartcard->MspInitCallback == NULL) in HAL_SMARTCARD_Init()
337 hsmartcard->MspInitCallback = HAL_SMARTCARD_MspInit; in HAL_SMARTCARD_Init()
341 hsmartcard->MspInitCallback(hsmartcard); in HAL_SMARTCARD_Init()
344 HAL_SMARTCARD_MspInit(hsmartcard); in HAL_SMARTCARD_Init()
348 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; in HAL_SMARTCARD_Init()
351 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Init()
356 CLEAR_BIT(hsmartcard->Instance->CR2, USART_CR2_LINEN); in HAL_SMARTCARD_Init()
357 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN)); in HAL_SMARTCARD_Init()
360 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_SCEN); in HAL_SMARTCARD_Init()
363 if (SMARTCARD_SetConfig(hsmartcard) == HAL_ERROR) in HAL_SMARTCARD_Init()
369 SMARTCARD_TRANSMISSION_COMPLETION_SETTING(hsmartcard); in HAL_SMARTCARD_Init()
371 if (hsmartcard->AdvancedInit.AdvFeatureInit != SMARTCARD_ADVFEATURE_NO_INIT) in HAL_SMARTCARD_Init()
373 SMARTCARD_AdvFeatureConfig(hsmartcard); in HAL_SMARTCARD_Init()
377 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Init()
380 return (SMARTCARD_CheckIdleState(hsmartcard)); in HAL_SMARTCARD_Init()
389 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_DeInit() argument
392 if (hsmartcard == NULL) in HAL_SMARTCARD_DeInit()
398 assert_param(IS_SMARTCARD_INSTANCE(hsmartcard->Instance)); in HAL_SMARTCARD_DeInit()
400 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; in HAL_SMARTCARD_DeInit()
403 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_DeInit()
405 WRITE_REG(hsmartcard->Instance->CR1, 0x0U); in HAL_SMARTCARD_DeInit()
406 WRITE_REG(hsmartcard->Instance->CR2, 0x0U); in HAL_SMARTCARD_DeInit()
407 WRITE_REG(hsmartcard->Instance->CR3, 0x0U); in HAL_SMARTCARD_DeInit()
408 WRITE_REG(hsmartcard->Instance->RTOR, 0x0U); in HAL_SMARTCARD_DeInit()
409 WRITE_REG(hsmartcard->Instance->GTPR, 0x0U); in HAL_SMARTCARD_DeInit()
413 if (hsmartcard->MspDeInitCallback == NULL) in HAL_SMARTCARD_DeInit()
415 hsmartcard->MspDeInitCallback = HAL_SMARTCARD_MspDeInit; in HAL_SMARTCARD_DeInit()
418 hsmartcard->MspDeInitCallback(hsmartcard); in HAL_SMARTCARD_DeInit()
420 HAL_SMARTCARD_MspDeInit(hsmartcard); in HAL_SMARTCARD_DeInit()
423 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_DeInit()
424 hsmartcard->gState = HAL_SMARTCARD_STATE_RESET; in HAL_SMARTCARD_DeInit()
425 hsmartcard->RxState = HAL_SMARTCARD_STATE_RESET; in HAL_SMARTCARD_DeInit()
428 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_DeInit()
439 __weak void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_MspInit() argument
442 UNUSED(hsmartcard); in HAL_SMARTCARD_MspInit()
455 __weak void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_MspDeInit() argument
458 UNUSED(hsmartcard); in HAL_SMARTCARD_MspDeInit()
485 HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, in HAL_SMARTCARD_RegisterCallback() argument
494 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
499 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_RegisterCallback()
501 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_RegisterCallback()
507 hsmartcard->TxCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
511 hsmartcard->RxCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
515 hsmartcard->ErrorCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
519 hsmartcard->AbortCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
523 hsmartcard->AbortTransmitCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
527 hsmartcard->AbortReceiveCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
531 hsmartcard->RxFifoFullCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
535 hsmartcard->TxFifoEmptyCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
539 hsmartcard->MspInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
543 hsmartcard->MspDeInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
548 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
555 else if (hsmartcard->gState == HAL_SMARTCARD_STATE_RESET) in HAL_SMARTCARD_RegisterCallback()
560 hsmartcard->MspInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
564 hsmartcard->MspDeInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
569 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
579 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
586 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_RegisterCallback()
609 HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, in HAL_SMARTCARD_UnRegisterCallback() argument
615 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_UnRegisterCallback()
617 if (HAL_SMARTCARD_STATE_READY == hsmartcard->gState) in HAL_SMARTCARD_UnRegisterCallback()
622 …hsmartcard->TxCpltCallback = HAL_SMARTCARD_TxCpltCallback; /* Legacy weak TxCpltCa… in HAL_SMARTCARD_UnRegisterCallback()
626 …hsmartcard->RxCpltCallback = HAL_SMARTCARD_RxCpltCallback; /* Legacy weak RxCpltCa… in HAL_SMARTCARD_UnRegisterCallback()
630 …hsmartcard->ErrorCallback = HAL_SMARTCARD_ErrorCallback; /* Legacy weak ErrorCal… in HAL_SMARTCARD_UnRegisterCallback()
634 …hsmartcard->AbortCpltCallback = HAL_SMARTCARD_AbortCpltCallback; /* Legacy weak AbortCpl… in HAL_SMARTCARD_UnRegisterCallback()
638 … hsmartcard->AbortTransmitCpltCallback = HAL_SMARTCARD_AbortTransmitCpltCallback; /* Legacy weak in HAL_SMARTCARD_UnRegisterCallback()
643 … hsmartcard->AbortReceiveCpltCallback = HAL_SMARTCARD_AbortReceiveCpltCallback; /* Legacy weak in HAL_SMARTCARD_UnRegisterCallback()
648 …hsmartcard->RxFifoFullCallback = HAL_SMARTCARDEx_RxFifoFullCallback; /* Legacy weak RxFifoFul… in HAL_SMARTCARD_UnRegisterCallback()
652 …hsmartcard->TxFifoEmptyCallback = HAL_SMARTCARDEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmp… in HAL_SMARTCARD_UnRegisterCallback()
656 …hsmartcard->MspInitCallback = HAL_SMARTCARD_MspInit; /* Legacy weak MspInitC… in HAL_SMARTCARD_UnRegisterCallback()
660 …hsmartcard->MspDeInitCallback = HAL_SMARTCARD_MspDeInit; /* Legacy weak MspDeIni… in HAL_SMARTCARD_UnRegisterCallback()
665 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_UnRegisterCallback()
672 else if (HAL_SMARTCARD_STATE_RESET == hsmartcard->gState) in HAL_SMARTCARD_UnRegisterCallback()
677 hsmartcard->MspInitCallback = HAL_SMARTCARD_MspInit; in HAL_SMARTCARD_UnRegisterCallback()
681 hsmartcard->MspDeInitCallback = HAL_SMARTCARD_MspDeInit; in HAL_SMARTCARD_UnRegisterCallback()
686 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_UnRegisterCallback()
696 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_UnRegisterCallback()
703 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_UnRegisterCallback()
810 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint1… in HAL_SMARTCARD_Transmit() argument
817 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Transmit()
825 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Transmit()
827 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY_TX; in HAL_SMARTCARD_Transmit()
833 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
838 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit()
839 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit()
841 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit()
844 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TE); in HAL_SMARTCARD_Transmit()
847 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
850 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit()
852 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Transmit()
853 hsmartcard->TxXferSize = Size; in HAL_SMARTCARD_Transmit()
854 hsmartcard->TxXferCount = Size; in HAL_SMARTCARD_Transmit()
856 while (hsmartcard->TxXferCount > 0U) in HAL_SMARTCARD_Transmit()
858 hsmartcard->TxXferCount--; in HAL_SMARTCARD_Transmit()
859 …if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, SMARTCARD_FLAG_TXE, RESET, tickstart, Timeout) !=… in HAL_SMARTCARD_Transmit()
863 hsmartcard->Instance->TDR = (uint8_t)(*ptmpdata & 0xFFU); in HAL_SMARTCARD_Transmit()
866 …if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, SMARTCARD_TRANSMISSION_COMPLETION_FLAG(hsmartcard… in HAL_SMARTCARD_Transmit()
873 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
874 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit()
875 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit()
879 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit()
881 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX_RX) in HAL_SMARTCARD_Transmit()
882 || (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit()
885 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit()
887 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
890 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Transmit()
893 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit()
916 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16… in HAL_SMARTCARD_Receive() argument
923 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Receive()
931 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Receive()
933 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Receive()
934 hsmartcard->RxState = HAL_SMARTCARD_STATE_BUSY_RX; in HAL_SMARTCARD_Receive()
939 hsmartcard->RxXferSize = Size; in HAL_SMARTCARD_Receive()
940 hsmartcard->RxXferCount = Size; in HAL_SMARTCARD_Receive()
943 while (hsmartcard->RxXferCount > 0U) in HAL_SMARTCARD_Receive()
945 hsmartcard->RxXferCount--; in HAL_SMARTCARD_Receive()
947 …if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, SMARTCARD_FLAG_RXNE, RESET, tickstart, Timeout) !… in HAL_SMARTCARD_Receive()
951 *ptmpdata = (uint8_t)(hsmartcard->Instance->RDR & (uint8_t)0x00FF); in HAL_SMARTCARD_Receive()
956 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Receive()
959 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive()
984 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, ui… in HAL_SMARTCARD_Transmit_IT() argument
987 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Transmit_IT()
995 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
997 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Transmit_IT()
998 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY_TX; in HAL_SMARTCARD_Transmit_IT()
1000 hsmartcard->pTxBuffPtr = pData; in HAL_SMARTCARD_Transmit_IT()
1001 hsmartcard->TxXferSize = Size; in HAL_SMARTCARD_Transmit_IT()
1002 hsmartcard->TxXferCount = Size; in HAL_SMARTCARD_Transmit_IT()
1003 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_Transmit_IT()
1006 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_IT()
1011 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit_IT()
1012 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit_IT()
1014 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit_IT()
1017 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TE); in HAL_SMARTCARD_Transmit_IT()
1020 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_IT()
1023 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1026 if (hsmartcard->FifoMode == SMARTCARD_FIFOMODE_ENABLE) in HAL_SMARTCARD_Transmit_IT()
1029 hsmartcard->TxISR = SMARTCARD_TxISR_FIFOEN; in HAL_SMARTCARD_Transmit_IT()
1032 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1035 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_IT()
1038 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTIE); in HAL_SMARTCARD_Transmit_IT()
1043 hsmartcard->TxISR = SMARTCARD_TxISR; in HAL_SMARTCARD_Transmit_IT()
1046 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1049 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_IT()
1052 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_SMARTCARD_Transmit_IT()
1078 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uin… in HAL_SMARTCARD_Receive_IT() argument
1081 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Receive_IT()
1089 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1091 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Receive_IT()
1092 hsmartcard->RxState = HAL_SMARTCARD_STATE_BUSY_RX; in HAL_SMARTCARD_Receive_IT()
1094 hsmartcard->pRxBuffPtr = pData; in HAL_SMARTCARD_Receive_IT()
1095 hsmartcard->RxXferSize = Size; in HAL_SMARTCARD_Receive_IT()
1096 hsmartcard->RxXferCount = Size; in HAL_SMARTCARD_Receive_IT()
1099 …if ((hsmartcard->FifoMode == SMARTCARD_FIFOMODE_ENABLE) && (Size >= hsmartcard->NbRxDataToProcess)) in HAL_SMARTCARD_Receive_IT()
1102 hsmartcard->RxISR = SMARTCARD_RxISR_FIFOEN; in HAL_SMARTCARD_Receive_IT()
1105 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1108 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in HAL_SMARTCARD_Receive_IT()
1109 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_RXFTIE); in HAL_SMARTCARD_Receive_IT()
1114 hsmartcard->RxISR = SMARTCARD_RxISR; in HAL_SMARTCARD_Receive_IT()
1117 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1120 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_SMARTCARD_Receive_IT()
1124 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Receive_IT()
1142 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, u… in HAL_SMARTCARD_Transmit_DMA() argument
1145 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Transmit_DMA()
1153 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1155 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY_TX; in HAL_SMARTCARD_Transmit_DMA()
1157 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Transmit_DMA()
1158 hsmartcard->pTxBuffPtr = pData; in HAL_SMARTCARD_Transmit_DMA()
1159 hsmartcard->TxXferSize = Size; in HAL_SMARTCARD_Transmit_DMA()
1160 hsmartcard->TxXferCount = Size; in HAL_SMARTCARD_Transmit_DMA()
1163 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_DMA()
1168 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit_DMA()
1169 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit_DMA()
1171 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit_DMA()
1174 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TE); in HAL_SMARTCARD_Transmit_DMA()
1177 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_DMA()
1180 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1183 hsmartcard->hdmatx->XferCpltCallback = SMARTCARD_DMATransmitCplt; in HAL_SMARTCARD_Transmit_DMA()
1186 hsmartcard->hdmatx->XferErrorCallback = SMARTCARD_DMAError; in HAL_SMARTCARD_Transmit_DMA()
1189 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Transmit_DMA()
1192 …if (HAL_DMA_Start_IT(hsmartcard->hdmatx, (uint32_t)hsmartcard->pTxBuffPtr, (uint32_t)&hsmartcard->… in HAL_SMARTCARD_Transmit_DMA()
1196 CLEAR_BIT(hsmartcard->Instance->ICR, USART_ICR_TCCF); in HAL_SMARTCARD_Transmit_DMA()
1199 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1202 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_DMA()
1206 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_Transmit_DMA()
1213 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Transmit_DMA()
1216 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1219 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Transmit_DMA()
1240 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, ui… in HAL_SMARTCARD_Receive_DMA() argument
1243 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Receive_DMA()
1251 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Receive_DMA()
1253 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Receive_DMA()
1254 hsmartcard->RxState = HAL_SMARTCARD_STATE_BUSY_RX; in HAL_SMARTCARD_Receive_DMA()
1256 hsmartcard->pRxBuffPtr = pData; in HAL_SMARTCARD_Receive_DMA()
1257 hsmartcard->RxXferSize = Size; in HAL_SMARTCARD_Receive_DMA()
1260 hsmartcard->hdmarx->XferCpltCallback = SMARTCARD_DMAReceiveCplt; in HAL_SMARTCARD_Receive_DMA()
1263 hsmartcard->hdmarx->XferErrorCallback = SMARTCARD_DMAError; in HAL_SMARTCARD_Receive_DMA()
1266 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Receive_DMA()
1269 …if (HAL_DMA_Start_IT(hsmartcard->hdmarx, (uint32_t)&hsmartcard->Instance->RDR, (uint32_t)hsmartcar… in HAL_SMARTCARD_Receive_DMA()
1273 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_DMA()
1276 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in HAL_SMARTCARD_Receive_DMA()
1279 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Receive_DMA()
1283 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_Receive_DMA()
1290 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Receive_DMA()
1293 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_DMA()
1296 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Receive_DMA()
1320 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_Abort() argument
1324 CLEAR_BIT(hsmartcard->Instance->CR1, in HAL_SMARTCARD_Abort()
1327 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_SMARTCARD_Abort()
1330 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_Abort()
1332 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_Abort()
1335 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_Abort()
1339 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort()
1341 if (HAL_DMA_Abort(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_Abort()
1343 if (HAL_DMA_GetError(hsmartcard->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_Abort()
1346 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Abort()
1355 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_Abort()
1357 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_Abort()
1360 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_Abort()
1364 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort()
1366 if (HAL_DMA_Abort(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_Abort()
1368 if (HAL_DMA_GetError(hsmartcard->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_Abort()
1371 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Abort()
1380 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_Abort()
1381 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_Abort()
1384 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_Abort()
1389 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort()
1390 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort()
1393 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Abort()
1411 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortTransmit() argument
1414 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_SMARTCARD_AbortTransmit()
1415 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTIE); in HAL_SMARTCARD_AbortTransmit()
1418 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortTransmit()
1421 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortTransmit()
1425 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_AbortTransmit()
1427 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_AbortTransmit()
1430 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_AbortTransmit()
1434 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_AbortTransmit()
1436 if (HAL_DMA_Abort(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_AbortTransmit()
1438 if (HAL_DMA_GetError(hsmartcard->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_AbortTransmit()
1441 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_AbortTransmit()
1450 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_AbortTransmit()
1453 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF); in HAL_SMARTCARD_AbortTransmit()
1456 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortTransmit()
1474 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortReceive() argument
1477 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | in HAL_SMARTCARD_AbortReceive()
1479 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in HAL_SMARTCARD_AbortReceive()
1482 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortReceive()
1485 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortReceive()
1489 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_AbortReceive()
1491 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_AbortReceive()
1494 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_AbortReceive()
1498 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_AbortReceive()
1500 if (HAL_DMA_Abort(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_AbortReceive()
1502 if (HAL_DMA_GetError(hsmartcard->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_AbortReceive()
1505 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_AbortReceive()
1514 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_AbortReceive()
1517 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_AbortReceive()
1522 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortReceive()
1542 HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_Abort_IT() argument
1548 CLEAR_BIT(hsmartcard->Instance->CR1, in HAL_SMARTCARD_Abort_IT()
1551 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_SMARTCARD_Abort_IT()
1557 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_Abort_IT()
1561 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_Abort_IT()
1563 hsmartcard->hdmatx->XferAbortCallback = SMARTCARD_DMATxAbortCallback; in HAL_SMARTCARD_Abort_IT()
1567 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1571 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_Abort_IT()
1575 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_Abort_IT()
1577 hsmartcard->hdmarx->XferAbortCallback = SMARTCARD_DMARxAbortCallback; in HAL_SMARTCARD_Abort_IT()
1581 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1586 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_Abort_IT()
1589 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_Abort_IT()
1592 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_Abort_IT()
1598 if (HAL_DMA_Abort_IT(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_Abort_IT()
1600 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1610 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_Abort_IT()
1612 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_Abort_IT()
1615 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_Abort_IT()
1621 if (HAL_DMA_Abort_IT(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_Abort_IT()
1623 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1637 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_Abort_IT()
1638 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_Abort_IT()
1641 hsmartcard->RxISR = NULL; in HAL_SMARTCARD_Abort_IT()
1642 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_Abort_IT()
1645 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Abort_IT()
1648 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_Abort_IT()
1653 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort_IT()
1654 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort_IT()
1659 hsmartcard->AbortCpltCallback(hsmartcard); in HAL_SMARTCARD_Abort_IT()
1662 HAL_SMARTCARD_AbortCpltCallback(hsmartcard); in HAL_SMARTCARD_Abort_IT()
1684 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortTransmit_IT() argument
1687 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_SMARTCARD_AbortTransmit_IT()
1688 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTIE); in HAL_SMARTCARD_AbortTransmit_IT()
1691 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortTransmit_IT()
1694 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortTransmit_IT()
1698 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_AbortTransmit_IT()
1700 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_AbortTransmit_IT()
1703 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_AbortTransmit_IT()
1707 hsmartcard->hdmatx->XferAbortCallback = SMARTCARD_DMATxOnlyAbortCallback; in HAL_SMARTCARD_AbortTransmit_IT()
1710 if (HAL_DMA_Abort_IT(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_AbortTransmit_IT()
1713 hsmartcard->hdmatx->XferAbortCallback(hsmartcard->hdmatx); in HAL_SMARTCARD_AbortTransmit_IT()
1719 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_AbortTransmit_IT()
1722 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_AbortTransmit_IT()
1725 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortTransmit_IT()
1730 hsmartcard->AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1733 HAL_SMARTCARD_AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1740 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_AbortTransmit_IT()
1743 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_AbortTransmit_IT()
1746 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF); in HAL_SMARTCARD_AbortTransmit_IT()
1749 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortTransmit_IT()
1754 hsmartcard->AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1757 HAL_SMARTCARD_AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1779 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortReceive_IT() argument
1782 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | in HAL_SMARTCARD_AbortReceive_IT()
1784 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in HAL_SMARTCARD_AbortReceive_IT()
1787 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortReceive_IT()
1790 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortReceive_IT()
1794 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_AbortReceive_IT()
1796 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_AbortReceive_IT()
1799 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_AbortReceive_IT()
1803 hsmartcard->hdmarx->XferAbortCallback = SMARTCARD_DMARxOnlyAbortCallback; in HAL_SMARTCARD_AbortReceive_IT()
1806 if (HAL_DMA_Abort_IT(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_AbortReceive_IT()
1809 hsmartcard->hdmarx->XferAbortCallback(hsmartcard->hdmarx); in HAL_SMARTCARD_AbortReceive_IT()
1815 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_AbortReceive_IT()
1818 hsmartcard->RxISR = NULL; in HAL_SMARTCARD_AbortReceive_IT()
1821 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_AbortReceive_IT()
1826 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortReceive_IT()
1831 hsmartcard->AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1834 HAL_SMARTCARD_AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1841 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_AbortReceive_IT()
1844 hsmartcard->RxISR = NULL; in HAL_SMARTCARD_AbortReceive_IT()
1847 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_AbortReceive_IT()
1852 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortReceive_IT()
1857 hsmartcard->AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1860 HAL_SMARTCARD_AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1873 void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_IRQHandler() argument
1875 uint32_t isrflags = READ_REG(hsmartcard->Instance->ISR); in HAL_SMARTCARD_IRQHandler()
1876 uint32_t cr1its = READ_REG(hsmartcard->Instance->CR1); in HAL_SMARTCARD_IRQHandler()
1877 uint32_t cr3its = READ_REG(hsmartcard->Instance->CR3); in HAL_SMARTCARD_IRQHandler()
1890 if (hsmartcard->RxISR != NULL) in HAL_SMARTCARD_IRQHandler()
1892 hsmartcard->RxISR(hsmartcard); in HAL_SMARTCARD_IRQHandler()
1906 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_PEF); in HAL_SMARTCARD_IRQHandler()
1908 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_PE; in HAL_SMARTCARD_IRQHandler()
1914 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_FEF); in HAL_SMARTCARD_IRQHandler()
1916 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_FE; in HAL_SMARTCARD_IRQHandler()
1922 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_NEF); in HAL_SMARTCARD_IRQHandler()
1924 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_NE; in HAL_SMARTCARD_IRQHandler()
1933 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_OREF); in HAL_SMARTCARD_IRQHandler()
1935 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_ORE; in HAL_SMARTCARD_IRQHandler()
1941 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_RTOF); in HAL_SMARTCARD_IRQHandler()
1943 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_RTO; in HAL_SMARTCARD_IRQHandler()
1947 if (hsmartcard->ErrorCode != HAL_SMARTCARD_ERROR_NONE) in HAL_SMARTCARD_IRQHandler()
1954 if (hsmartcard->RxISR != NULL) in HAL_SMARTCARD_IRQHandler()
1956 hsmartcard->RxISR(hsmartcard); in HAL_SMARTCARD_IRQHandler()
1965 errorcode = hsmartcard->ErrorCode; in HAL_SMARTCARD_IRQHandler()
1966 if ((HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_IRQHandler()
1972 SMARTCARD_EndRxTransfer(hsmartcard); in HAL_SMARTCARD_IRQHandler()
1975 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_IRQHandler()
1977 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_IRQHandler()
1980 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_IRQHandler()
1984 hsmartcard->hdmarx->XferAbortCallback = SMARTCARD_DMAAbortOnError; in HAL_SMARTCARD_IRQHandler()
1987 if (HAL_DMA_Abort_IT(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_IRQHandler()
1990 hsmartcard->hdmarx->XferAbortCallback(hsmartcard->hdmarx); in HAL_SMARTCARD_IRQHandler()
1997 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2000 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2008 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2011 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2018 else if ((hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in HAL_SMARTCARD_IRQHandler()
2024 SMARTCARD_EndTxTransfer(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2027 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_IRQHandler()
2029 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_IRQHandler()
2032 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_IRQHandler()
2036 hsmartcard->hdmatx->XferAbortCallback = SMARTCARD_DMAAbortOnError; in HAL_SMARTCARD_IRQHandler()
2039 if (HAL_DMA_Abort_IT(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_IRQHandler()
2042 hsmartcard->hdmatx->XferAbortCallback(hsmartcard->hdmatx); in HAL_SMARTCARD_IRQHandler()
2049 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2052 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2060 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2063 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2073 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2076 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2078 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_IRQHandler()
2088 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_IRQHandler()
2089 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2092 hsmartcard->RxCpltCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2095 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2099 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_EOBF); in HAL_SMARTCARD_IRQHandler()
2108 if (hsmartcard->TxISR != NULL) in HAL_SMARTCARD_IRQHandler()
2110 hsmartcard->TxISR(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2116 if (__HAL_SMARTCARD_GET_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication) != RESET) in HAL_SMARTCARD_IRQHandler()
2118 …if (__HAL_SMARTCARD_GET_IT_SOURCE(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication) != … in HAL_SMARTCARD_IRQHandler()
2120 SMARTCARD_EndTransmit_IT(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2130 hsmartcard->TxFifoEmptyCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2133 HAL_SMARTCARDEx_TxFifoEmptyCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2143 hsmartcard->RxFifoFullCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2146 HAL_SMARTCARDEx_RxFifoFullCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2158 __weak void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_TxCpltCallback() argument
2161 UNUSED(hsmartcard); in HAL_SMARTCARD_TxCpltCallback()
2174 __weak void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_RxCpltCallback() argument
2177 UNUSED(hsmartcard); in HAL_SMARTCARD_RxCpltCallback()
2190 __weak void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_ErrorCallback() argument
2193 UNUSED(hsmartcard); in HAL_SMARTCARD_ErrorCallback()
2206 __weak void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortCpltCallback() argument
2209 UNUSED(hsmartcard); in HAL_SMARTCARD_AbortCpltCallback()
2222 __weak void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortTransmitCpltCallback() argument
2225 UNUSED(hsmartcard); in HAL_SMARTCARD_AbortTransmitCpltCallback()
2238 __weak void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortReceiveCpltCallback() argument
2241 UNUSED(hsmartcard); in HAL_SMARTCARD_AbortReceiveCpltCallback()
2277 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_GetState() argument
2282 temp1 = (uint32_t)hsmartcard->gState; in HAL_SMARTCARD_GetState()
2283 temp2 = (uint32_t)hsmartcard->RxState; in HAL_SMARTCARD_GetState()
2294 uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_GetError() argument
2296 return hsmartcard->ErrorCode; in HAL_SMARTCARD_GetError()
2317 void SMARTCARD_InitCallbacksToDefault(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_InitCallbacksToDefault() argument
2320 …hsmartcard->TxCpltCallback = HAL_SMARTCARD_TxCpltCallback; /* Legacy weak Tx… in SMARTCARD_InitCallbacksToDefault()
2321 …hsmartcard->RxCpltCallback = HAL_SMARTCARD_RxCpltCallback; /* Legacy weak Rx… in SMARTCARD_InitCallbacksToDefault()
2322 …hsmartcard->ErrorCallback = HAL_SMARTCARD_ErrorCallback; /* Legacy weak Er… in SMARTCARD_InitCallbacksToDefault()
2323 …hsmartcard->AbortCpltCallback = HAL_SMARTCARD_AbortCpltCallback; /* Legacy weak Ab… in SMARTCARD_InitCallbacksToDefault()
2324 hsmartcard->AbortTransmitCpltCallback = HAL_SMARTCARD_AbortTransmitCpltCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2326 hsmartcard->AbortReceiveCpltCallback = HAL_SMARTCARD_AbortReceiveCpltCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2328 hsmartcard->RxFifoFullCallback = HAL_SMARTCARDEx_RxFifoFullCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2330 hsmartcard->TxFifoEmptyCallback = HAL_SMARTCARDEx_TxFifoEmptyCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2342 static HAL_StatusTypeDef SMARTCARD_SetConfig(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_SetConfig() argument
2353 assert_param(IS_SMARTCARD_INSTANCE(hsmartcard->Instance)); in SMARTCARD_SetConfig()
2354 assert_param(IS_SMARTCARD_BAUDRATE(hsmartcard->Init.BaudRate)); in SMARTCARD_SetConfig()
2355 assert_param(IS_SMARTCARD_WORD_LENGTH(hsmartcard->Init.WordLength)); in SMARTCARD_SetConfig()
2356 assert_param(IS_SMARTCARD_STOPBITS(hsmartcard->Init.StopBits)); in SMARTCARD_SetConfig()
2357 assert_param(IS_SMARTCARD_PARITY(hsmartcard->Init.Parity)); in SMARTCARD_SetConfig()
2358 assert_param(IS_SMARTCARD_MODE(hsmartcard->Init.Mode)); in SMARTCARD_SetConfig()
2359 assert_param(IS_SMARTCARD_POLARITY(hsmartcard->Init.CLKPolarity)); in SMARTCARD_SetConfig()
2360 assert_param(IS_SMARTCARD_PHASE(hsmartcard->Init.CLKPhase)); in SMARTCARD_SetConfig()
2361 assert_param(IS_SMARTCARD_LASTBIT(hsmartcard->Init.CLKLastBit)); in SMARTCARD_SetConfig()
2362 assert_param(IS_SMARTCARD_ONE_BIT_SAMPLE(hsmartcard->Init.OneBitSampling)); in SMARTCARD_SetConfig()
2363 assert_param(IS_SMARTCARD_NACK(hsmartcard->Init.NACKEnable)); in SMARTCARD_SetConfig()
2364 assert_param(IS_SMARTCARD_TIMEOUT(hsmartcard->Init.TimeOutEnable)); in SMARTCARD_SetConfig()
2365 assert_param(IS_SMARTCARD_AUTORETRY_COUNT(hsmartcard->Init.AutoRetryCount)); in SMARTCARD_SetConfig()
2366 assert_param(IS_SMARTCARD_CLOCKPRESCALER(hsmartcard->Init.ClockPrescaler)); in SMARTCARD_SetConfig()
2374 …tmpreg = ((uint32_t)(hsmartcard->Init.Parity)) | ((uint32_t)(hsmartcard->Init.Mode)) | ((uint32_t)… in SMARTCARD_SetConfig()
2375 MODIFY_REG(hsmartcard->Instance->CR1, USART_CR1_FIELDS, tmpreg); in SMARTCARD_SetConfig()
2378 tmpreg = hsmartcard->Init.StopBits; in SMARTCARD_SetConfig()
2380 tmpreg |= (uint32_t) USART_CR2_CLKEN | hsmartcard->Init.CLKPolarity; in SMARTCARD_SetConfig()
2381 tmpreg |= (uint32_t) hsmartcard->Init.CLKPhase | hsmartcard->Init.CLKLastBit; in SMARTCARD_SetConfig()
2382 tmpreg |= (uint32_t) hsmartcard->Init.TimeOutEnable; in SMARTCARD_SetConfig()
2383 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_FIELDS, tmpreg); in SMARTCARD_SetConfig()
2393 tmpreg = (uint32_t) hsmartcard->Init.OneBitSampling | hsmartcard->Init.NACKEnable; in SMARTCARD_SetConfig()
2394 tmpreg |= ((uint32_t)hsmartcard->Init.AutoRetryCount << USART_CR3_SCARCNT_Pos); in SMARTCARD_SetConfig()
2395 MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_FIELDS, tmpreg); in SMARTCARD_SetConfig()
2400 MODIFY_REG(hsmartcard->Instance->PRESC, USART_PRESC_PRESCALER, hsmartcard->Init.ClockPrescaler); in SMARTCARD_SetConfig()
2403 …tmpreg = (hsmartcard->Init.Prescaler | ((uint32_t)hsmartcard->Init.GuardTime << USART_GTPR_GT_Pos)… in SMARTCARD_SetConfig()
2404 …MODIFY_REG(hsmartcard->Instance->GTPR, (uint16_t)(USART_GTPR_GT | USART_GTPR_PSC), (uint16_t)tmpre… in SMARTCARD_SetConfig()
2407 tmpreg = ((uint32_t)hsmartcard->Init.BlockLength << USART_RTOR_BLEN_Pos); in SMARTCARD_SetConfig()
2408 if (hsmartcard->Init.TimeOutEnable == SMARTCARD_TIMEOUT_ENABLE) in SMARTCARD_SetConfig()
2410 assert_param(IS_SMARTCARD_TIMEOUT_VALUE(hsmartcard->Init.TimeOutValue)); in SMARTCARD_SetConfig()
2411 tmpreg |= (uint32_t) hsmartcard->Init.TimeOutValue; in SMARTCARD_SetConfig()
2413 MODIFY_REG(hsmartcard->Instance->RTOR, (USART_RTOR_RTO | USART_RTOR_BLEN), tmpreg); in SMARTCARD_SetConfig()
2416 SMARTCARD_GETCLOCKSOURCE(hsmartcard, clocksource); in SMARTCARD_SetConfig()
2422 tmpreg = (uint16_t)(((pclk / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2423 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2427 tmpreg = (uint16_t)(((pclk / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2428 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2432 tmpreg = (uint16_t)(((pclk / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2433 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2437 …tmpreg = (uint16_t)(((pll3_clocks.PLL3_Q_Frequency / SMARTCARDPrescTable[hsmartcard->Init.ClockPre… in SMARTCARD_SetConfig()
2438 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2442 …tmpreg = (uint16_t)(((pll4_clocks.PLL4_Q_Frequency / SMARTCARDPrescTable[hsmartcard->Init.ClockPre… in SMARTCARD_SetConfig()
2443 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2446 tmpreg = (uint16_t)(((HSI_VALUE / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2447 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2450 tmpreg = (uint16_t)(((CSI_VALUE / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2451 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2454 …tmpreg = (uint16_t)(((uint16_t)(LSE_VALUE / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2455 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2465 hsmartcard->Instance->BRR = tmpreg; in SMARTCARD_SetConfig()
2473 hsmartcard->NbTxDataToProcess = 1U; in SMARTCARD_SetConfig()
2474 hsmartcard->NbRxDataToProcess = 1U; in SMARTCARD_SetConfig()
2477 hsmartcard->RxISR = NULL; in SMARTCARD_SetConfig()
2478 hsmartcard->TxISR = NULL; in SMARTCARD_SetConfig()
2490 static void SMARTCARD_AdvFeatureConfig(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_AdvFeatureConfig() argument
2493 assert_param(IS_SMARTCARD_ADVFEATURE_INIT(hsmartcard->AdvancedInit.AdvFeatureInit)); in SMARTCARD_AdvFeatureConfig()
2496 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_TXINVERT_INIT)) in SMARTCARD_AdvFeatureConfig()
2498 assert_param(IS_SMARTCARD_ADVFEATURE_TXINV(hsmartcard->AdvancedInit.TxPinLevelInvert)); in SMARTCARD_AdvFeatureConfig()
2499 … MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_TXINV, hsmartcard->AdvancedInit.TxPinLevelInvert); in SMARTCARD_AdvFeatureConfig()
2503 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_RXINVERT_INIT)) in SMARTCARD_AdvFeatureConfig()
2505 assert_param(IS_SMARTCARD_ADVFEATURE_RXINV(hsmartcard->AdvancedInit.RxPinLevelInvert)); in SMARTCARD_AdvFeatureConfig()
2506 … MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_RXINV, hsmartcard->AdvancedInit.RxPinLevelInvert); in SMARTCARD_AdvFeatureConfig()
2510 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_DATAINVERT_INIT)) in SMARTCARD_AdvFeatureConfig()
2512 assert_param(IS_SMARTCARD_ADVFEATURE_DATAINV(hsmartcard->AdvancedInit.DataInvert)); in SMARTCARD_AdvFeatureConfig()
2513 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_DATAINV, hsmartcard->AdvancedInit.DataInvert); in SMARTCARD_AdvFeatureConfig()
2517 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_SWAP_INIT)) in SMARTCARD_AdvFeatureConfig()
2519 assert_param(IS_SMARTCARD_ADVFEATURE_SWAP(hsmartcard->AdvancedInit.Swap)); in SMARTCARD_AdvFeatureConfig()
2520 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_SWAP, hsmartcard->AdvancedInit.Swap); in SMARTCARD_AdvFeatureConfig()
2524 …if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_… in SMARTCARD_AdvFeatureConfig()
2526 assert_param(IS_SMARTCARD_OVERRUN(hsmartcard->AdvancedInit.OverrunDisable)); in SMARTCARD_AdvFeatureConfig()
2527 … MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_OVRDIS, hsmartcard->AdvancedInit.OverrunDisable); in SMARTCARD_AdvFeatureConfig()
2531 …if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_DMADISABLEONERROR… in SMARTCARD_AdvFeatureConfig()
2533 … assert_param(IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(hsmartcard->AdvancedInit.DMADisableonRxError)); in SMARTCARD_AdvFeatureConfig()
2534 …MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_DDRE, hsmartcard->AdvancedInit.DMADisableonRxError… in SMARTCARD_AdvFeatureConfig()
2538 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_MSBFIRST_INIT)) in SMARTCARD_AdvFeatureConfig()
2540 assert_param(IS_SMARTCARD_ADVFEATURE_MSBFIRST(hsmartcard->AdvancedInit.MSBFirst)); in SMARTCARD_AdvFeatureConfig()
2541 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_MSBFIRST, hsmartcard->AdvancedInit.MSBFirst); in SMARTCARD_AdvFeatureConfig()
2552 static HAL_StatusTypeDef SMARTCARD_CheckIdleState(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_CheckIdleState() argument
2557 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in SMARTCARD_CheckIdleState()
2563 if ((hsmartcard->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in SMARTCARD_CheckIdleState()
2566 if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, USART_ISR_TEACK, RESET, tickstart, in SMARTCARD_CheckIdleState()
2574 if ((hsmartcard->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in SMARTCARD_CheckIdleState()
2577 if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, USART_ISR_REACK, RESET, tickstart, in SMARTCARD_CheckIdleState()
2586 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_CheckIdleState()
2587 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_CheckIdleState()
2590 __HAL_UNLOCK(hsmartcard); in SMARTCARD_CheckIdleState()
2605 static HAL_StatusTypeDef SMARTCARD_WaitOnFlagUntilTimeout(SMARTCARD_HandleTypeDef *hsmartcard, uint… in SMARTCARD_WaitOnFlagUntilTimeout() argument
2609 while ((__HAL_SMARTCARD_GET_FLAG(hsmartcard, Flag) ? SET : RESET) == Status) in SMARTCARD_WaitOnFlagUntilTimeout()
2618 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_… in SMARTCARD_WaitOnFlagUntilTimeout()
2619 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_WaitOnFlagUntilTimeout()
2621 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_WaitOnFlagUntilTimeout()
2622 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_WaitOnFlagUntilTimeout()
2625 __HAL_UNLOCK(hsmartcard); in SMARTCARD_WaitOnFlagUntilTimeout()
2640 static void SMARTCARD_EndTxTransfer(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_EndTxTransfer() argument
2643 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in SMARTCARD_EndTxTransfer()
2644 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_EndTxTransfer()
2647 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_EndTxTransfer()
2657 static void SMARTCARD_EndRxTransfer(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_EndRxTransfer() argument
2660 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in SMARTCARD_EndRxTransfer()
2661 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_EndRxTransfer()
2664 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_EndRxTransfer()
2676 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMATransmitCplt() local
2677 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMATransmitCplt()
2681 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in SMARTCARD_DMATransmitCplt()
2684 __HAL_SMARTCARD_ENABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_DMATransmitCplt()
2695 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMAReceiveCplt() local
2696 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMAReceiveCplt()
2699 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in SMARTCARD_DMAReceiveCplt()
2700 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_DMAReceiveCplt()
2704 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in SMARTCARD_DMAReceiveCplt()
2707 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMAReceiveCplt()
2711 hsmartcard->RxCpltCallback(hsmartcard); in SMARTCARD_DMAReceiveCplt()
2714 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in SMARTCARD_DMAReceiveCplt()
2726 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMAError() local
2729 if (hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in SMARTCARD_DMAError()
2731 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in SMARTCARD_DMAError()
2733 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMAError()
2734 SMARTCARD_EndTxTransfer(hsmartcard); in SMARTCARD_DMAError()
2739 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_BUSY_RX) in SMARTCARD_DMAError()
2741 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in SMARTCARD_DMAError()
2743 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMAError()
2744 SMARTCARD_EndRxTransfer(hsmartcard); in SMARTCARD_DMAError()
2748 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_DMA; in SMARTCARD_DMAError()
2751 hsmartcard->ErrorCallback(hsmartcard); in SMARTCARD_DMAError()
2754 HAL_SMARTCARD_ErrorCallback(hsmartcard); in SMARTCARD_DMAError()
2766 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMAAbortOnError() local
2767 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMAAbortOnError()
2768 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMAAbortOnError()
2772 hsmartcard->ErrorCallback(hsmartcard); in SMARTCARD_DMAAbortOnError()
2775 HAL_SMARTCARD_ErrorCallback(hsmartcard); in SMARTCARD_DMAAbortOnError()
2789 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMATxAbortCallback() local
2791 hsmartcard->hdmatx->XferAbortCallback = NULL; in SMARTCARD_DMATxAbortCallback()
2794 if (hsmartcard->hdmarx != NULL) in SMARTCARD_DMATxAbortCallback()
2796 if (hsmartcard->hdmarx->XferAbortCallback != NULL) in SMARTCARD_DMATxAbortCallback()
2803 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMATxAbortCallback()
2804 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMATxAbortCallback()
2807 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in SMARTCARD_DMATxAbortCallback()
2810 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in SMARTCARD_DMATxAbortCallback()
2815 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMATxAbortCallback()
2816 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMATxAbortCallback()
2820 hsmartcard->AbortCpltCallback(hsmartcard); in SMARTCARD_DMATxAbortCallback()
2823 HAL_SMARTCARD_AbortCpltCallback(hsmartcard); in SMARTCARD_DMATxAbortCallback()
2838 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMARxAbortCallback() local
2840 hsmartcard->hdmarx->XferAbortCallback = NULL; in SMARTCARD_DMARxAbortCallback()
2843 if (hsmartcard->hdmatx != NULL) in SMARTCARD_DMARxAbortCallback()
2845 if (hsmartcard->hdmatx->XferAbortCallback != NULL) in SMARTCARD_DMARxAbortCallback()
2852 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMARxAbortCallback()
2853 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMARxAbortCallback()
2856 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in SMARTCARD_DMARxAbortCallback()
2859 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in SMARTCARD_DMARxAbortCallback()
2864 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMARxAbortCallback()
2865 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMARxAbortCallback()
2869 hsmartcard->AbortCpltCallback(hsmartcard); in SMARTCARD_DMARxAbortCallback()
2872 HAL_SMARTCARD_AbortCpltCallback(hsmartcard); in SMARTCARD_DMARxAbortCallback()
2887 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMATxOnlyAbortCallback() local
2889 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMATxOnlyAbortCallback()
2892 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF); in SMARTCARD_DMATxOnlyAbortCallback()
2895 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMATxOnlyAbortCallback()
2899 hsmartcard->AbortTransmitCpltCallback(hsmartcard); in SMARTCARD_DMATxOnlyAbortCallback()
2902 HAL_SMARTCARD_AbortTransmitCpltCallback(hsmartcard); in SMARTCARD_DMATxOnlyAbortCallback()
2916 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMARxOnlyAbortCallback() local
2918 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMARxOnlyAbortCallback()
2921 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in SMARTCARD_DMARxOnlyAbortCallback()
2926 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMARxOnlyAbortCallback()
2930 hsmartcard->AbortReceiveCpltCallback(hsmartcard); in SMARTCARD_DMARxOnlyAbortCallback()
2933 HAL_SMARTCARD_AbortReceiveCpltCallback(hsmartcard); in SMARTCARD_DMARxOnlyAbortCallback()
2946 static void SMARTCARD_TxISR(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_TxISR() argument
2949 if (hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in SMARTCARD_TxISR()
2951 if (hsmartcard->TxXferCount == 0U) in SMARTCARD_TxISR()
2954 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in SMARTCARD_TxISR()
2957 __HAL_SMARTCARD_ENABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_TxISR()
2961 hsmartcard->Instance->TDR = (uint8_t)(*hsmartcard->pTxBuffPtr & 0xFFU); in SMARTCARD_TxISR()
2962 hsmartcard->pTxBuffPtr++; in SMARTCARD_TxISR()
2963 hsmartcard->TxXferCount--; in SMARTCARD_TxISR()
2977 static void SMARTCARD_TxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_TxISR_FIFOEN() argument
2982 if (hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in SMARTCARD_TxISR_FIFOEN()
2984 for (nb_tx_data = hsmartcard->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in SMARTCARD_TxISR_FIFOEN()
2986 if (hsmartcard->TxXferCount == 0U) in SMARTCARD_TxISR_FIFOEN()
2989 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in SMARTCARD_TxISR_FIFOEN()
2992 __HAL_SMARTCARD_ENABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_TxISR_FIFOEN()
2994 else if (READ_BIT(hsmartcard->Instance->ISR, USART_ISR_TXE_TXFNF) != 0U) in SMARTCARD_TxISR_FIFOEN()
2996 hsmartcard->Instance->TDR = (uint8_t)(*hsmartcard->pTxBuffPtr & 0xFFU); in SMARTCARD_TxISR_FIFOEN()
2997 hsmartcard->pTxBuffPtr++; in SMARTCARD_TxISR_FIFOEN()
2998 hsmartcard->TxXferCount--; in SMARTCARD_TxISR_FIFOEN()
3014 static void SMARTCARD_EndTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_EndTransmit_IT() argument
3017 __HAL_SMARTCARD_DISABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_EndTransmit_IT()
3020 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in SMARTCARD_EndTransmit_IT()
3023 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_EndTransmit_IT()
3027 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in SMARTCARD_EndTransmit_IT()
3028 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in SMARTCARD_EndTransmit_IT()
3029 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in SMARTCARD_EndTransmit_IT()
3033 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in SMARTCARD_EndTransmit_IT()
3035 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX_RX) in SMARTCARD_EndTransmit_IT()
3036 || (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in SMARTCARD_EndTransmit_IT()
3039 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in SMARTCARD_EndTransmit_IT()
3041 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in SMARTCARD_EndTransmit_IT()
3044 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_EndTransmit_IT()
3047 hsmartcard->TxISR = NULL; in SMARTCARD_EndTransmit_IT()
3051 hsmartcard->TxCpltCallback(hsmartcard); in SMARTCARD_EndTransmit_IT()
3054 HAL_SMARTCARD_TxCpltCallback(hsmartcard); in SMARTCARD_EndTransmit_IT()
3067 static void SMARTCARD_RxISR(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_RxISR() argument
3070 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_BUSY_RX) in SMARTCARD_RxISR()
3072 *hsmartcard->pRxBuffPtr = (uint8_t)(hsmartcard->Instance->RDR & (uint8_t)0xFF); in SMARTCARD_RxISR()
3073 hsmartcard->pRxBuffPtr++; in SMARTCARD_RxISR()
3075 hsmartcard->RxXferCount--; in SMARTCARD_RxISR()
3076 if (hsmartcard->RxXferCount == 0U) in SMARTCARD_RxISR()
3078 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in SMARTCARD_RxISR()
3081 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in SMARTCARD_RxISR()
3084 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_RxISR()
3088 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in SMARTCARD_RxISR()
3090 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_RxISR()
3093 hsmartcard->RxISR = NULL; in SMARTCARD_RxISR()
3097 hsmartcard->RxCpltCallback(hsmartcard); in SMARTCARD_RxISR()
3100 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in SMARTCARD_RxISR()
3107 __HAL_SMARTCARD_SEND_REQ(hsmartcard, SMARTCARD_RXDATA_FLUSH_REQUEST); in SMARTCARD_RxISR()
3120 static void SMARTCARD_RxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_RxISR_FIFOEN() argument
3126 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_BUSY_RX) in SMARTCARD_RxISR_FIFOEN()
3128 for (nb_rx_data = hsmartcard->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in SMARTCARD_RxISR_FIFOEN()
3130 *hsmartcard->pRxBuffPtr = (uint8_t)(hsmartcard->Instance->RDR & (uint8_t)0xFF); in SMARTCARD_RxISR_FIFOEN()
3131 hsmartcard->pRxBuffPtr++; in SMARTCARD_RxISR_FIFOEN()
3133 hsmartcard->RxXferCount--; in SMARTCARD_RxISR_FIFOEN()
3134 if (hsmartcard->RxXferCount == 0U) in SMARTCARD_RxISR_FIFOEN()
3136 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in SMARTCARD_RxISR_FIFOEN()
3139 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in SMARTCARD_RxISR_FIFOEN()
3142 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_RxISR_FIFOEN()
3146 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in SMARTCARD_RxISR_FIFOEN()
3148 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_RxISR_FIFOEN()
3151 hsmartcard->RxISR = NULL; in SMARTCARD_RxISR_FIFOEN()
3155 hsmartcard->RxCpltCallback(hsmartcard); in SMARTCARD_RxISR_FIFOEN()
3158 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in SMARTCARD_RxISR_FIFOEN()
3167 rxdatacount = hsmartcard->RxXferCount; in SMARTCARD_RxISR_FIFOEN()
3168 if (((rxdatacount != 0U)) && (rxdatacount < hsmartcard->NbRxDataToProcess)) in SMARTCARD_RxISR_FIFOEN()
3171 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_RXFTIE); in SMARTCARD_RxISR_FIFOEN()
3174 hsmartcard->RxISR = SMARTCARD_RxISR; in SMARTCARD_RxISR_FIFOEN()
3177 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in SMARTCARD_RxISR_FIFOEN()
3183 __HAL_SMARTCARD_SEND_REQ(hsmartcard, SMARTCARD_RXDATA_FLUSH_REQUEST); in SMARTCARD_RxISR_FIFOEN()