Lines Matching refs:hsmartcard

241 void SMARTCARD_InitCallbacksToDefault(SMARTCARD_HandleTypeDef *hsmartcard);
243 static HAL_StatusTypeDef SMARTCARD_SetConfig(SMARTCARD_HandleTypeDef *hsmartcard);
244 static void SMARTCARD_AdvFeatureConfig(SMARTCARD_HandleTypeDef *hsmartcard);
245 static HAL_StatusTypeDef SMARTCARD_CheckIdleState(SMARTCARD_HandleTypeDef *hsmartcard);
246 static HAL_StatusTypeDef SMARTCARD_WaitOnFlagUntilTimeout(SMARTCARD_HandleTypeDef *hsmartcard, uint…
248 static void SMARTCARD_EndTxTransfer(SMARTCARD_HandleTypeDef *hsmartcard);
249 static void SMARTCARD_EndRxTransfer(SMARTCARD_HandleTypeDef *hsmartcard);
258 static void SMARTCARD_TxISR(SMARTCARD_HandleTypeDef *hsmartcard);
260 static void SMARTCARD_TxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard);
262 static void SMARTCARD_EndTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard);
263 static void SMARTCARD_RxISR(SMARTCARD_HandleTypeDef *hsmartcard);
265 static void SMARTCARD_RxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard);
332 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_Init() argument
335 if (hsmartcard == NULL) in HAL_SMARTCARD_Init()
341 assert_param(IS_SMARTCARD_INSTANCE(hsmartcard->Instance)); in HAL_SMARTCARD_Init()
343 if (hsmartcard->gState == HAL_SMARTCARD_STATE_RESET) in HAL_SMARTCARD_Init()
346 hsmartcard->Lock = HAL_UNLOCKED; in HAL_SMARTCARD_Init()
349 SMARTCARD_InitCallbacksToDefault(hsmartcard); in HAL_SMARTCARD_Init()
351 if (hsmartcard->MspInitCallback == NULL) in HAL_SMARTCARD_Init()
353 hsmartcard->MspInitCallback = HAL_SMARTCARD_MspInit; in HAL_SMARTCARD_Init()
357 hsmartcard->MspInitCallback(hsmartcard); in HAL_SMARTCARD_Init()
360 HAL_SMARTCARD_MspInit(hsmartcard); in HAL_SMARTCARD_Init()
364 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; in HAL_SMARTCARD_Init()
367 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Init()
372 CLEAR_BIT(hsmartcard->Instance->CR2, USART_CR2_LINEN); in HAL_SMARTCARD_Init()
373 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN)); in HAL_SMARTCARD_Init()
376 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_SCEN); in HAL_SMARTCARD_Init()
379 if (SMARTCARD_SetConfig(hsmartcard) == HAL_ERROR) in HAL_SMARTCARD_Init()
385 SMARTCARD_TRANSMISSION_COMPLETION_SETTING(hsmartcard); in HAL_SMARTCARD_Init()
387 if (hsmartcard->AdvancedInit.AdvFeatureInit != SMARTCARD_ADVFEATURE_NO_INIT) in HAL_SMARTCARD_Init()
389 SMARTCARD_AdvFeatureConfig(hsmartcard); in HAL_SMARTCARD_Init()
393 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Init()
396 return (SMARTCARD_CheckIdleState(hsmartcard)); in HAL_SMARTCARD_Init()
405 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_DeInit() argument
408 if (hsmartcard == NULL) in HAL_SMARTCARD_DeInit()
414 assert_param(IS_SMARTCARD_INSTANCE(hsmartcard->Instance)); in HAL_SMARTCARD_DeInit()
416 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; in HAL_SMARTCARD_DeInit()
419 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_DeInit()
421 WRITE_REG(hsmartcard->Instance->CR1, 0x0U); in HAL_SMARTCARD_DeInit()
422 WRITE_REG(hsmartcard->Instance->CR2, 0x0U); in HAL_SMARTCARD_DeInit()
423 WRITE_REG(hsmartcard->Instance->CR3, 0x0U); in HAL_SMARTCARD_DeInit()
424 WRITE_REG(hsmartcard->Instance->RTOR, 0x0U); in HAL_SMARTCARD_DeInit()
425 WRITE_REG(hsmartcard->Instance->GTPR, 0x0U); in HAL_SMARTCARD_DeInit()
429 if (hsmartcard->MspDeInitCallback == NULL) in HAL_SMARTCARD_DeInit()
431 hsmartcard->MspDeInitCallback = HAL_SMARTCARD_MspDeInit; in HAL_SMARTCARD_DeInit()
434 hsmartcard->MspDeInitCallback(hsmartcard); in HAL_SMARTCARD_DeInit()
436 HAL_SMARTCARD_MspDeInit(hsmartcard); in HAL_SMARTCARD_DeInit()
439 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_DeInit()
440 hsmartcard->gState = HAL_SMARTCARD_STATE_RESET; in HAL_SMARTCARD_DeInit()
441 hsmartcard->RxState = HAL_SMARTCARD_STATE_RESET; in HAL_SMARTCARD_DeInit()
444 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_DeInit()
455 __weak void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_MspInit() argument
458 UNUSED(hsmartcard); in HAL_SMARTCARD_MspInit()
471 __weak void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_MspDeInit() argument
474 UNUSED(hsmartcard); in HAL_SMARTCARD_MspDeInit()
504 HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, in HAL_SMARTCARD_RegisterCallback() argument
513 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
518 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_RegisterCallback()
524 hsmartcard->TxCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
528 hsmartcard->RxCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
532 hsmartcard->ErrorCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
536 hsmartcard->AbortCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
540 hsmartcard->AbortTransmitCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
544 hsmartcard->AbortReceiveCpltCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
549 hsmartcard->RxFifoFullCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
553 hsmartcard->TxFifoEmptyCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
558 hsmartcard->MspInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
562 hsmartcard->MspDeInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
567 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
574 else if (hsmartcard->gState == HAL_SMARTCARD_STATE_RESET) in HAL_SMARTCARD_RegisterCallback()
579 hsmartcard->MspInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
583 hsmartcard->MspDeInitCallback = pCallback; in HAL_SMARTCARD_RegisterCallback()
588 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
598 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_RegisterCallback()
628 HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, in HAL_SMARTCARD_UnRegisterCallback() argument
633 if (HAL_SMARTCARD_STATE_READY == hsmartcard->gState) in HAL_SMARTCARD_UnRegisterCallback()
638hsmartcard->TxCpltCallback = HAL_SMARTCARD_TxCpltCallback; /* Legacy weak TxCpltCa… in HAL_SMARTCARD_UnRegisterCallback()
642hsmartcard->RxCpltCallback = HAL_SMARTCARD_RxCpltCallback; /* Legacy weak RxCpltCa… in HAL_SMARTCARD_UnRegisterCallback()
646hsmartcard->ErrorCallback = HAL_SMARTCARD_ErrorCallback; /* Legacy weak ErrorCal… in HAL_SMARTCARD_UnRegisterCallback()
650hsmartcard->AbortCpltCallback = HAL_SMARTCARD_AbortCpltCallback; /* Legacy weak AbortCpl… in HAL_SMARTCARD_UnRegisterCallback()
654hsmartcard->AbortTransmitCpltCallback = HAL_SMARTCARD_AbortTransmitCpltCallback; /* Legacy weak in HAL_SMARTCARD_UnRegisterCallback()
659hsmartcard->AbortReceiveCpltCallback = HAL_SMARTCARD_AbortReceiveCpltCallback; /* Legacy weak in HAL_SMARTCARD_UnRegisterCallback()
665hsmartcard->RxFifoFullCallback = HAL_SMARTCARDEx_RxFifoFullCallback; /* Legacy weak RxFifoFul… in HAL_SMARTCARD_UnRegisterCallback()
669hsmartcard->TxFifoEmptyCallback = HAL_SMARTCARDEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmp… in HAL_SMARTCARD_UnRegisterCallback()
674hsmartcard->MspInitCallback = HAL_SMARTCARD_MspInit; /* Legacy weak MspInitC… in HAL_SMARTCARD_UnRegisterCallback()
678hsmartcard->MspDeInitCallback = HAL_SMARTCARD_MspDeInit; /* Legacy weak MspDeIni… in HAL_SMARTCARD_UnRegisterCallback()
683 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_UnRegisterCallback()
690 else if (HAL_SMARTCARD_STATE_RESET == hsmartcard->gState) in HAL_SMARTCARD_UnRegisterCallback()
695 hsmartcard->MspInitCallback = HAL_SMARTCARD_MspInit; in HAL_SMARTCARD_UnRegisterCallback()
699 hsmartcard->MspDeInitCallback = HAL_SMARTCARD_MspDeInit; in HAL_SMARTCARD_UnRegisterCallback()
704 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_UnRegisterCallback()
714 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK; in HAL_SMARTCARD_UnRegisterCallback()
825 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData,… in HAL_SMARTCARD_Transmit() argument
832 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Transmit()
840 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Transmit()
842 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY_TX; in HAL_SMARTCARD_Transmit()
848 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
853 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit()
854 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit()
856 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit()
859 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TE); in HAL_SMARTCARD_Transmit()
862 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
865 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit()
867 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Transmit()
868 hsmartcard->TxXferSize = Size; in HAL_SMARTCARD_Transmit()
869 hsmartcard->TxXferCount = Size; in HAL_SMARTCARD_Transmit()
871 while (hsmartcard->TxXferCount > 0U) in HAL_SMARTCARD_Transmit()
873 hsmartcard->TxXferCount--; in HAL_SMARTCARD_Transmit()
874 …if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, SMARTCARD_FLAG_TXE, RESET, tickstart, Timeout) !=… in HAL_SMARTCARD_Transmit()
878 hsmartcard->Instance->TDR = (uint8_t)(*ptmpdata & 0xFFU); in HAL_SMARTCARD_Transmit()
881 …if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, SMARTCARD_TRANSMISSION_COMPLETION_FLAG(hsmartcard in HAL_SMARTCARD_Transmit()
888 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
889 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit()
890 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit()
894 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit()
896 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX_RX) in HAL_SMARTCARD_Transmit()
897 || (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit()
900 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit()
902 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit()
905 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Transmit()
908 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit()
931 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16… in HAL_SMARTCARD_Receive() argument
938 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Receive()
946 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Receive()
948 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Receive()
949 hsmartcard->RxState = HAL_SMARTCARD_STATE_BUSY_RX; in HAL_SMARTCARD_Receive()
954 hsmartcard->RxXferSize = Size; in HAL_SMARTCARD_Receive()
955 hsmartcard->RxXferCount = Size; in HAL_SMARTCARD_Receive()
958 while (hsmartcard->RxXferCount > 0U) in HAL_SMARTCARD_Receive()
960 hsmartcard->RxXferCount--; in HAL_SMARTCARD_Receive()
962 …if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, SMARTCARD_FLAG_RXNE, RESET, tickstart, Timeout) !… in HAL_SMARTCARD_Receive()
966 *ptmpdata = (uint8_t)(hsmartcard->Instance->RDR & (uint8_t)0x00FF); in HAL_SMARTCARD_Receive()
971 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Receive()
974 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive()
999 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pDa… in HAL_SMARTCARD_Transmit_IT() argument
1002 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Transmit_IT()
1010 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1012 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Transmit_IT()
1013 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY_TX; in HAL_SMARTCARD_Transmit_IT()
1015 hsmartcard->pTxBuffPtr = pData; in HAL_SMARTCARD_Transmit_IT()
1016 hsmartcard->TxXferSize = Size; in HAL_SMARTCARD_Transmit_IT()
1017 hsmartcard->TxXferCount = Size; in HAL_SMARTCARD_Transmit_IT()
1018 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_Transmit_IT()
1021 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_IT()
1026 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit_IT()
1027 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit_IT()
1029 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit_IT()
1032 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TE); in HAL_SMARTCARD_Transmit_IT()
1035 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_IT()
1038 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1042 if (hsmartcard->FifoMode == SMARTCARD_FIFOMODE_ENABLE) in HAL_SMARTCARD_Transmit_IT()
1045 hsmartcard->TxISR = SMARTCARD_TxISR_FIFOEN; in HAL_SMARTCARD_Transmit_IT()
1048 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1051 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_IT()
1054 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTIE); in HAL_SMARTCARD_Transmit_IT()
1059 hsmartcard->TxISR = SMARTCARD_TxISR; in HAL_SMARTCARD_Transmit_IT()
1062 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1065 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_IT()
1068 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_SMARTCARD_Transmit_IT()
1072 hsmartcard->TxISR = SMARTCARD_TxISR; in HAL_SMARTCARD_Transmit_IT()
1075 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_IT()
1078 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_IT()
1081 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE); in HAL_SMARTCARD_Transmit_IT()
1107 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uin… in HAL_SMARTCARD_Receive_IT() argument
1110 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Receive_IT()
1118 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1120 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Receive_IT()
1121 hsmartcard->RxState = HAL_SMARTCARD_STATE_BUSY_RX; in HAL_SMARTCARD_Receive_IT()
1123 hsmartcard->pRxBuffPtr = pData; in HAL_SMARTCARD_Receive_IT()
1124 hsmartcard->RxXferSize = Size; in HAL_SMARTCARD_Receive_IT()
1125 hsmartcard->RxXferCount = Size; in HAL_SMARTCARD_Receive_IT()
1129 …if ((hsmartcard->FifoMode == SMARTCARD_FIFOMODE_ENABLE) && (Size >= hsmartcard->NbRxDataToProcess)) in HAL_SMARTCARD_Receive_IT()
1132 hsmartcard->RxISR = SMARTCARD_RxISR_FIFOEN; in HAL_SMARTCARD_Receive_IT()
1135 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1138 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in HAL_SMARTCARD_Receive_IT()
1139 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_RXFTIE); in HAL_SMARTCARD_Receive_IT()
1144 hsmartcard->RxISR = SMARTCARD_RxISR; in HAL_SMARTCARD_Receive_IT()
1147 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1150 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_SMARTCARD_Receive_IT()
1154 hsmartcard->RxISR = SMARTCARD_RxISR; in HAL_SMARTCARD_Receive_IT()
1157 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_IT()
1160 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_SMARTCARD_Receive_IT()
1164 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Receive_IT()
1182 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pD… in HAL_SMARTCARD_Transmit_DMA() argument
1185 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Transmit_DMA()
1193 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1195 hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY_TX; in HAL_SMARTCARD_Transmit_DMA()
1197 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Transmit_DMA()
1198 hsmartcard->pTxBuffPtr = pData; in HAL_SMARTCARD_Transmit_DMA()
1199 hsmartcard->TxXferSize = Size; in HAL_SMARTCARD_Transmit_DMA()
1200 hsmartcard->TxXferCount = Size; in HAL_SMARTCARD_Transmit_DMA()
1203 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_DMA()
1208 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in HAL_SMARTCARD_Transmit_DMA()
1209 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in HAL_SMARTCARD_Transmit_DMA()
1211 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in HAL_SMARTCARD_Transmit_DMA()
1214 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_TE); in HAL_SMARTCARD_Transmit_DMA()
1217 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in HAL_SMARTCARD_Transmit_DMA()
1220 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1223 hsmartcard->hdmatx->XferCpltCallback = SMARTCARD_DMATransmitCplt; in HAL_SMARTCARD_Transmit_DMA()
1226 hsmartcard->hdmatx->XferErrorCallback = SMARTCARD_DMAError; in HAL_SMARTCARD_Transmit_DMA()
1229 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Transmit_DMA()
1232 …if (HAL_DMA_Start_IT(hsmartcard->hdmatx, (uint32_t)hsmartcard->pTxBuffPtr, (uint32_t)&hsmartcard->… in HAL_SMARTCARD_Transmit_DMA()
1236 CLEAR_BIT(hsmartcard->Instance->ICR, USART_ICR_TCCF); in HAL_SMARTCARD_Transmit_DMA()
1239 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1242 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Transmit_DMA()
1246 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_Transmit_DMA()
1253 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Transmit_DMA()
1256 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Transmit_DMA()
1259 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Transmit_DMA()
1280 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, ui… in HAL_SMARTCARD_Receive_DMA() argument
1283 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_Receive_DMA()
1291 __HAL_LOCK(hsmartcard); in HAL_SMARTCARD_Receive_DMA()
1293 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Receive_DMA()
1294 hsmartcard->RxState = HAL_SMARTCARD_STATE_BUSY_RX; in HAL_SMARTCARD_Receive_DMA()
1296 hsmartcard->pRxBuffPtr = pData; in HAL_SMARTCARD_Receive_DMA()
1297 hsmartcard->RxXferSize = Size; in HAL_SMARTCARD_Receive_DMA()
1300 hsmartcard->hdmarx->XferCpltCallback = SMARTCARD_DMAReceiveCplt; in HAL_SMARTCARD_Receive_DMA()
1303 hsmartcard->hdmarx->XferErrorCallback = SMARTCARD_DMAError; in HAL_SMARTCARD_Receive_DMA()
1306 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Receive_DMA()
1309 …if (HAL_DMA_Start_IT(hsmartcard->hdmarx, (uint32_t)&hsmartcard->Instance->RDR, (uint32_t)hsmartcar… in HAL_SMARTCARD_Receive_DMA()
1313 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_DMA()
1316 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in HAL_SMARTCARD_Receive_DMA()
1319 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Receive_DMA()
1323 SET_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_Receive_DMA()
1330 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Receive_DMA()
1333 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_Receive_DMA()
1336 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Receive_DMA()
1360 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_Abort() argument
1365 CLEAR_BIT(hsmartcard->Instance->CR1, in HAL_SMARTCARD_Abort()
1368 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_SMARTCARD_Abort()
1371 CLEAR_BIT(hsmartcard->Instance->CR1, in HAL_SMARTCARD_Abort()
1374 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Abort()
1378 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_Abort()
1380 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_Abort()
1383 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_Abort()
1387 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort()
1389 if (HAL_DMA_Abort(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_Abort()
1391 if (HAL_DMA_GetError(hsmartcard->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_Abort()
1394 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Abort()
1403 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_Abort()
1405 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_Abort()
1408 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_Abort()
1412 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort()
1414 if (HAL_DMA_Abort(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_Abort()
1416 if (HAL_DMA_GetError(hsmartcard->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_Abort()
1419 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_Abort()
1428 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_Abort()
1429 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_Abort()
1432 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_Abort()
1437 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort()
1438 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort()
1441 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Abort()
1459 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortTransmit() argument
1463 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_SMARTCARD_AbortTransmit()
1464 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTIE); in HAL_SMARTCARD_AbortTransmit()
1467 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_SMARTCARD_AbortTransmit()
1471 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortTransmit()
1474 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortTransmit()
1478 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_AbortTransmit()
1480 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_AbortTransmit()
1483 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_AbortTransmit()
1487 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_AbortTransmit()
1489 if (HAL_DMA_Abort(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_AbortTransmit()
1491 if (HAL_DMA_GetError(hsmartcard->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_AbortTransmit()
1494 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_AbortTransmit()
1503 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_AbortTransmit()
1506 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF); in HAL_SMARTCARD_AbortTransmit()
1509 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortTransmit()
1527 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortReceive() argument
1531 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | in HAL_SMARTCARD_AbortReceive()
1533 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in HAL_SMARTCARD_AbortReceive()
1536 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | USART_… in HAL_SMARTCARD_AbortReceive()
1537 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortReceive()
1541 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortReceive()
1544 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortReceive()
1548 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_AbortReceive()
1550 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_AbortReceive()
1553 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_AbortReceive()
1557 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_AbortReceive()
1559 if (HAL_DMA_Abort(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_AbortReceive()
1561 if (HAL_DMA_GetError(hsmartcard->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_SMARTCARD_AbortReceive()
1564 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_DMA; in HAL_SMARTCARD_AbortReceive()
1573 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_AbortReceive()
1576 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_AbortReceive()
1581 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortReceive()
1601 HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_Abort_IT() argument
1608 CLEAR_BIT(hsmartcard->Instance->CR1, in HAL_SMARTCARD_Abort_IT()
1611 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_SMARTCARD_Abort_IT()
1614 CLEAR_BIT(hsmartcard->Instance->CR1, in HAL_SMARTCARD_Abort_IT()
1617 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_Abort_IT()
1624 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_Abort_IT()
1628 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_Abort_IT()
1630 hsmartcard->hdmatx->XferAbortCallback = SMARTCARD_DMATxAbortCallback; in HAL_SMARTCARD_Abort_IT()
1634 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1638 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_Abort_IT()
1642 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_Abort_IT()
1644 hsmartcard->hdmarx->XferAbortCallback = SMARTCARD_DMARxAbortCallback; in HAL_SMARTCARD_Abort_IT()
1648 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1653 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_Abort_IT()
1656 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_Abort_IT()
1659 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_Abort_IT()
1665 if (HAL_DMA_Abort_IT(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_Abort_IT()
1667 hsmartcard->hdmatx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1677 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_Abort_IT()
1679 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_Abort_IT()
1682 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_Abort_IT()
1688 if (HAL_DMA_Abort_IT(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_Abort_IT()
1690 hsmartcard->hdmarx->XferAbortCallback = NULL; in HAL_SMARTCARD_Abort_IT()
1704 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_Abort_IT()
1705 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_Abort_IT()
1708 hsmartcard->RxISR = NULL; in HAL_SMARTCARD_Abort_IT()
1709 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_Abort_IT()
1712 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_Abort_IT()
1715 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_Abort_IT()
1720 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort_IT()
1721 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_Abort_IT()
1726 hsmartcard->AbortCpltCallback(hsmartcard); in HAL_SMARTCARD_Abort_IT()
1729 HAL_SMARTCARD_AbortCpltCallback(hsmartcard); in HAL_SMARTCARD_Abort_IT()
1751 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortTransmit_IT() argument
1755 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in HAL_SMARTCARD_AbortTransmit_IT()
1756 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTIE); in HAL_SMARTCARD_AbortTransmit_IT()
1759 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in HAL_SMARTCARD_AbortTransmit_IT()
1763 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortTransmit_IT()
1766 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortTransmit_IT()
1770 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_AbortTransmit_IT()
1772 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_AbortTransmit_IT()
1775 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_AbortTransmit_IT()
1779 hsmartcard->hdmatx->XferAbortCallback = SMARTCARD_DMATxOnlyAbortCallback; in HAL_SMARTCARD_AbortTransmit_IT()
1782 if (HAL_DMA_Abort_IT(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_AbortTransmit_IT()
1785 hsmartcard->hdmatx->XferAbortCallback(hsmartcard->hdmatx); in HAL_SMARTCARD_AbortTransmit_IT()
1791 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_AbortTransmit_IT()
1794 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_AbortTransmit_IT()
1797 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortTransmit_IT()
1802 hsmartcard->AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1805 HAL_SMARTCARD_AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1812 hsmartcard->TxXferCount = 0U; in HAL_SMARTCARD_AbortTransmit_IT()
1815 hsmartcard->TxISR = NULL; in HAL_SMARTCARD_AbortTransmit_IT()
1818 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF); in HAL_SMARTCARD_AbortTransmit_IT()
1821 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortTransmit_IT()
1826 hsmartcard->AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1829 HAL_SMARTCARD_AbortTransmitCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortTransmit_IT()
1851 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortReceive_IT() argument
1855 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | in HAL_SMARTCARD_AbortReceive_IT()
1857 CLEAR_BIT(hsmartcard->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in HAL_SMARTCARD_AbortReceive_IT()
1860 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | USART_… in HAL_SMARTCARD_AbortReceive_IT()
1861 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortReceive_IT()
1865 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in HAL_SMARTCARD_AbortReceive_IT()
1868 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in HAL_SMARTCARD_AbortReceive_IT()
1872 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_AbortReceive_IT()
1874 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_AbortReceive_IT()
1877 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_AbortReceive_IT()
1881 hsmartcard->hdmarx->XferAbortCallback = SMARTCARD_DMARxOnlyAbortCallback; in HAL_SMARTCARD_AbortReceive_IT()
1884 if (HAL_DMA_Abort_IT(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_AbortReceive_IT()
1887 hsmartcard->hdmarx->XferAbortCallback(hsmartcard->hdmarx); in HAL_SMARTCARD_AbortReceive_IT()
1893 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_AbortReceive_IT()
1896 hsmartcard->RxISR = NULL; in HAL_SMARTCARD_AbortReceive_IT()
1899 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_AbortReceive_IT()
1904 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortReceive_IT()
1909 hsmartcard->AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1912 HAL_SMARTCARD_AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1919 hsmartcard->RxXferCount = 0U; in HAL_SMARTCARD_AbortReceive_IT()
1922 hsmartcard->RxISR = NULL; in HAL_SMARTCARD_AbortReceive_IT()
1925 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in HAL_SMARTCARD_AbortReceive_IT()
1930 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_AbortReceive_IT()
1935 hsmartcard->AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1938 HAL_SMARTCARD_AbortReceiveCpltCallback(hsmartcard); in HAL_SMARTCARD_AbortReceive_IT()
1951 void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_IRQHandler() argument
1953 uint32_t isrflags = READ_REG(hsmartcard->Instance->ISR); in HAL_SMARTCARD_IRQHandler()
1954 uint32_t cr1its = READ_REG(hsmartcard->Instance->CR1); in HAL_SMARTCARD_IRQHandler()
1955 uint32_t cr3its = READ_REG(hsmartcard->Instance->CR3); in HAL_SMARTCARD_IRQHandler()
1973 if (hsmartcard->RxISR != NULL) in HAL_SMARTCARD_IRQHandler()
1975 hsmartcard->RxISR(hsmartcard); in HAL_SMARTCARD_IRQHandler()
1995 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_PEF); in HAL_SMARTCARD_IRQHandler()
1997 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_PE; in HAL_SMARTCARD_IRQHandler()
2003 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_FEF); in HAL_SMARTCARD_IRQHandler()
2005 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_FE; in HAL_SMARTCARD_IRQHandler()
2011 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_NEF); in HAL_SMARTCARD_IRQHandler()
2013 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_NE; in HAL_SMARTCARD_IRQHandler()
2028 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_OREF); in HAL_SMARTCARD_IRQHandler()
2030 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_ORE; in HAL_SMARTCARD_IRQHandler()
2036 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_RTOF); in HAL_SMARTCARD_IRQHandler()
2038 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_RTO; in HAL_SMARTCARD_IRQHandler()
2042 if (hsmartcard->ErrorCode != HAL_SMARTCARD_ERROR_NONE) in HAL_SMARTCARD_IRQHandler()
2054 if (hsmartcard->RxISR != NULL) in HAL_SMARTCARD_IRQHandler()
2056 hsmartcard->RxISR(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2065 errorcode = hsmartcard->ErrorCode; in HAL_SMARTCARD_IRQHandler()
2066 if ((HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_IRQHandler()
2072 SMARTCARD_EndRxTransfer(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2075 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in HAL_SMARTCARD_IRQHandler()
2077 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in HAL_SMARTCARD_IRQHandler()
2080 if (hsmartcard->hdmarx != NULL) in HAL_SMARTCARD_IRQHandler()
2084 hsmartcard->hdmarx->XferAbortCallback = SMARTCARD_DMAAbortOnError; in HAL_SMARTCARD_IRQHandler()
2087 if (HAL_DMA_Abort_IT(hsmartcard->hdmarx) != HAL_OK) in HAL_SMARTCARD_IRQHandler()
2090 hsmartcard->hdmarx->XferAbortCallback(hsmartcard->hdmarx); in HAL_SMARTCARD_IRQHandler()
2097 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2100 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2108 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2111 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2118 else if ((hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in HAL_SMARTCARD_IRQHandler()
2124 SMARTCARD_EndTxTransfer(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2127 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in HAL_SMARTCARD_IRQHandler()
2129 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in HAL_SMARTCARD_IRQHandler()
2132 if (hsmartcard->hdmatx != NULL) in HAL_SMARTCARD_IRQHandler()
2136 hsmartcard->hdmatx->XferAbortCallback = SMARTCARD_DMAAbortOnError; in HAL_SMARTCARD_IRQHandler()
2139 if (HAL_DMA_Abort_IT(hsmartcard->hdmatx) != HAL_OK) in HAL_SMARTCARD_IRQHandler()
2142 hsmartcard->hdmatx->XferAbortCallback(hsmartcard->hdmatx); in HAL_SMARTCARD_IRQHandler()
2149 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2152 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2160 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2163 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2173 hsmartcard->ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2176 HAL_SMARTCARD_ErrorCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2178 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in HAL_SMARTCARD_IRQHandler()
2188 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in HAL_SMARTCARD_IRQHandler()
2189 __HAL_UNLOCK(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2192 hsmartcard->RxCpltCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2195 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2199 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_EOBF); in HAL_SMARTCARD_IRQHandler()
2213 if (hsmartcard->TxISR != NULL) in HAL_SMARTCARD_IRQHandler()
2215 hsmartcard->TxISR(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2221 if (__HAL_SMARTCARD_GET_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication) != RESET) in HAL_SMARTCARD_IRQHandler()
2223 …if (__HAL_SMARTCARD_GET_IT_SOURCE(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication) != … in HAL_SMARTCARD_IRQHandler()
2225 SMARTCARD_EndTransmit_IT(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2236 hsmartcard->TxFifoEmptyCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2239 HAL_SMARTCARDEx_TxFifoEmptyCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2249 hsmartcard->RxFifoFullCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2252 HAL_SMARTCARDEx_RxFifoFullCallback(hsmartcard); in HAL_SMARTCARD_IRQHandler()
2265 __weak void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_TxCpltCallback() argument
2268 UNUSED(hsmartcard); in HAL_SMARTCARD_TxCpltCallback()
2281 __weak void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_RxCpltCallback() argument
2284 UNUSED(hsmartcard); in HAL_SMARTCARD_RxCpltCallback()
2297 __weak void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_ErrorCallback() argument
2300 UNUSED(hsmartcard); in HAL_SMARTCARD_ErrorCallback()
2313 __weak void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortCpltCallback() argument
2316 UNUSED(hsmartcard); in HAL_SMARTCARD_AbortCpltCallback()
2329 __weak void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortTransmitCpltCallback() argument
2332 UNUSED(hsmartcard); in HAL_SMARTCARD_AbortTransmitCpltCallback()
2345 __weak void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_AbortReceiveCpltCallback() argument
2348 UNUSED(hsmartcard); in HAL_SMARTCARD_AbortReceiveCpltCallback()
2384 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(const SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_GetState() argument
2389 temp1 = (uint32_t)hsmartcard->gState; in HAL_SMARTCARD_GetState()
2390 temp2 = (uint32_t)hsmartcard->RxState; in HAL_SMARTCARD_GetState()
2401 uint32_t HAL_SMARTCARD_GetError(const SMARTCARD_HandleTypeDef *hsmartcard) in HAL_SMARTCARD_GetError() argument
2403 return hsmartcard->ErrorCode; in HAL_SMARTCARD_GetError()
2424 void SMARTCARD_InitCallbacksToDefault(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_InitCallbacksToDefault() argument
2427hsmartcard->TxCpltCallback = HAL_SMARTCARD_TxCpltCallback; /* Legacy weak Tx… in SMARTCARD_InitCallbacksToDefault()
2428hsmartcard->RxCpltCallback = HAL_SMARTCARD_RxCpltCallback; /* Legacy weak Rx… in SMARTCARD_InitCallbacksToDefault()
2429hsmartcard->ErrorCallback = HAL_SMARTCARD_ErrorCallback; /* Legacy weak Er… in SMARTCARD_InitCallbacksToDefault()
2430hsmartcard->AbortCpltCallback = HAL_SMARTCARD_AbortCpltCallback; /* Legacy weak Ab… in SMARTCARD_InitCallbacksToDefault()
2431 hsmartcard->AbortTransmitCpltCallback = HAL_SMARTCARD_AbortTransmitCpltCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2433 hsmartcard->AbortReceiveCpltCallback = HAL_SMARTCARD_AbortReceiveCpltCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2436 hsmartcard->RxFifoFullCallback = HAL_SMARTCARDEx_RxFifoFullCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2438 hsmartcard->TxFifoEmptyCallback = HAL_SMARTCARDEx_TxFifoEmptyCallback; /* Legacy weak in SMARTCARD_InitCallbacksToDefault()
2451 static HAL_StatusTypeDef SMARTCARD_SetConfig(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_SetConfig() argument
2462 assert_param(IS_SMARTCARD_INSTANCE(hsmartcard->Instance)); in SMARTCARD_SetConfig()
2463 assert_param(IS_SMARTCARD_BAUDRATE(hsmartcard->Init.BaudRate)); in SMARTCARD_SetConfig()
2464 assert_param(IS_SMARTCARD_WORD_LENGTH(hsmartcard->Init.WordLength)); in SMARTCARD_SetConfig()
2465 assert_param(IS_SMARTCARD_STOPBITS(hsmartcard->Init.StopBits)); in SMARTCARD_SetConfig()
2466 assert_param(IS_SMARTCARD_PARITY(hsmartcard->Init.Parity)); in SMARTCARD_SetConfig()
2467 assert_param(IS_SMARTCARD_MODE(hsmartcard->Init.Mode)); in SMARTCARD_SetConfig()
2468 assert_param(IS_SMARTCARD_POLARITY(hsmartcard->Init.CLKPolarity)); in SMARTCARD_SetConfig()
2469 assert_param(IS_SMARTCARD_PHASE(hsmartcard->Init.CLKPhase)); in SMARTCARD_SetConfig()
2470 assert_param(IS_SMARTCARD_LASTBIT(hsmartcard->Init.CLKLastBit)); in SMARTCARD_SetConfig()
2471 assert_param(IS_SMARTCARD_ONE_BIT_SAMPLE(hsmartcard->Init.OneBitSampling)); in SMARTCARD_SetConfig()
2472 assert_param(IS_SMARTCARD_NACK(hsmartcard->Init.NACKEnable)); in SMARTCARD_SetConfig()
2473 assert_param(IS_SMARTCARD_TIMEOUT(hsmartcard->Init.TimeOutEnable)); in SMARTCARD_SetConfig()
2474 assert_param(IS_SMARTCARD_AUTORETRY_COUNT(hsmartcard->Init.AutoRetryCount)); in SMARTCARD_SetConfig()
2476 assert_param(IS_SMARTCARD_CLOCKPRESCALER(hsmartcard->Init.ClockPrescaler)); in SMARTCARD_SetConfig()
2485 tmpreg = (((uint32_t)hsmartcard->Init.Parity) | ((uint32_t)hsmartcard->Init.Mode) | in SMARTCARD_SetConfig()
2486 ((uint32_t)hsmartcard->Init.WordLength)); in SMARTCARD_SetConfig()
2487 MODIFY_REG(hsmartcard->Instance->CR1, USART_CR1_FIELDS, tmpreg); in SMARTCARD_SetConfig()
2490 tmpreg = hsmartcard->Init.StopBits; in SMARTCARD_SetConfig()
2492 tmpreg |= (uint32_t) USART_CR2_CLKEN | hsmartcard->Init.CLKPolarity; in SMARTCARD_SetConfig()
2493 tmpreg |= (uint32_t) hsmartcard->Init.CLKPhase | hsmartcard->Init.CLKLastBit; in SMARTCARD_SetConfig()
2494 tmpreg |= (uint32_t) hsmartcard->Init.TimeOutEnable; in SMARTCARD_SetConfig()
2495 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_FIELDS, tmpreg); in SMARTCARD_SetConfig()
2505 tmpreg = (uint32_t) hsmartcard->Init.OneBitSampling | hsmartcard->Init.NACKEnable; in SMARTCARD_SetConfig()
2506 tmpreg |= ((uint32_t)hsmartcard->Init.AutoRetryCount << USART_CR3_SCARCNT_Pos); in SMARTCARD_SetConfig()
2507 MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_FIELDS, tmpreg); in SMARTCARD_SetConfig()
2513 MODIFY_REG(hsmartcard->Instance->PRESC, USART_PRESC_PRESCALER, hsmartcard->Init.ClockPrescaler); in SMARTCARD_SetConfig()
2517 …tmpreg = (hsmartcard->Init.Prescaler | ((uint32_t)hsmartcard->Init.GuardTime << USART_GTPR_GT_Pos)… in SMARTCARD_SetConfig()
2518 …MODIFY_REG(hsmartcard->Instance->GTPR, (uint16_t)(USART_GTPR_GT | USART_GTPR_PSC), (uint16_t)tmpre… in SMARTCARD_SetConfig()
2521 tmpreg = ((uint32_t)hsmartcard->Init.BlockLength << USART_RTOR_BLEN_Pos); in SMARTCARD_SetConfig()
2522 if (hsmartcard->Init.TimeOutEnable == SMARTCARD_TIMEOUT_ENABLE) in SMARTCARD_SetConfig()
2524 assert_param(IS_SMARTCARD_TIMEOUT_VALUE(hsmartcard->Init.TimeOutValue)); in SMARTCARD_SetConfig()
2525 tmpreg |= (uint32_t) hsmartcard->Init.TimeOutValue; in SMARTCARD_SetConfig()
2527 WRITE_REG(hsmartcard->Instance->RTOR, tmpreg); in SMARTCARD_SetConfig()
2530 SMARTCARD_GETCLOCKSOURCE(hsmartcard, clocksource); in SMARTCARD_SetConfig()
2537 tmpreg = (uint32_t)(((pclk / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2538 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2540 tmpreg = (uint32_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2546 tmpreg = (uint32_t)(((pclk / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2547 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2549 tmpreg = (uint32_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2554 tmpreg = (uint32_t)(((HSI_VALUE / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2555 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2557 … tmpreg = (uint32_t)((HSI_VALUE + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2563 tmpreg = (uint32_t)(((pclk / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2564 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2566 tmpreg = (uint32_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2571 …tmpreg = (uint32_t)(((uint16_t)(LSE_VALUE / SMARTCARDPrescTable[hsmartcard->Init.ClockPrescaler]) + in SMARTCARD_SetConfig()
2572 (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2574 … tmpreg = (uint32_t)((LSE_VALUE + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate); in SMARTCARD_SetConfig()
2585 hsmartcard->Instance->BRR = (uint16_t)tmpreg; in SMARTCARD_SetConfig()
2594 hsmartcard->NbTxDataToProcess = 1U; in SMARTCARD_SetConfig()
2595 hsmartcard->NbRxDataToProcess = 1U; in SMARTCARD_SetConfig()
2599 hsmartcard->RxISR = NULL; in SMARTCARD_SetConfig()
2600 hsmartcard->TxISR = NULL; in SMARTCARD_SetConfig()
2612 static void SMARTCARD_AdvFeatureConfig(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_AdvFeatureConfig() argument
2615 assert_param(IS_SMARTCARD_ADVFEATURE_INIT(hsmartcard->AdvancedInit.AdvFeatureInit)); in SMARTCARD_AdvFeatureConfig()
2618 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_TXINVERT_INIT)) in SMARTCARD_AdvFeatureConfig()
2620 assert_param(IS_SMARTCARD_ADVFEATURE_TXINV(hsmartcard->AdvancedInit.TxPinLevelInvert)); in SMARTCARD_AdvFeatureConfig()
2621 … MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_TXINV, hsmartcard->AdvancedInit.TxPinLevelInvert); in SMARTCARD_AdvFeatureConfig()
2625 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_RXINVERT_INIT)) in SMARTCARD_AdvFeatureConfig()
2627 assert_param(IS_SMARTCARD_ADVFEATURE_RXINV(hsmartcard->AdvancedInit.RxPinLevelInvert)); in SMARTCARD_AdvFeatureConfig()
2628 … MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_RXINV, hsmartcard->AdvancedInit.RxPinLevelInvert); in SMARTCARD_AdvFeatureConfig()
2632 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_DATAINVERT_INIT)) in SMARTCARD_AdvFeatureConfig()
2634 assert_param(IS_SMARTCARD_ADVFEATURE_DATAINV(hsmartcard->AdvancedInit.DataInvert)); in SMARTCARD_AdvFeatureConfig()
2635 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_DATAINV, hsmartcard->AdvancedInit.DataInvert); in SMARTCARD_AdvFeatureConfig()
2639 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_SWAP_INIT)) in SMARTCARD_AdvFeatureConfig()
2641 assert_param(IS_SMARTCARD_ADVFEATURE_SWAP(hsmartcard->AdvancedInit.Swap)); in SMARTCARD_AdvFeatureConfig()
2642 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_SWAP, hsmartcard->AdvancedInit.Swap); in SMARTCARD_AdvFeatureConfig()
2646 …if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_… in SMARTCARD_AdvFeatureConfig()
2648 assert_param(IS_SMARTCARD_OVERRUN(hsmartcard->AdvancedInit.OverrunDisable)); in SMARTCARD_AdvFeatureConfig()
2649 … MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_OVRDIS, hsmartcard->AdvancedInit.OverrunDisable); in SMARTCARD_AdvFeatureConfig()
2653 …if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_DMADISABLEONERROR… in SMARTCARD_AdvFeatureConfig()
2655 … assert_param(IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(hsmartcard->AdvancedInit.DMADisableonRxError)); in SMARTCARD_AdvFeatureConfig()
2656 …MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_DDRE, hsmartcard->AdvancedInit.DMADisableonRxError… in SMARTCARD_AdvFeatureConfig()
2660 if (HAL_IS_BIT_SET(hsmartcard->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_MSBFIRST_INIT)) in SMARTCARD_AdvFeatureConfig()
2662 assert_param(IS_SMARTCARD_ADVFEATURE_MSBFIRST(hsmartcard->AdvancedInit.MSBFirst)); in SMARTCARD_AdvFeatureConfig()
2663 MODIFY_REG(hsmartcard->Instance->CR2, USART_CR2_MSBFIRST, hsmartcard->AdvancedInit.MSBFirst); in SMARTCARD_AdvFeatureConfig()
2674 static HAL_StatusTypeDef SMARTCARD_CheckIdleState(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_CheckIdleState() argument
2679 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in SMARTCARD_CheckIdleState()
2685 if ((hsmartcard->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in SMARTCARD_CheckIdleState()
2688 if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, USART_ISR_TEACK, RESET, tickstart, in SMARTCARD_CheckIdleState()
2696 if ((hsmartcard->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in SMARTCARD_CheckIdleState()
2699 if (SMARTCARD_WaitOnFlagUntilTimeout(hsmartcard, USART_ISR_REACK, RESET, tickstart, in SMARTCARD_CheckIdleState()
2708 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_CheckIdleState()
2709 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_CheckIdleState()
2712 __HAL_UNLOCK(hsmartcard); in SMARTCARD_CheckIdleState()
2728 static HAL_StatusTypeDef SMARTCARD_WaitOnFlagUntilTimeout(SMARTCARD_HandleTypeDef *hsmartcard, uint… in SMARTCARD_WaitOnFlagUntilTimeout() argument
2732 while ((__HAL_SMARTCARD_GET_FLAG(hsmartcard, Flag) ? SET : RESET) == Status) in SMARTCARD_WaitOnFlagUntilTimeout()
2742 …CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_… in SMARTCARD_WaitOnFlagUntilTimeout()
2744 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); in SMARTCARD_WaitOnFlagUntilTimeout()
2746 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_WaitOnFlagUntilTimeout()
2748 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_WaitOnFlagUntilTimeout()
2749 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_WaitOnFlagUntilTimeout()
2752 __HAL_UNLOCK(hsmartcard); in SMARTCARD_WaitOnFlagUntilTimeout()
2767 static void SMARTCARD_EndTxTransfer(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_EndTxTransfer() argument
2771 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); in SMARTCARD_EndTxTransfer()
2773 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); in SMARTCARD_EndTxTransfer()
2775 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_EndTxTransfer()
2778 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_EndTxTransfer()
2788 static void SMARTCARD_EndRxTransfer(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_EndRxTransfer() argument
2792 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in SMARTCARD_EndRxTransfer()
2794 CLEAR_BIT(hsmartcard->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in SMARTCARD_EndRxTransfer()
2796 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_EndRxTransfer()
2799 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_EndRxTransfer()
2811 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMATransmitCplt() local
2812 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMATransmitCplt()
2816 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAT); in SMARTCARD_DMATransmitCplt()
2819 __HAL_SMARTCARD_ENABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_DMATransmitCplt()
2830 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMAReceiveCplt() local
2831 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMAReceiveCplt()
2834 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in SMARTCARD_DMAReceiveCplt()
2835 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_DMAReceiveCplt()
2839 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_DMAR); in SMARTCARD_DMAReceiveCplt()
2842 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMAReceiveCplt()
2846 hsmartcard->RxCpltCallback(hsmartcard); in SMARTCARD_DMAReceiveCplt()
2849 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in SMARTCARD_DMAReceiveCplt()
2861 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMAError() local
2864 if (hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in SMARTCARD_DMAError()
2866 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAT)) in SMARTCARD_DMAError()
2868 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMAError()
2869 SMARTCARD_EndTxTransfer(hsmartcard); in SMARTCARD_DMAError()
2874 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_BUSY_RX) in SMARTCARD_DMAError()
2876 if (HAL_IS_BIT_SET(hsmartcard->Instance->CR3, USART_CR3_DMAR)) in SMARTCARD_DMAError()
2878 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMAError()
2879 SMARTCARD_EndRxTransfer(hsmartcard); in SMARTCARD_DMAError()
2883 hsmartcard->ErrorCode |= HAL_SMARTCARD_ERROR_DMA; in SMARTCARD_DMAError()
2886 hsmartcard->ErrorCallback(hsmartcard); in SMARTCARD_DMAError()
2889 HAL_SMARTCARD_ErrorCallback(hsmartcard); in SMARTCARD_DMAError()
2901 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMAAbortOnError() local
2902 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMAAbortOnError()
2903 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMAAbortOnError()
2907 hsmartcard->ErrorCallback(hsmartcard); in SMARTCARD_DMAAbortOnError()
2910 HAL_SMARTCARD_ErrorCallback(hsmartcard); in SMARTCARD_DMAAbortOnError()
2924 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMATxAbortCallback() local
2926 hsmartcard->hdmatx->XferAbortCallback = NULL; in SMARTCARD_DMATxAbortCallback()
2929 if (hsmartcard->hdmarx != NULL) in SMARTCARD_DMATxAbortCallback()
2931 if (hsmartcard->hdmarx->XferAbortCallback != NULL) in SMARTCARD_DMATxAbortCallback()
2938 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMATxAbortCallback()
2939 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMATxAbortCallback()
2942 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in SMARTCARD_DMATxAbortCallback()
2945 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in SMARTCARD_DMATxAbortCallback()
2950 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMATxAbortCallback()
2951 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMATxAbortCallback()
2955 hsmartcard->AbortCpltCallback(hsmartcard); in SMARTCARD_DMATxAbortCallback()
2958 HAL_SMARTCARD_AbortCpltCallback(hsmartcard); in SMARTCARD_DMATxAbortCallback()
2973 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMARxAbortCallback() local
2975 hsmartcard->hdmarx->XferAbortCallback = NULL; in SMARTCARD_DMARxAbortCallback()
2978 if (hsmartcard->hdmatx != NULL) in SMARTCARD_DMARxAbortCallback()
2980 if (hsmartcard->hdmatx->XferAbortCallback != NULL) in SMARTCARD_DMARxAbortCallback()
2987 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMARxAbortCallback()
2988 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMARxAbortCallback()
2991 hsmartcard->ErrorCode = HAL_SMARTCARD_ERROR_NONE; in SMARTCARD_DMARxAbortCallback()
2994 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in SMARTCARD_DMARxAbortCallback()
2999 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMARxAbortCallback()
3000 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMARxAbortCallback()
3004 hsmartcard->AbortCpltCallback(hsmartcard); in SMARTCARD_DMARxAbortCallback()
3007 HAL_SMARTCARD_AbortCpltCallback(hsmartcard); in SMARTCARD_DMARxAbortCallback()
3022 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMATxOnlyAbortCallback() local
3024 hsmartcard->TxXferCount = 0U; in SMARTCARD_DMATxOnlyAbortCallback()
3027 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF); in SMARTCARD_DMATxOnlyAbortCallback()
3030 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMATxOnlyAbortCallback()
3034 hsmartcard->AbortTransmitCpltCallback(hsmartcard); in SMARTCARD_DMATxOnlyAbortCallback()
3037 HAL_SMARTCARD_AbortTransmitCpltCallback(hsmartcard); in SMARTCARD_DMATxOnlyAbortCallback()
3051 SMARTCARD_HandleTypeDef *hsmartcard = (SMARTCARD_HandleTypeDef *)(hdma->Parent); in SMARTCARD_DMARxOnlyAbortCallback() local
3053 hsmartcard->RxXferCount = 0U; in SMARTCARD_DMARxOnlyAbortCallback()
3056 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, in SMARTCARD_DMARxOnlyAbortCallback()
3061 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_DMARxOnlyAbortCallback()
3065 hsmartcard->AbortReceiveCpltCallback(hsmartcard); in SMARTCARD_DMARxOnlyAbortCallback()
3068 HAL_SMARTCARD_AbortReceiveCpltCallback(hsmartcard); in SMARTCARD_DMARxOnlyAbortCallback()
3081 static void SMARTCARD_TxISR(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_TxISR() argument
3084 if (hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in SMARTCARD_TxISR()
3086 if (hsmartcard->TxXferCount == 0U) in SMARTCARD_TxISR()
3090 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in SMARTCARD_TxISR()
3092 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE); in SMARTCARD_TxISR()
3096 __HAL_SMARTCARD_ENABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_TxISR()
3100 hsmartcard->Instance->TDR = (uint8_t)(*hsmartcard->pTxBuffPtr & 0xFFU); in SMARTCARD_TxISR()
3101 hsmartcard->pTxBuffPtr++; in SMARTCARD_TxISR()
3102 hsmartcard->TxXferCount--; in SMARTCARD_TxISR()
3117 static void SMARTCARD_TxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_TxISR_FIFOEN() argument
3122 if (hsmartcard->gState == HAL_SMARTCARD_STATE_BUSY_TX) in SMARTCARD_TxISR_FIFOEN()
3124 for (nb_tx_data = hsmartcard->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in SMARTCARD_TxISR_FIFOEN()
3126 if (hsmartcard->TxXferCount == 0U) in SMARTCARD_TxISR_FIFOEN()
3129 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in SMARTCARD_TxISR_FIFOEN()
3132 __HAL_SMARTCARD_ENABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_TxISR_FIFOEN()
3134 else if (READ_BIT(hsmartcard->Instance->ISR, USART_ISR_TXE_TXFNF) != 0U) in SMARTCARD_TxISR_FIFOEN()
3136 hsmartcard->Instance->TDR = (uint8_t)(*hsmartcard->pTxBuffPtr & 0xFFU); in SMARTCARD_TxISR_FIFOEN()
3137 hsmartcard->pTxBuffPtr++; in SMARTCARD_TxISR_FIFOEN()
3138 hsmartcard->TxXferCount--; in SMARTCARD_TxISR_FIFOEN()
3155 static void SMARTCARD_EndTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_EndTransmit_IT() argument
3158 __HAL_SMARTCARD_DISABLE_IT(hsmartcard, hsmartcard->AdvancedInit.TxCompletionIndication); in SMARTCARD_EndTransmit_IT()
3161 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_READY) in SMARTCARD_EndTransmit_IT()
3164 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_EndTransmit_IT()
3168 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in SMARTCARD_EndTransmit_IT()
3169 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX) in SMARTCARD_EndTransmit_IT()
3170 && (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in SMARTCARD_EndTransmit_IT()
3174 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RE); in SMARTCARD_EndTransmit_IT()
3176 if ((hsmartcard->Init.Mode == SMARTCARD_MODE_TX_RX) in SMARTCARD_EndTransmit_IT()
3177 || (hsmartcard->Init.NACKEnable == SMARTCARD_NACK_ENABLE)) in SMARTCARD_EndTransmit_IT()
3180 __HAL_SMARTCARD_FLUSH_DRREGISTER(hsmartcard); in SMARTCARD_EndTransmit_IT()
3182 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_UE); in SMARTCARD_EndTransmit_IT()
3185 hsmartcard->gState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_EndTransmit_IT()
3188 hsmartcard->TxISR = NULL; in SMARTCARD_EndTransmit_IT()
3192 hsmartcard->TxCpltCallback(hsmartcard); in SMARTCARD_EndTransmit_IT()
3195 HAL_SMARTCARD_TxCpltCallback(hsmartcard); in SMARTCARD_EndTransmit_IT()
3208 static void SMARTCARD_RxISR(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_RxISR() argument
3211 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_BUSY_RX) in SMARTCARD_RxISR()
3213 *hsmartcard->pRxBuffPtr = (uint8_t)(hsmartcard->Instance->RDR & (uint8_t)0xFF); in SMARTCARD_RxISR()
3214 hsmartcard->pRxBuffPtr++; in SMARTCARD_RxISR()
3216 hsmartcard->RxXferCount--; in SMARTCARD_RxISR()
3217 if (hsmartcard->RxXferCount == 0U) in SMARTCARD_RxISR()
3220 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in SMARTCARD_RxISR()
3222 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE); in SMARTCARD_RxISR()
3226 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in SMARTCARD_RxISR()
3229 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_RxISR()
3233 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in SMARTCARD_RxISR()
3235 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_RxISR()
3238 hsmartcard->RxISR = NULL; in SMARTCARD_RxISR()
3242 hsmartcard->RxCpltCallback(hsmartcard); in SMARTCARD_RxISR()
3245 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in SMARTCARD_RxISR()
3252 __HAL_SMARTCARD_SEND_REQ(hsmartcard, SMARTCARD_RXDATA_FLUSH_REQUEST); in SMARTCARD_RxISR()
3266 static void SMARTCARD_RxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard) in SMARTCARD_RxISR_FIFOEN() argument
3272 if (hsmartcard->RxState == HAL_SMARTCARD_STATE_BUSY_RX) in SMARTCARD_RxISR_FIFOEN()
3274 for (nb_rx_data = hsmartcard->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in SMARTCARD_RxISR_FIFOEN()
3276 *hsmartcard->pRxBuffPtr = (uint8_t)(hsmartcard->Instance->RDR & (uint8_t)0xFF); in SMARTCARD_RxISR_FIFOEN()
3277 hsmartcard->pRxBuffPtr++; in SMARTCARD_RxISR_FIFOEN()
3279 hsmartcard->RxXferCount--; in SMARTCARD_RxISR_FIFOEN()
3280 if (hsmartcard->RxXferCount == 0U) in SMARTCARD_RxISR_FIFOEN()
3282 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in SMARTCARD_RxISR_FIFOEN()
3285 if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) in SMARTCARD_RxISR_FIFOEN()
3288 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_EIE); in SMARTCARD_RxISR_FIFOEN()
3292 CLEAR_BIT(hsmartcard->Instance->CR1, USART_CR1_PEIE); in SMARTCARD_RxISR_FIFOEN()
3294 hsmartcard->RxState = HAL_SMARTCARD_STATE_READY; in SMARTCARD_RxISR_FIFOEN()
3297 hsmartcard->RxISR = NULL; in SMARTCARD_RxISR_FIFOEN()
3301 hsmartcard->RxCpltCallback(hsmartcard); in SMARTCARD_RxISR_FIFOEN()
3304 HAL_SMARTCARD_RxCpltCallback(hsmartcard); in SMARTCARD_RxISR_FIFOEN()
3313 rxdatacount = hsmartcard->RxXferCount; in SMARTCARD_RxISR_FIFOEN()
3314 if (((rxdatacount != 0U)) && (rxdatacount < hsmartcard->NbRxDataToProcess)) in SMARTCARD_RxISR_FIFOEN()
3317 CLEAR_BIT(hsmartcard->Instance->CR3, USART_CR3_RXFTIE); in SMARTCARD_RxISR_FIFOEN()
3320 hsmartcard->RxISR = SMARTCARD_RxISR; in SMARTCARD_RxISR_FIFOEN()
3323 SET_BIT(hsmartcard->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in SMARTCARD_RxISR_FIFOEN()
3329 __HAL_SMARTCARD_SEND_REQ(hsmartcard, SMARTCARD_RXDATA_FLUSH_REQUEST); in SMARTCARD_RxISR_FIFOEN()