STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_swpmi.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_SWPMI_H
22 #define STM32L4xx_HAL_SWPMI_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
35 #if defined(SWPMI1)
36 
41 /* Exported types ------------------------------------------------------------*/
49 typedef struct
50 {
51  uint32_t VoltageClass;
54  uint32_t BitRate;
60  uint32_t TxBufferingMode;
63  uint32_t RxBufferingMode;
66 }SWPMI_InitTypeDef;
67 
68 
72 typedef enum
73 {
83 
87 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
88 typedef struct __SWPMI_HandleTypeDef
89 #else
90 typedef struct
91 #endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */
92 {
93  SWPMI_TypeDef *Instance;
95  SWPMI_InitTypeDef Init;
97  uint32_t *pTxBuffPtr;
99  uint32_t TxXferSize;
101  uint32_t TxXferCount;
103  uint32_t *pRxBuffPtr;
105  uint32_t RxXferSize;
107  uint32_t RxXferCount;
109  DMA_HandleTypeDef *hdmatx;
111  DMA_HandleTypeDef *hdmarx;
113  HAL_LockTypeDef Lock;
117  __IO uint32_t ErrorCode;
119 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
120  void (*RxCpltCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
121  void (*RxHalfCpltCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
122  void (*TxCpltCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
123  void (*TxHalfCpltCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
124  void (*ErrorCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
125  void (*MspInitCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
126  void (*MspDeInitCallback) (struct __SWPMI_HandleTypeDef *hswpmi);
127 #endif
128 
130 
131 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
132 
135 typedef enum
136 {
145 
150 #endif
151 
156 /* Exported constants --------------------------------------------------------*/
165 #define HAL_SWPMI_ERROR_NONE ((uint32_t)0x00000000)
166 #define HAL_SWPMI_ERROR_CRC ((uint32_t)0x00000004)
167 #define HAL_SWPMI_ERROR_OVR ((uint32_t)0x00000008)
168 #define HAL_SWPMI_ERROR_UDR ((uint32_t)0x0000000C)
169 #define HAL_SWPMI_ERROR_DMA ((uint32_t)0x00000010)
170 #define HAL_SWPMI_ERROR_TIMEOUT ((uint32_t)0x00000020)
171 #define HAL_SWPMI_ERROR_TXBEF_TIMEOUT ((uint32_t)0x00000040)
172 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
173 #define HAL_SWPMI_ERROR_INVALID_CALLBACK ((uint32_t)0x00000100)
174 #endif
175 
182 #define SWPMI_VOLTAGE_CLASS_C ((uint32_t)0x00000000)
183 #define SWPMI_VOLTAGE_CLASS_B SWPMI_OR_CLASS
184 
191 #define SWPMI_TX_NO_SOFTWAREBUFFER ((uint32_t)0x00000000)
192 #define SWPMI_TX_SINGLE_SOFTWAREBUFFER ((uint32_t)0x00000000)
193 #define SWPMI_TX_MULTI_SOFTWAREBUFFER SWPMI_CR_TXMODE
194 
201 #define SWPMI_RX_NO_SOFTWAREBUFFER ((uint32_t)0x00000000)
202 #define SWPMI_RX_SINGLE_SOFTWAREBUFFER ((uint32_t)0x00000000)
203 #define SWPMI_RX_MULTI_SOFTWAREBUFFER SWPMI_CR_RXMODE
204 
213 #define SWPMI_FLAG_RXBFF SWPMI_ISR_RXBFF
214 #define SWPMI_FLAG_TXBEF SWPMI_ISR_TXBEF
215 #define SWPMI_FLAG_RXBERF SWPMI_ISR_RXBERF
216 #define SWPMI_FLAG_RXOVRF SWPMI_ISR_RXOVRF
217 #define SWPMI_FLAG_TXUNRF SWPMI_ISR_TXUNRF
218 #define SWPMI_FLAG_RXNE SWPMI_ISR_RXNE
219 #define SWPMI_FLAG_TXE SWPMI_ISR_TXE
220 #define SWPMI_FLAG_TCF SWPMI_ISR_TCF
221 #define SWPMI_FLAG_SRF SWPMI_ISR_SRF
222 #define SWPMI_FLAG_SUSP SWPMI_ISR_SUSP
223 #define SWPMI_FLAG_DEACTF SWPMI_ISR_DEACTF
224 
233 #define SWPMI_IT_SRIE SWPMI_IER_SRIE
234 #define SWPMI_IT_TCIE SWPMI_IER_TCIE
235 #define SWPMI_IT_TIE SWPMI_IER_TIE
236 #define SWPMI_IT_RIE SWPMI_IER_RIE
237 #define SWPMI_IT_TXUNRIE SWPMI_IER_TXUNRIE
238 #define SWPMI_IT_RXOVRIE SWPMI_IER_RXOVRIE
239 #define SWPMI_IT_RXBERIE SWPMI_IER_RXBERIE
240 #define SWPMI_IT_TXBEIE SWPMI_IER_TXBEIE
241 #define SWPMI_IT_RXBFIE SWPMI_IER_RXBFIE
242 
250 /* Exported macros -----------------------------------------------------------*/
259 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
260 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) do{ \
261  (__HANDLE__)->State = HAL_SWPMI_STATE_RESET; \
262  (__HANDLE__)->MspInitCallback = NULL; \
263  (__HANDLE__)->MspDeInitCallback = NULL; \
264  } while(0)
265 #else
266 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SWPMI_STATE_RESET)
267 #endif
268 
274 #define __HAL_SWPMI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
275 
281 #define __HAL_SWPMI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
282 
300 #define __HAL_SWPMI_GET_FLAG(__HANDLE__, __FLAG__) (READ_BIT((__HANDLE__)->Instance->ISR, (__FLAG__)) == (__FLAG__))
301 
315 #define __HAL_SWPMI_CLEAR_FLAG(__HANDLE__, __FLAG__) WRITE_REG((__HANDLE__)->Instance->ICR, (__FLAG__))
316 
332 #define __HAL_SWPMI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
333 
349 #define __HAL_SWPMI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
350 
366 #define __HAL_SWPMI_GET_IT(__HANDLE__, __IT__) (READ_BIT((__HANDLE__)->Instance->ISR,(__IT__)) == (__IT__))
367 
383 #define __HAL_SWPMI_GET_IT_SOURCE(__HANDLE__, __IT__) ((READ_BIT((__HANDLE__)->Instance->IER, (__IT__)) == (__IT__)) ? SET : RESET)
384 
389 /* Exported functions --------------------------------------------------------*/
393 /* Initialization/de-initialization functions ********************************/
394 HAL_StatusTypeDef HAL_SWPMI_Init(SWPMI_HandleTypeDef *hswpmi);
395 HAL_StatusTypeDef HAL_SWPMI_DeInit(SWPMI_HandleTypeDef *hswpmi);
398 
399 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
400 /* SWPMI callbacks register/unregister functions ********************************/
401 HAL_StatusTypeDef HAL_SWPMI_RegisterCallback(SWPMI_HandleTypeDef *hswpmi,
402  HAL_SWPMI_CallbackIDTypeDef CallbackID,
403  pSWPMI_CallbackTypeDef pCallback);
404 HAL_StatusTypeDef HAL_SWPMI_UnRegisterCallback(SWPMI_HandleTypeDef *hswpmi,
405  HAL_SWPMI_CallbackIDTypeDef CallbackID);
406 #endif
407 
408 /* IO operation functions *****************************************************/
409 HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
410 HAL_StatusTypeDef HAL_SWPMI_Receive(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
411 HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
412 HAL_StatusTypeDef HAL_SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
413 HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
414 HAL_StatusTypeDef HAL_SWPMI_Receive_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
415 HAL_StatusTypeDef HAL_SWPMI_DMAStop(SWPMI_HandleTypeDef *hswpmi);
416 HAL_StatusTypeDef HAL_SWPMI_EnableLoopback(SWPMI_HandleTypeDef *hswpmi);
417 HAL_StatusTypeDef HAL_SWPMI_DisableLoopback(SWPMI_HandleTypeDef *hswpmi);
424 
425 /* Peripheral Control and State functions ************************************/
427 uint32_t HAL_SWPMI_GetError(SWPMI_HandleTypeDef *hswpmi);
428 
433 /* Private types -------------------------------------------------------------*/
442 /* Private variables ---------------------------------------------------------*/
451 /* Private constants ---------------------------------------------------------*/
460 /* Private macros ------------------------------------------------------------*/
466 #define IS_SWPMI_VOLTAGE_CLASS(__CLASS__) (((__CLASS__) == SWPMI_VOLTAGE_CLASS_C) || \
467  ((__CLASS__) == SWPMI_VOLTAGE_CLASS_B))
468 
469 #define IS_SWPMI_BITRATE_VALUE(__VALUE__) (((__VALUE__) <= 63U))
470 
471 
472 #define IS_SWPMI_TX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_TX_NO_SOFTWAREBUFFER) || \
473  ((__MODE__) == SWPMI_TX_MULTI_SOFTWAREBUFFER))
474 
475 
476 #define IS_SWPMI_RX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_RX_NO_SOFTWAREBUFFER) || \
477  ((__MODE__) == SWPMI_RX_MULTI_SOFTWAREBUFFER))
478 
487 #endif /* SWPMI1 */
488 
493 #ifdef __cplusplus
494 }
495 #endif
496 
497 #endif /* STM32L4xx_HAL_SWPMI_H */
498 
499 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size)
Transmit an amount of data in non-blocking mode with interrupt.
HAL_StatusTypeDef HAL_SWPMI_DisableLoopback(SWPMI_HandleTypeDef *hswpmi)
Disable the Loopback mode.
DMA handle Structure definition.
HAL_StatusTypeDef HAL_SWPMI_DeInit(SWPMI_HandleTypeDef *hswpmi)
De-initialize the SWPMI peripheral.
void HAL_SWPMI_RxCpltCallback(SWPMI_HandleTypeDef *hswpmi)
Rx Transfer completed callback.
HAL_StatusTypeDef HAL_SWPMI_EnableLoopback(SWPMI_HandleTypeDef *hswpmi)
Enable the Loopback mode.
void HAL_SWPMI_MspDeInit(SWPMI_HandleTypeDef *hswpmi)
DeInitialize the SWPMI MSP.
HAL_StatusTypeDef HAL_SWPMI_Init(SWPMI_HandleTypeDef *hswpmi)
Initialize the SWPMI peripheral according to the specified parameters in the SWPMI_InitTypeDef.
HAL_StatusTypeDef HAL_SWPMI_DMAStop(SWPMI_HandleTypeDef *hswpmi)
Stop all DMA transfers.
uint32_t * pRxBuffPtr
HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size)
Transmit an amount of data in non-blocking mode with DMA interrupt.
uint32_t TxXferCount
void HAL_SWPMI_RxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi)
Rx Half Transfer completed callback.
This file contains HAL common defines, enumeration, macros and structures definitions.
void HAL_SWPMI_TxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi)
Tx Half Transfer completed callback.
HAL_SWPMI_StateTypeDef HAL_SWPMI_GetState(SWPMI_HandleTypeDef *hswpmi)
Return the SWPMI handle state.
void HAL_SWPMI_TxCpltCallback(SWPMI_HandleTypeDef *hswpmi)
Tx Transfer completed callback.
HAL_StatusTypeDef HAL_SWPMI_RegisterCallback(SWPMI_HandleTypeDef *hswpmi, HAL_SWPMI_CallbackIDTypeDef CallbackID, pSWPMI_CallbackTypeDef pCallback)
Register a user SWPMI callback to be used instead of the weak predefined callback.
HAL_SWPMI_CallbackIDTypeDef
SWPMI callback ID enumeration definition.
HAL_StatusTypeDef HAL_SWPMI_Receive(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
void HAL_SWPMI_IRQHandler(SWPMI_HandleTypeDef *hswpmi)
Handle SWPMI interrupt request.
HAL_StatusTypeDef HAL_SWPMI_UnRegisterCallback(SWPMI_HandleTypeDef *hswpmi, HAL_SWPMI_CallbackIDTypeDef CallbackID)
Unregister a user SWPMI callback. SWPMI callback is redirected to the weak predefined callback...
HAL_StatusTypeDef HAL_SWPMI_Receive_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size)
Receive an amount of data in non-blocking mode with DMA interrupt.
void(* pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi)
SWPMI callback pointer definition.
__IO HAL_SWPMI_StateTypeDef State
HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout)
Transmit an amount of data in blocking mode.
HAL_LockTypeDef
HAL Lock structures definition.
HAL_SWPMI_StateTypeDef
HAL SWPMI State structures definition.
void HAL_SWPMI_MspInit(SWPMI_HandleTypeDef *hswpmi)
Initialize the SWPMI MSP.
struct __SWPMI_HandleTypeDef else typedef struct endif SWPMI_HandleTypeDef
SWPMI handle Structure definition.
uint32_t HAL_SWPMI_GetError(SWPMI_HandleTypeDef *hswpmi)
Return the SWPMI error code.
uint32_t RxXferCount
SWPMI_InitTypeDef Init
ADC handle Structure definition.
void HAL_SWPMI_ErrorCallback(SWPMI_HandleTypeDef *hswpmi)
SWPMI error callback.
SWPMI_TypeDef * Instance
uint32_t * pTxBuffPtr
HAL_StatusTypeDef HAL_SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size)
Receive an amount of data in non-blocking mode with interrupt.