Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | mjames | 1 | /** |
2 | ****************************************************************************** |
||
3 | * @file stm32f0xx_hal_smartcard_ex.c |
||
4 | * @author MCD Application Team |
||
5 | * @brief SMARTCARD HAL module driver. |
||
6 | * This file provides extended firmware functions to manage the following |
||
7 | * functionalities of the SmartCard. |
||
8 | * + Initialization and de-initialization functions |
||
9 | * + Peripheral Control functions |
||
10 | * |
||
11 | @verbatim |
||
12 | ============================================================================= |
||
13 | ##### SMARTCARD peripheral extended features ##### |
||
14 | ============================================================================= |
||
15 | [..] |
||
16 | The Extended SMARTCARD HAL driver can be used as follows: |
||
17 | |||
18 | (#) After having configured the SMARTCARD basic features with HAL_SMARTCARD_Init(), |
||
19 | then program SMARTCARD advanced features if required (TX/RX pins swap, TimeOut, |
||
20 | auto-retry counter,...) in the hsmartcard AdvancedInit structure. |
||
21 | @endverbatim |
||
22 | ****************************************************************************** |
||
23 | * @attention |
||
24 | * |
||
25 | * <h2><center>© Copyright (c) 2016 STMicroelectronics. |
||
26 | * All rights reserved.</center></h2> |
||
27 | * |
||
28 | * This software component is licensed by ST under BSD 3-Clause license, |
||
29 | * the "License"; You may not use this file except in compliance with the |
||
30 | * License. You may obtain a copy of the License at: |
||
31 | * opensource.org/licenses/BSD-3-Clause |
||
32 | * |
||
33 | ****************************************************************************** |
||
34 | */ |
||
35 | #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) |
||
36 | /* Includes ------------------------------------------------------------------*/ |
||
37 | #include "stm32f0xx_hal.h" |
||
38 | |||
39 | /** @addtogroup STM32F0xx_HAL_Driver |
||
40 | * @{ |
||
41 | */ |
||
42 | |||
43 | /** @defgroup SMARTCARDEx SMARTCARDEx |
||
44 | * @brief SMARTCARD Extended HAL module driver |
||
45 | * @{ |
||
46 | */ |
||
47 | #ifdef HAL_SMARTCARD_MODULE_ENABLED |
||
48 | |||
49 | /* Private typedef -----------------------------------------------------------*/ |
||
50 | /* Private define ------------------------------------------------------------*/ |
||
51 | /* Private macros ------------------------------------------------------------*/ |
||
52 | /* Private variables ---------------------------------------------------------*/ |
||
53 | /* Private function prototypes -----------------------------------------------*/ |
||
54 | /* Exported functions --------------------------------------------------------*/ |
||
55 | /** @defgroup SMARTCARDEx_Exported_Functions SMARTCARD Extended Exported Functions |
||
56 | * @{ |
||
57 | */ |
||
58 | |||
59 | /** @defgroup SMARTCARDEx_Exported_Functions_Group1 Extended Peripheral Control functions |
||
60 | * @brief Extended control functions |
||
61 | * |
||
62 | @verbatim |
||
63 | =============================================================================== |
||
64 | ##### Peripheral Control functions ##### |
||
65 | =============================================================================== |
||
66 | [..] |
||
67 | This subsection provides a set of functions allowing to initialize the SMARTCARD. |
||
68 | (+) HAL_SMARTCARDEx_BlockLength_Config() API allows to configure the Block Length on the fly |
||
69 | (+) HAL_SMARTCARDEx_TimeOut_Config() API allows to configure the receiver timeout value on the fly |
||
70 | (+) HAL_SMARTCARDEx_EnableReceiverTimeOut() API enables the receiver timeout feature |
||
71 | (+) HAL_SMARTCARDEx_DisableReceiverTimeOut() API disables the receiver timeout feature |
||
72 | |||
73 | @endverbatim |
||
74 | * @{ |
||
75 | */ |
||
76 | |||
77 | /** @brief Update on the fly the SMARTCARD block length in RTOR register. |
||
78 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
||
79 | * the configuration information for the specified SMARTCARD module. |
||
80 | * @param BlockLength SMARTCARD block length (8-bit long at most) |
||
81 | * @retval None |
||
82 | */ |
||
83 | void HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength) |
||
84 | { |
||
85 | MODIFY_REG(hsmartcard->Instance->RTOR, USART_RTOR_BLEN, ((uint32_t)BlockLength << USART_RTOR_BLEN_Pos)); |
||
86 | } |
||
87 | |||
88 | /** @brief Update on the fly the receiver timeout value in RTOR register. |
||
89 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
||
90 | * the configuration information for the specified SMARTCARD module. |
||
91 | * @param TimeOutValue receiver timeout value in number of baud blocks. The timeout |
||
92 | * value must be less or equal to 0x0FFFFFFFF. |
||
93 | * @retval None |
||
94 | */ |
||
95 | void HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue) |
||
96 | { |
||
97 | assert_param(IS_SMARTCARD_TIMEOUT_VALUE(hsmartcard->Init.TimeOutValue)); |
||
98 | MODIFY_REG(hsmartcard->Instance->RTOR, USART_RTOR_RTO, TimeOutValue); |
||
99 | } |
||
100 | |||
101 | /** @brief Enable the SMARTCARD receiver timeout feature. |
||
102 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
||
103 | * the configuration information for the specified SMARTCARD module. |
||
104 | * @retval HAL status |
||
105 | */ |
||
106 | HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard) |
||
107 | { |
||
108 | if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) |
||
109 | { |
||
110 | /* Process Locked */ |
||
111 | __HAL_LOCK(hsmartcard); |
||
112 | |||
113 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
||
114 | |||
115 | /* Set the USART RTOEN bit */ |
||
116 | SET_BIT(hsmartcard->Instance->CR2, USART_CR2_RTOEN); |
||
117 | |||
118 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
||
119 | |||
120 | /* Process Unlocked */ |
||
121 | __HAL_UNLOCK(hsmartcard); |
||
122 | |||
123 | return HAL_OK; |
||
124 | } |
||
125 | else |
||
126 | { |
||
127 | return HAL_BUSY; |
||
128 | } |
||
129 | } |
||
130 | |||
131 | /** @brief Disable the SMARTCARD receiver timeout feature. |
||
132 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
||
133 | * the configuration information for the specified SMARTCARD module. |
||
134 | * @retval HAL status |
||
135 | */ |
||
136 | HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard) |
||
137 | { |
||
138 | if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) |
||
139 | { |
||
140 | /* Process Locked */ |
||
141 | __HAL_LOCK(hsmartcard); |
||
142 | |||
143 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
||
144 | |||
145 | /* Clear the USART RTOEN bit */ |
||
146 | CLEAR_BIT(hsmartcard->Instance->CR2, USART_CR2_RTOEN); |
||
147 | |||
148 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
||
149 | |||
150 | /* Process Unlocked */ |
||
151 | __HAL_UNLOCK(hsmartcard); |
||
152 | |||
153 | return HAL_OK; |
||
154 | } |
||
155 | else |
||
156 | { |
||
157 | return HAL_BUSY; |
||
158 | } |
||
159 | } |
||
160 | |||
161 | /** |
||
162 | * @} |
||
163 | */ |
||
164 | |||
165 | /** @defgroup SMARTCARDEx_Exported_Functions_Group2 Extended Peripheral IO operation functions |
||
166 | * @brief SMARTCARD Transmit and Receive functions |
||
167 | * |
||
168 | * @{ |
||
169 | */ |
||
170 | |||
171 | /** |
||
172 | * @} |
||
173 | */ |
||
174 | |||
175 | |||
176 | /** |
||
177 | * @} |
||
178 | */ |
||
179 | |||
180 | /** @defgroup SMARTCARDEx_Private_Functions SMARTCARD Extended Private Functions |
||
181 | * @{ |
||
182 | */ |
||
183 | |||
184 | /** |
||
185 | * @} |
||
186 | */ |
||
187 | |||
188 | #endif /* HAL_SMARTCARD_MODULE_ENABLED */ |
||
189 | |||
190 | /** |
||
191 | * @} |
||
192 | */ |
||
193 | |||
194 | /** |
||
195 | * @} |
||
196 | */ |
||
197 | #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */ |
||
198 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |