STM32L443xx HAL User Manual
stm32l4xx_hal_swpmi.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_hal_swpmi.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of SWPMI HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32L4xx_HAL_SWPMI_H
00021 #define STM32L4xx_HAL_SWPMI_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32l4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32L4xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 #if defined(SWPMI1)
00035 
00036 /** @addtogroup SWPMI
00037   * @{
00038   */
00039 
00040 /* Exported types ------------------------------------------------------------*/
00041 /** @defgroup SWPMI_Exported_Types SWPMI Exported Types
00042   * @{
00043   */
00044 
00045 /**
00046   * @brief SWPMI Init Structure definition
00047   */
00048 typedef struct
00049 {
00050   uint32_t VoltageClass;             /*!< Specifies the SWP Voltage Class.
00051                                           This parameter can be a value of @ref SWPMI_Voltage_Class */
00052 
00053   uint32_t BitRate;                  /*!< Specifies the SWPMI Bitrate.
00054                                           This parameter must be a number between 0 and 63U.
00055                                           The Bitrate is computed using the following formula:
00056                                           SWPMI_freq = SWPMI_clk / (((BitRate) + 1)  * 4)
00057                                           */
00058 
00059   uint32_t TxBufferingMode;          /*!< Specifies the transmission buffering mode.
00060                                           This parameter can be a value of @ref SWPMI_Tx_Buffering_Mode */
00061 
00062   uint32_t RxBufferingMode;          /*!< Specifies the reception buffering mode.
00063                                           This parameter can be a value of @ref SWPMI_Rx_Buffering_Mode */
00064 
00065 } SWPMI_InitTypeDef;
00066 
00067 
00068 /**
00069   * @brief HAL SWPMI State structures definition
00070   */
00071 typedef enum
00072 {
00073   HAL_SWPMI_STATE_RESET             = 0x00,    /*!< Peripheral Reset state                             */
00074   HAL_SWPMI_STATE_READY             = 0x01,    /*!< Peripheral Initialized and ready for use           */
00075   HAL_SWPMI_STATE_BUSY              = 0x02,    /*!< an internal process is ongoing                     */
00076   HAL_SWPMI_STATE_BUSY_TX           = 0x12,    /*!< Data Transmission process is ongoing               */
00077   HAL_SWPMI_STATE_BUSY_RX           = 0x22,    /*!< Data Reception process is ongoing                  */
00078   HAL_SWPMI_STATE_BUSY_TX_RX        = 0x32,    /*!< Data Transmission and Reception process is ongoing */
00079   HAL_SWPMI_STATE_TIMEOUT           = 0x03,    /*!< Timeout state                                      */
00080   HAL_SWPMI_STATE_ERROR             = 0x04     /*!< Error                                              */
00081 } HAL_SWPMI_StateTypeDef;
00082 
00083 /**
00084   * @brief  SWPMI handle Structure definition
00085   */
00086 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
00087 typedef struct __SWPMI_HandleTypeDef
00088 #else
00089 typedef struct
00090 #endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */
00091 {
00092   SWPMI_TypeDef                  *Instance;     /*!< SWPMI registers base address         */
00093 
00094   SWPMI_InitTypeDef              Init;          /*!< SWPMI communication parameters       */
00095 
00096   uint32_t                       *pTxBuffPtr;   /*!< Pointer to SWPMI Tx transfer Buffer  */
00097 
00098   uint32_t                       TxXferSize;    /*!< SWPMI Tx Transfer size               */
00099 
00100   uint32_t                       TxXferCount;   /*!< SWPMI Tx Transfer Counter            */
00101 
00102   uint32_t                       *pRxBuffPtr;   /*!< Pointer to SWPMI Rx transfer Buffer  */
00103 
00104   uint32_t                       RxXferSize;    /*!< SWPMI Rx Transfer size               */
00105 
00106   uint32_t                       RxXferCount;   /*!< SWPMI Rx Transfer Counter            */
00107 
00108   DMA_HandleTypeDef              *hdmatx;       /*!< SWPMI Tx DMA Handle parameters       */
00109 
00110   DMA_HandleTypeDef              *hdmarx;       /*!< SWPMI Rx DMA Handle parameters       */
00111 
00112   HAL_LockTypeDef                Lock;          /*!< SWPMI object                         */
00113 
00114   __IO HAL_SWPMI_StateTypeDef    State;         /*!< SWPMI communication state            */
00115 
00116   __IO uint32_t                  ErrorCode;     /*!< SWPMI Error code                     */
00117 
00118 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
00119   void (*RxCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);      /*!< SWPMI receive complete callback */
00120   void (*RxHalfCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);  /*!< SWPMI receive half complete callback */
00121   void (*TxCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);      /*!< SWPMI transmit complete callback */
00122   void (*TxHalfCpltCallback)(struct __SWPMI_HandleTypeDef *hswpmi);  /*!< SWPMI transmit half complete callback */
00123   void (*ErrorCallback)(struct __SWPMI_HandleTypeDef *hswpmi);       /*!< SWPMI error callback */
00124   void (*MspInitCallback)(struct __SWPMI_HandleTypeDef *hswpmi);     /*!< SWPMI MSP init callback */
00125   void (*MspDeInitCallback)(struct __SWPMI_HandleTypeDef *hswpmi);   /*!< SWPMI MSP de-init callback */
00126 #endif
00127 
00128 } SWPMI_HandleTypeDef;
00129 
00130 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
00131 /**
00132   * @brief  SWPMI callback ID enumeration definition
00133   */
00134 typedef enum
00135 {
00136   HAL_SWPMI_RX_COMPLETE_CB_ID     = 0x00U, /*!< SWPMI receive complete callback ID */
00137   HAL_SWPMI_RX_HALFCOMPLETE_CB_ID = 0x01U, /*!< SWPMI receive half complete callback ID */
00138   HAL_SWPMI_TX_COMPLETE_CB_ID     = 0x02U, /*!< SWPMI transmit complete callback ID */
00139   HAL_SWPMI_TX_HALFCOMPLETE_CB_ID = 0x03U, /*!< SWPMI transmit half complete callback ID */
00140   HAL_SWPMI_ERROR_CB_ID           = 0x04U, /*!< SWPMI error callback ID */
00141   HAL_SWPMI_MSPINIT_CB_ID         = 0x05U, /*!< SWPMI MSP init callback ID */
00142   HAL_SWPMI_MSPDEINIT_CB_ID       = 0x06U  /*!< SWPMI MSP de-init callback ID */
00143 } HAL_SWPMI_CallbackIDTypeDef;
00144 
00145 /**
00146   * @brief  SWPMI callback pointer definition
00147   */
00148 typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi);
00149 #endif
00150 
00151 /**
00152   * @}
00153   */
00154 
00155 /* Exported constants --------------------------------------------------------*/
00156 /** @defgroup SWPMI_Exported_Constants SWPMI Exported Constants
00157   * @{
00158   */
00159 
00160 /**
00161   * @defgroup SWPMI_Error_Code SWPMI Error Code Bitmap
00162   * @{
00163   */
00164 #define HAL_SWPMI_ERROR_NONE                  ((uint32_t)0x00000000) /*!< No error              */
00165 #define HAL_SWPMI_ERROR_CRC                   ((uint32_t)0x00000004) /*!< frame error           */
00166 #define HAL_SWPMI_ERROR_OVR                   ((uint32_t)0x00000008) /*!< Overrun error         */
00167 #define HAL_SWPMI_ERROR_UDR                   ((uint32_t)0x0000000C) /*!< Underrun error        */
00168 #define HAL_SWPMI_ERROR_DMA                   ((uint32_t)0x00000010) /*!< DMA transfer error    */
00169 #define HAL_SWPMI_ERROR_TIMEOUT               ((uint32_t)0x00000020) /*!< Transfer timeout      */
00170 #define HAL_SWPMI_ERROR_TXBEF_TIMEOUT         ((uint32_t)0x00000040) /*!< End Tx buffer timeout */
00171 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
00172 #define HAL_SWPMI_ERROR_INVALID_CALLBACK      ((uint32_t)0x00000100) /*!< Invalid callback error */
00173 #endif
00174 /**
00175   * @}
00176   */
00177 
00178 /** @defgroup SWPMI_Voltage_Class SWPMI Voltage Class
00179   * @{
00180   */
00181 #define SWPMI_VOLTAGE_CLASS_C                ((uint32_t)0x00000000)
00182 #define SWPMI_VOLTAGE_CLASS_B                SWPMI_OR_CLASS
00183 /**
00184   * @}
00185   */
00186 
00187 /** @defgroup SWPMI_Tx_Buffering_Mode SWPMI Tx Buffering Mode
00188   * @{
00189   */
00190 #define SWPMI_TX_NO_SOFTWAREBUFFER           ((uint32_t)0x00000000)
00191 #define SWPMI_TX_SINGLE_SOFTWAREBUFFER       ((uint32_t)0x00000000)
00192 #define SWPMI_TX_MULTI_SOFTWAREBUFFER        SWPMI_CR_TXMODE
00193 /**
00194   * @}
00195   */
00196 
00197 /** @defgroup SWPMI_Rx_Buffering_Mode SWPMI Rx Buffering Mode
00198   * @{
00199   */
00200 #define SWPMI_RX_NO_SOFTWAREBUFFER           ((uint32_t)0x00000000)
00201 #define SWPMI_RX_SINGLE_SOFTWAREBUFFER       ((uint32_t)0x00000000)
00202 #define SWPMI_RX_MULTI_SOFTWAREBUFFER        SWPMI_CR_RXMODE
00203 /**
00204   * @}
00205   */
00206 
00207 /** @defgroup SWPMI_Flags SWPMI Status Flags
00208   *        Elements values convention: 0xXXXXXXXX
00209   *           - 0xXXXXXXXX  : Flag mask in the ISR register
00210   * @{
00211   */
00212 #define SWPMI_FLAG_RXBFF                 SWPMI_ISR_RXBFF
00213 #define SWPMI_FLAG_TXBEF                 SWPMI_ISR_TXBEF
00214 #define SWPMI_FLAG_RXBERF                SWPMI_ISR_RXBERF
00215 #define SWPMI_FLAG_RXOVRF                SWPMI_ISR_RXOVRF
00216 #define SWPMI_FLAG_TXUNRF                SWPMI_ISR_TXUNRF
00217 #define SWPMI_FLAG_RXNE                  SWPMI_ISR_RXNE
00218 #define SWPMI_FLAG_TXE                   SWPMI_ISR_TXE
00219 #define SWPMI_FLAG_TCF                   SWPMI_ISR_TCF
00220 #define SWPMI_FLAG_SRF                   SWPMI_ISR_SRF
00221 #define SWPMI_FLAG_SUSP                  SWPMI_ISR_SUSP
00222 #define SWPMI_FLAG_DEACTF                SWPMI_ISR_DEACTF
00223 /**
00224   * @}
00225   */
00226 
00227 /** @defgroup SWPMI_Interrupt_definition SWPMI Interrupts Definition
00228   *        Elements values convention: 0xXXXX
00229   *           - 0xXXXX  : Flag mask in the IER register
00230   * @{
00231   */
00232 #define SWPMI_IT_SRIE                    SWPMI_IER_SRIE
00233 #define SWPMI_IT_TCIE                    SWPMI_IER_TCIE
00234 #define SWPMI_IT_TIE                     SWPMI_IER_TIE
00235 #define SWPMI_IT_RIE                     SWPMI_IER_RIE
00236 #define SWPMI_IT_TXUNRIE                 SWPMI_IER_TXUNRIE
00237 #define SWPMI_IT_RXOVRIE                 SWPMI_IER_RXOVRIE
00238 #define SWPMI_IT_RXBERIE                 SWPMI_IER_RXBERIE
00239 #define SWPMI_IT_TXBEIE                  SWPMI_IER_TXBEIE
00240 #define SWPMI_IT_RXBFIE                  SWPMI_IER_RXBFIE
00241 /**
00242   * @}
00243   */
00244 
00245 /**
00246   * @}
00247   */
00248 
00249 /* Exported macros -----------------------------------------------------------*/
00250 /** @defgroup SWPMI_Exported_Macros SWPMI Exported Macros
00251   * @{
00252   */
00253 
00254 /** @brief Reset SWPMI handle state.
00255   * @param  __HANDLE__ specifies the SWPMI Handle.
00256   * @retval None
00257   */
00258 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
00259 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) do{                                            \
00260                                                      (__HANDLE__)->State = HAL_SWPMI_STATE_RESET; \
00261                                                      (__HANDLE__)->MspInitCallback = NULL;        \
00262                                                      (__HANDLE__)->MspDeInitCallback = NULL;      \
00263                                                    } while(0)
00264 #else
00265 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SWPMI_STATE_RESET)
00266 #endif
00267 
00268 /**
00269   * @brief  Enable the SWPMI peripheral.
00270   * @param  __HANDLE__ SWPMI handle
00271   * @retval None
00272   */
00273 #define __HAL_SWPMI_ENABLE(__HANDLE__)   SET_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
00274 
00275 /**
00276   * @brief  Disable the SWPMI peripheral.
00277   * @param  __HANDLE__ SWPMI handle
00278   * @retval None
00279   */
00280 #define __HAL_SWPMI_DISABLE(__HANDLE__)  CLEAR_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
00281 
00282 /** @brief  Check whether the specified SWPMI flag is set or not.
00283   * @param  __HANDLE__ specifies the SWPMI Handle.
00284   * @param  __FLAG__ specifies the flag to check.
00285   *        This parameter can be one of the following values:
00286   *            @arg SWPMI_FLAG_RXBFF  Receive buffer full flag.
00287   *            @arg SWPMI_FLAG_TXBEF  Transmit buffer empty flag.
00288   *            @arg SWPMI_FLAG_RXBERF  Receive CRC error flag.
00289   *            @arg SWPMI_FLAG_RXOVRF  Receive overrun error flag.
00290   *            @arg SWPMI_FLAG_TXUNRF  Transmit underrun error flag.
00291   *            @arg SWPMI_FLAG_RXNE  Receive data register not empty.
00292   *            @arg SWPMI_FLAG_TXE  Transmit data register empty.
00293   *            @arg SWPMI_FLAG_TCF  Transfer complete flag.
00294   *            @arg SWPMI_FLAG_SRF  Slave resume flag.
00295   *            @arg SWPMI_FLAG_SUSP  SUSPEND flag.
00296   *            @arg SWPMI_FLAG_DEACTF  DEACTIVATED flag.
00297   * @retval The new state of __FLAG__ (TRUE or FALSE).
00298   */
00299 #define __HAL_SWPMI_GET_FLAG(__HANDLE__, __FLAG__) (READ_BIT((__HANDLE__)->Instance->ISR, (__FLAG__)) == (__FLAG__))
00300 
00301 /** @brief  Clear the specified SWPMI ISR flag.
00302   * @param  __HANDLE__ specifies the SWPMI Handle.
00303   * @param  __FLAG__ specifies the flag to clear.
00304   *        This parameter can be one of the following values:
00305   *            @arg SWPMI_FLAG_RXBFF  Receive buffer full flag.
00306   *            @arg SWPMI_FLAG_TXBEF  Transmit buffer empty flag.
00307   *            @arg SWPMI_FLAG_RXBERF  Receive CRC error flag.
00308   *            @arg SWPMI_FLAG_RXOVRF  Receive overrun error flag.
00309   *            @arg SWPMI_FLAG_TXUNRF  Transmit underrun error flag.
00310   *            @arg SWPMI_FLAG_TCF  Transfer complete flag.
00311   *            @arg SWPMI_FLAG_SRF  Slave resume flag.
00312   * @retval None
00313   */
00314 #define __HAL_SWPMI_CLEAR_FLAG(__HANDLE__, __FLAG__) WRITE_REG((__HANDLE__)->Instance->ICR, (__FLAG__))
00315 
00316 /** @brief  Enable the specified SWPMI interrupt.
00317   * @param  __HANDLE__ specifies the SWPMI Handle.
00318   * @param  __INTERRUPT__ specifies the SWPMI interrupt source to enable.
00319   *          This parameter can be one of the following values:
00320   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
00321   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
00322   *            @arg SWPMI_IT_TIE   Transmit interrupt.
00323   *            @arg SWPMI_IT_RIE   Receive interrupt.
00324   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
00325   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
00326   *            @arg SWPMI_IT_RXBEIE  Receive CRC error interrupt.
00327   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
00328   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
00329   * @retval None
00330   */
00331 #define __HAL_SWPMI_ENABLE_IT(__HANDLE__, __INTERRUPT__)   SET_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
00332 
00333 /** @brief  Disable the specified SWPMI interrupt.
00334   * @param  __HANDLE__ specifies the SWPMI Handle.
00335   * @param  __INTERRUPT__ specifies the SWPMI interrupt source to disable.
00336   *          This parameter can be one of the following values:
00337   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
00338   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
00339   *            @arg SWPMI_IT_TIE   Transmit interrupt.
00340   *            @arg SWPMI_IT_RIE   Receive interrupt.
00341   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
00342   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
00343   *            @arg SWPMI_IT_RXBEIE  Receive CRC error interrupt.
00344   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
00345   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
00346   * @retval None
00347   */
00348 #define __HAL_SWPMI_DISABLE_IT(__HANDLE__, __INTERRUPT__)  CLEAR_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
00349 
00350 /** @brief  Check whether the specified SWPMI interrupt has occurred or not.
00351   * @param  __HANDLE__ specifies the SWPMI Handle.
00352   * @param  __IT__ specifies the SWPMI interrupt to check.
00353   *          This parameter can be one of the following values:
00354   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
00355   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
00356   *            @arg SWPMI_IT_TIE   Transmit interrupt.
00357   *            @arg SWPMI_IT_RIE   Receive interrupt.
00358   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
00359   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
00360   *            @arg SWPMI_IT_RXBERIE  Receive CRC error interrupt.
00361   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
00362   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
00363   * @retval The new state of __IT__ (TRUE or FALSE).
00364   */
00365 #define __HAL_SWPMI_GET_IT(__HANDLE__, __IT__)  (READ_BIT((__HANDLE__)->Instance->ISR,(__IT__)) == (__IT__))
00366 
00367 /** @brief  Check whether the specified SWPMI interrupt source is enabled or not.
00368   * @param  __HANDLE__ specifies the SWPMI Handle.
00369   * @param  __IT__ specifies the SWPMI interrupt source to check.
00370   *          This parameter can be one of the following values:
00371   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
00372   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
00373   *            @arg SWPMI_IT_TIE   Transmit interrupt.
00374   *            @arg SWPMI_IT_RIE   Receive interrupt.
00375   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
00376   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
00377   *            @arg SWPMI_IT_RXBERIE  Receive CRC error interrupt.
00378   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
00379   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
00380   * @retval The new state of __IT__ (TRUE or FALSE).
00381   */
00382 #define __HAL_SWPMI_GET_IT_SOURCE(__HANDLE__, __IT__) ((READ_BIT((__HANDLE__)->Instance->IER, (__IT__)) == (__IT__)) ? SET : RESET)
00383 
00384 /**
00385   * @}
00386   */
00387 
00388 /* Exported functions --------------------------------------------------------*/
00389 /** @defgroup SWPMI_Exported_Functions SWPMI Exported Functions
00390   * @{
00391   */
00392 /* Initialization/de-initialization functions  ********************************/
00393 HAL_StatusTypeDef HAL_SWPMI_Init(SWPMI_HandleTypeDef *hswpmi);
00394 HAL_StatusTypeDef HAL_SWPMI_DeInit(SWPMI_HandleTypeDef *hswpmi);
00395 void              HAL_SWPMI_MspInit(SWPMI_HandleTypeDef *hswpmi);
00396 void              HAL_SWPMI_MspDeInit(SWPMI_HandleTypeDef *hswpmi);
00397 
00398 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
00399 /* SWPMI callbacks register/unregister functions ********************************/
00400 HAL_StatusTypeDef HAL_SWPMI_RegisterCallback(SWPMI_HandleTypeDef        *hswpmi,
00401                                              HAL_SWPMI_CallbackIDTypeDef CallbackID,
00402                                              pSWPMI_CallbackTypeDef      pCallback);
00403 HAL_StatusTypeDef HAL_SWPMI_UnRegisterCallback(SWPMI_HandleTypeDef        *hswpmi,
00404                                                HAL_SWPMI_CallbackIDTypeDef CallbackID);
00405 #endif
00406 
00407 /* IO operation functions *****************************************************/
00408 HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
00409 HAL_StatusTypeDef HAL_SWPMI_Receive(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
00410 HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
00411 HAL_StatusTypeDef HAL_SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
00412 HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
00413 HAL_StatusTypeDef HAL_SWPMI_Receive_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
00414 HAL_StatusTypeDef HAL_SWPMI_DMAStop(SWPMI_HandleTypeDef *hswpmi);
00415 HAL_StatusTypeDef HAL_SWPMI_EnableLoopback(SWPMI_HandleTypeDef *hswpmi);
00416 HAL_StatusTypeDef HAL_SWPMI_DisableLoopback(SWPMI_HandleTypeDef *hswpmi);
00417 void              HAL_SWPMI_IRQHandler(SWPMI_HandleTypeDef *hswpmi);
00418 void              HAL_SWPMI_TxCpltCallback(SWPMI_HandleTypeDef *hswpmi);
00419 void              HAL_SWPMI_TxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi);
00420 void              HAL_SWPMI_RxCpltCallback(SWPMI_HandleTypeDef *hswpmi);
00421 void              HAL_SWPMI_RxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi);
00422 void              HAL_SWPMI_ErrorCallback(SWPMI_HandleTypeDef *hswpmi);
00423 
00424 /* Peripheral Control and State functions  ************************************/
00425 HAL_SWPMI_StateTypeDef HAL_SWPMI_GetState(SWPMI_HandleTypeDef *hswpmi);
00426 uint32_t               HAL_SWPMI_GetError(SWPMI_HandleTypeDef *hswpmi);
00427 
00428 /**
00429   * @}
00430   */
00431 
00432 /* Private types -------------------------------------------------------------*/
00433 /** @defgroup SWPMI_Private_Types SWPMI Private Types
00434   * @{
00435   */
00436 
00437 /**
00438   * @}
00439   */
00440 
00441 /* Private variables ---------------------------------------------------------*/
00442 /** @defgroup SWPMI_Private_Variables SWPMI Private Variables
00443   * @{
00444   */
00445 
00446 /**
00447   * @}
00448   */
00449 
00450 /* Private constants ---------------------------------------------------------*/
00451 /** @defgroup SWPMI_Private_Constants SWPMI Private Constants
00452   * @{
00453   */
00454 
00455 /**
00456   * @}
00457   */
00458 
00459 /* Private macros ------------------------------------------------------------*/
00460 /** @defgroup SWPMI_Private_Macros SWPMI Private Macros
00461   * @{
00462   */
00463 
00464 
00465 #define IS_SWPMI_VOLTAGE_CLASS(__CLASS__)    (((__CLASS__) == SWPMI_VOLTAGE_CLASS_C) || \
00466                                               ((__CLASS__) == SWPMI_VOLTAGE_CLASS_B))
00467 
00468 #define IS_SWPMI_BITRATE_VALUE(__VALUE__)    (((__VALUE__) <= 63U))
00469 
00470 
00471 #define IS_SWPMI_TX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_TX_NO_SOFTWAREBUFFER) || \
00472                                               ((__MODE__) == SWPMI_TX_MULTI_SOFTWAREBUFFER))
00473 
00474 
00475 #define IS_SWPMI_RX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_RX_NO_SOFTWAREBUFFER) || \
00476                                               ((__MODE__) == SWPMI_RX_MULTI_SOFTWAREBUFFER))
00477 
00478 /**
00479   * @}
00480   */
00481 
00482 /**
00483   * @}
00484   */
00485 
00486 #endif /* SWPMI1 */
00487 
00488 /**
00489   * @}
00490   */
00491 
00492 #ifdef __cplusplus
00493 }
00494 #endif
00495 
00496 #endif /* STM32L4xx_HAL_SWPMI_H */