Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2 | Rev 5 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | /** |
1 | /** |
| 2 | ****************************************************************************** |
2 | ****************************************************************************** |
| 3 | * @file stm32f1xx_hal_smartcard.c |
3 | * @file stm32f1xx_hal_smartcard.c |
| 4 | * @author MCD Application Team |
4 | * @author MCD Application Team |
| 5 | * @version V1.0.1 |
5 | * @version V1.0.4 |
| 6 | * @date 31-July-2015 |
6 | * @date 29-April-2016 |
| 7 | * @brief SMARTCARD HAL module driver. |
7 | * @brief SMARTCARD HAL module driver. |
| 8 | * This file provides firmware functions to manage the following |
8 | * This file provides firmware functions to manage the following |
| 9 | * functionalities of the SMARTCARD peripheral: |
9 | * functionalities of the SMARTCARD peripheral: |
| 10 | * + Initialization and de-initialization functions |
10 | * + Initialization and de-initialization functions |
| 11 | * + IO operation functions |
11 | * + IO operation functions |
| Line 101... | Line 101... | ||
| 101 | 101 | ||
| 102 | @endverbatim |
102 | @endverbatim |
| 103 | ****************************************************************************** |
103 | ****************************************************************************** |
| 104 | * @attention |
104 | * @attention |
| 105 | * |
105 | * |
| 106 | * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> |
106 | * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> |
| 107 | * |
107 | * |
| 108 | * Redistribution and use in source and binary forms, with or without modification, |
108 | * Redistribution and use in source and binary forms, with or without modification, |
| 109 | * are permitted provided that the following conditions are met: |
109 | * are permitted provided that the following conditions are met: |
| 110 | * 1. Redistributions of source code must retain the above copyright notice, |
110 | * 1. Redistributions of source code must retain the above copyright notice, |
| 111 | * this list of conditions and the following disclaimer. |
111 | * this list of conditions and the following disclaimer. |
| Line 192... | Line 192... | ||
| 192 | (+) For the Smartcard mode only these parameters can be configured: |
192 | (+) For the Smartcard mode only these parameters can be configured: |
| 193 | (++) Baud Rate |
193 | (++) Baud Rate |
| 194 | (++) Word Length => Should be 9 bits (8 bits + parity) |
194 | (++) Word Length => Should be 9 bits (8 bits + parity) |
| 195 | (++) Stop Bit |
195 | (++) Stop Bit |
| 196 | (++) Parity: => Should be enabled |
196 | (++) Parity: => Should be enabled |
| 197 | +-------------------------------------------------------------+ |
- | |
| 198 | | M bit | PCE bit | SMARTCARD frame | |
- | |
| 199 | |---------------------|---------------------------------------| |
- | |
| 200 | | 1 | 1 | | SB | 8 bit data | PB | STB | | |
- | |
| 201 | +-------------------------------------------------------------+ |
- | |
| 202 | (++) USART polarity |
197 | (++) USART polarity |
| 203 | (++) USART phase |
198 | (++) USART phase |
| 204 | (++) USART LastBit |
199 | (++) USART LastBit |
| 205 | (++) Receiver/transmitter modes |
200 | (++) Receiver/transmitter modes |
| 206 | (++) Prescaler |
201 | (++) Prescaler |
| Line 226... | Line 221... | ||
| 226 | 221 | ||
| 227 | @endverbatim |
222 | @endverbatim |
| 228 | * @{ |
223 | * @{ |
| 229 | */ |
224 | */ |
| 230 | 225 | ||
| - | 226 | /* |
|
| - | 227 | Additionnal remark on the smartcard frame: |
|
| - | 228 | +-------------------------------------------------------------+ |
|
| - | 229 | | M bit | PCE bit | SMARTCARD frame | |
|
| - | 230 | |---------------------|---------------------------------------| |
|
| - | 231 | | 1 | 1 | | SB | 8 bit data | PB | STB | | |
|
| - | 232 | +-------------------------------------------------------------+ |
|
| - | 233 | */ |
|
| - | 234 | ||
| 231 | /** |
235 | /** |
| 232 | * @brief Initializes the SmartCard mode according to the specified |
236 | * @brief Initializes the SmartCard mode according to the specified |
| 233 | * parameters in the SMARTCARD_HandleTypeDef and create the associated handle. |
237 | * parameters in the SMARTCARD_HandleTypeDef and create the associated handle. |
| 234 | * @param hsc: Pointer to a SMARTCARD_HandleTypeDef structure that contains |
238 | * @param hsc: Pointer to a SMARTCARD_HandleTypeDef structure that contains |
| 235 | * the configuration information for the specified SMARTCARD module. |
239 | * the configuration information for the specified SMARTCARD module. |
| Line 347... | Line 351... | ||
| 347 | * the configuration information for the specified SMARTCARD module. |
351 | * the configuration information for the specified SMARTCARD module. |
| 348 | * @retval None |
352 | * @retval None |
| 349 | */ |
353 | */ |
| 350 | __weak void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsc) |
354 | __weak void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsc) |
| 351 | { |
355 | { |
| - | 356 | /* Prevent unused argument(s) compilation warning */ |
|
| - | 357 | UNUSED(hsc); |
|
| 352 | /* NOTE: This function should not be modified, when the callback is needed, |
358 | /* NOTE: This function should not be modified, when the callback is needed, |
| 353 | the HAL_SMARTCARD_MspInit can be implemented in the user file |
359 | the HAL_SMARTCARD_MspInit can be implemented in the user file |
| 354 | */ |
360 | */ |
| 355 | } |
361 | } |
| 356 | 362 | ||
| Line 360... | Line 366... | ||
| 360 | * the configuration information for the specified SMARTCARD module. |
366 | * the configuration information for the specified SMARTCARD module. |
| 361 | * @retval None |
367 | * @retval None |
| 362 | */ |
368 | */ |
| 363 | __weak void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsc) |
369 | __weak void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsc) |
| 364 | { |
370 | { |
| - | 371 | /* Prevent unused argument(s) compilation warning */ |
|
| - | 372 | UNUSED(hsc); |
|
| 365 | /* NOTE: This function should not be modified, when the callback is needed, |
373 | /* NOTE: This function should not be modified, when the callback is needed, |
| 366 | the HAL_SMARTCARD_MspDeInit can be implemented in the user file |
374 | the HAL_SMARTCARD_MspDeInit can be implemented in the user file |
| 367 | */ |
375 | */ |
| 368 | } |
376 | } |
| 369 | 377 | ||
| Line 824... | Line 832... | ||
| 824 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_PE); |
832 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_PE); |
| 825 | tmp_it_source = __HAL_SMARTCARD_GET_IT_SOURCE(hsc, SMARTCARD_IT_PE); |
833 | tmp_it_source = __HAL_SMARTCARD_GET_IT_SOURCE(hsc, SMARTCARD_IT_PE); |
| 826 | /* SMARTCARD parity error interrupt occurred -----------------------------------*/ |
834 | /* SMARTCARD parity error interrupt occurred -----------------------------------*/ |
| 827 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
835 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
| 828 | { |
836 | { |
| 829 | __HAL_SMARTCARD_CLEAR_PEFLAG(hsc); |
- | |
| 830 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_PE; |
837 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_PE; |
| 831 | } |
838 | } |
| 832 | 839 | ||
| 833 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_FE); |
840 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_FE); |
| 834 | tmp_it_source = __HAL_SMARTCARD_GET_IT_SOURCE(hsc, SMARTCARD_IT_ERR); |
841 | tmp_it_source = __HAL_SMARTCARD_GET_IT_SOURCE(hsc, SMARTCARD_IT_ERR); |
| 835 | /* SMARTCARD frame error interrupt occurred ------------------------------------*/ |
842 | /* SMARTCARD frame error interrupt occurred ------------------------------------*/ |
| 836 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
843 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
| 837 | { |
844 | { |
| 838 | __HAL_SMARTCARD_CLEAR_FEFLAG(hsc); |
- | |
| 839 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_FE; |
845 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_FE; |
| 840 | } |
846 | } |
| 841 | 847 | ||
| 842 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_NE); |
848 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_NE); |
| 843 | /* SMARTCARD noise error interrupt occurred ------------------------------------*/ |
849 | /* SMARTCARD noise error interrupt occurred ------------------------------------*/ |
| 844 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
850 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
| 845 | { |
851 | { |
| 846 | __HAL_SMARTCARD_CLEAR_NEFLAG(hsc); |
- | |
| 847 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_NE; |
852 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_NE; |
| 848 | } |
853 | } |
| 849 | 854 | ||
| 850 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_ORE); |
855 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_ORE); |
| 851 | /* SMARTCARD Over-Run interrupt occurred ---------------------------------------*/ |
856 | /* SMARTCARD Over-Run interrupt occurred ---------------------------------------*/ |
| 852 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
857 | if((tmp_flag != RESET) && (tmp_it_source != RESET)) |
| 853 | { |
858 | { |
| 854 | __HAL_SMARTCARD_CLEAR_OREFLAG(hsc); |
- | |
| 855 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_ORE; |
859 | hsc->ErrorCode |= HAL_SMARTCARD_ERROR_ORE; |
| 856 | } |
860 | } |
| 857 | 861 | ||
| 858 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_RXNE); |
862 | tmp_flag = __HAL_SMARTCARD_GET_FLAG(hsc, SMARTCARD_FLAG_RXNE); |
| 859 | tmp_it_source = __HAL_SMARTCARD_GET_IT_SOURCE(hsc, SMARTCARD_IT_RXNE); |
863 | tmp_it_source = __HAL_SMARTCARD_GET_IT_SOURCE(hsc, SMARTCARD_IT_RXNE); |
| Line 880... | Line 884... | ||
| 880 | } |
884 | } |
| 881 | 885 | ||
| 882 | /* Call the Error call Back in case of Errors */ |
886 | /* Call the Error call Back in case of Errors */ |
| 883 | if(hsc->ErrorCode != HAL_SMARTCARD_ERROR_NONE) |
887 | if(hsc->ErrorCode != HAL_SMARTCARD_ERROR_NONE) |
| 884 | { |
888 | { |
| - | 889 | /* Clear all the error flag at once */ |
|
| - | 890 | __HAL_SMARTCARD_CLEAR_PEFLAG(hsc); |
|
| - | 891 | ||
| 885 | /* Set the SMARTCARD state ready to be able to start again the process */ |
892 | /* Set the SMARTCARD state ready to be able to start again the process */ |
| 886 | hsc->State= HAL_SMARTCARD_STATE_READY; |
893 | hsc->State= HAL_SMARTCARD_STATE_READY; |
| 887 | HAL_SMARTCARD_ErrorCallback(hsc); |
894 | HAL_SMARTCARD_ErrorCallback(hsc); |
| 888 | } |
895 | } |
| 889 | } |
896 | } |
| Line 894... | Line 901... | ||
| 894 | * the configuration information for the specified SMARTCARD module. |
901 | * the configuration information for the specified SMARTCARD module. |
| 895 | * @retval None |
902 | * @retval None |
| 896 | */ |
903 | */ |
| 897 | __weak void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsc) |
904 | __weak void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsc) |
| 898 | { |
905 | { |
| - | 906 | /* Prevent unused argument(s) compilation warning */ |
|
| - | 907 | UNUSED(hsc); |
|
| 899 | /* NOTE: This function should not be modified, when the callback is needed, |
908 | /* NOTE: This function should not be modified, when the callback is needed, |
| 900 | the HAL_SMARTCARD_TxCpltCallback can be implemented in the user file |
909 | the HAL_SMARTCARD_TxCpltCallback can be implemented in the user file |
| 901 | */ |
910 | */ |
| 902 | } |
911 | } |
| 903 | 912 | ||
| Line 907... | Line 916... | ||
| 907 | * the configuration information for the specified SMARTCARD module. |
916 | * the configuration information for the specified SMARTCARD module. |
| 908 | * @retval None |
917 | * @retval None |
| 909 | */ |
918 | */ |
| 910 | __weak void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsc) |
919 | __weak void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsc) |
| 911 | { |
920 | { |
| - | 921 | /* Prevent unused argument(s) compilation warning */ |
|
| - | 922 | UNUSED(hsc); |
|
| 912 | /* NOTE: This function should not be modified, when the callback is needed, |
923 | /* NOTE: This function should not be modified, when the callback is needed, |
| 913 | the HAL_SMARTCARD_RxCpltCallback can be implemented in the user file |
924 | the HAL_SMARTCARD_RxCpltCallback can be implemented in the user file |
| 914 | */ |
925 | */ |
| 915 | } |
926 | } |
| 916 | 927 | ||
| Line 920... | Line 931... | ||
| 920 | * the configuration information for the specified SMARTCARD module. |
931 | * the configuration information for the specified SMARTCARD module. |
| 921 | * @retval None |
932 | * @retval None |
| 922 | */ |
933 | */ |
| 923 | __weak void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsc) |
934 | __weak void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsc) |
| 924 | { |
935 | { |
| - | 936 | /* Prevent unused argument(s) compilation warning */ |
|
| - | 937 | UNUSED(hsc); |
|
| 925 | /* NOTE: This function should not be modified, when the callback is needed, |
938 | /* NOTE: This function should not be modified, when the callback is needed, |
| 926 | the HAL_SMARTCARD_ErrorCallback can be implemented in the user file |
939 | the HAL_SMARTCARD_ErrorCallback can be implemented in the user file |
| 927 | */ |
940 | */ |
| 928 | } |
941 | } |
| 929 | 942 | ||