1 /**
2   ******************************************************************************
3   * @file    stm32h7xx_hal_pssi.h
4   * @author  MCD Application Team
5   * @brief   Header file of PSSI HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2019 STMicroelectronics.
10   * All rights reserved.
11   *
12   * This software is licensed under terms that can be found in the LICENSE file
13   * in the root directory of this software component.
14   * If no LICENSE file comes with this software, it is provided AS-IS.
15   *
16   ******************************************************************************
17   */
18 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32H7xx_HAL_PSSI_H
21 #define STM32H7xx_HAL_PSSI_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32h7xx_hal_def.h"
29 
30 /** @addtogroup STM32H7xx_HAL_Driver
31   * @{
32   */
33 #if defined(PSSI)
34 
35 #ifndef USE_HAL_PSSI_REGISTER_CALLBACKS
36 /* For backward compatibility, if USE_HAL_PSSI_REGISTER_CALLBACKS not defined, define it to 1*/
37 #define USE_HAL_PSSI_REGISTER_CALLBACKS 0U
38 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
39 
40 /** @addtogroup PSSI PSSI
41   * @brief PSSI HAL module driver
42   * @{
43   */
44 
45 /* Exported types ------------------------------------------------------------*/
46 /** @defgroup PSSI_Exported_Types PSSI Exported Types
47   * @{
48   */
49 
50 
51 /**
52   * @brief PSSI Init structure definition
53   */
54 typedef struct
55 {
56   uint32_t  DataWidth;          /* !< Configures the data width.
57                                       This parameter can be a value of @ref PSSI_DATA_WIDTH. */
58   uint32_t  BusWidth;           /* !< Configures the parallel bus width.
59                                       This parameter can be a value of @ref PSSI_BUS_WIDTH. */
60   uint32_t  ControlSignal;      /* !< Configures Data enable and Data ready.
61                                       This parameter can be a value of @ref ControlSignal_Configuration. */
62   uint32_t  ClockPolarity;      /* !< Configures the PSSI Input Clock polarity.
63                                       This parameter can be a value of @ref Clock_Polarity. */
64   uint32_t  DataEnablePolarity; /* !< Configures the PSSI Data Enable polarity.
65                                       This parameter can be a value of @ref Data_Enable_Polarity. */
66   uint32_t  ReadyPolarity;      /* !< Configures the PSSI Ready polarity.
67                                       This parameter can be a value of @ref Ready_Polarity. */
68 
69 } PSSI_InitTypeDef;
70 
71 
72 /**
73   * @brief  HAL PSSI State structures definition
74   */
75 typedef enum
76 {
77   HAL_PSSI_STATE_RESET   = 0x00U, /* !< PSSI not yet initialized or disabled     */
78   HAL_PSSI_STATE_READY   = 0x01U, /* !< Peripheral initialized and ready for use */
79   HAL_PSSI_STATE_BUSY    = 0x02U, /* !< An internal process is ongoing           */
80   HAL_PSSI_STATE_BUSY_TX = 0x03U, /* !< Transmit process is ongoing              */
81   HAL_PSSI_STATE_BUSY_RX = 0x04U, /* !< Receive process is ongoing               */
82   HAL_PSSI_STATE_TIMEOUT = 0x05U, /* !< Timeout state                            */
83   HAL_PSSI_STATE_ERROR   = 0x06U, /* !< PSSI state error                         */
84   HAL_PSSI_STATE_ABORT   = 0x07U, /* !< PSSI process is aborted                  */
85 
86 } HAL_PSSI_StateTypeDef;
87 
88 /**
89   * @brief  PSSI handle Structure definition
90   */
91 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
92 typedef struct __PSSI_HandleTypeDef
93 #else
94 typedef struct
95 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
96 {
97   PSSI_TypeDef         *Instance;    /*!< PSSI register base address.    */
98   PSSI_InitTypeDef      Init;        /*!< PSSI Initialization Structure. */
99   uint32_t             *pBuffPtr;    /*!< PSSI Data buffer.              */
100   uint32_t              XferCount;   /*!< PSSI transfer count            */
101   uint32_t              XferSize;    /*!< PSSI  transfer size            */
102 #if defined(HAL_DMA_MODULE_ENABLED)
103   DMA_HandleTypeDef    *hdmatx;      /*!< PSSI Tx DMA Handle parameters  */
104   DMA_HandleTypeDef    *hdmarx;      /*!< PSSI Rx DMA Handle parameters  */
105 #endif /*HAL_DMA_MODULE_ENABLED*/
106 
107 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
108   void (* TxCpltCallback)(struct __PSSI_HandleTypeDef *hpssi);    /*!< PSSI transfer complete callback. */
109   void (* RxCpltCallback)(struct __PSSI_HandleTypeDef *hpssi);    /*!< PSSI transfer complete callback. */
110   void (* ErrorCallback)(struct __PSSI_HandleTypeDef *hpssi);     /*!< PSSI transfer complete callback. */
111   void (* AbortCpltCallback)(struct __PSSI_HandleTypeDef *hpssi); /*!< PSSI transfer error callback.    */
112 
113   void (* MspInitCallback)(struct __PSSI_HandleTypeDef *hpssi);   /*!< PSSI Msp Init callback.          */
114   void (* MspDeInitCallback)(struct __PSSI_HandleTypeDef *hpssi); /*!< PSSI Msp DeInit callback.        */
115 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
116 
117   HAL_LockTypeDef             Lock;                               /*!< PSSI lock.                       */
118   __IO HAL_PSSI_StateTypeDef State;                               /*!< PSSI transfer state.             */
119   __IO uint32_t               ErrorCode;                          /*!< PSSI error code.                 */
120 
121 } PSSI_HandleTypeDef;
122 
123 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
124 /**
125   * @brief  HAL PSSI Callback pointer definition
126   */
127 typedef  void (*pPSSI_CallbackTypeDef)(PSSI_HandleTypeDef *hpssi);  /*!< Pointer to a PSSI common callback function */
128 
129 /**
130   * @brief  HAL PSSI Callback ID enumeration definition
131   */
132 typedef enum
133 {
134   HAL_PSSI_TX_COMPLETE_CB_ID = 0x00U, /*!< PSSI Tx Transfer completed callback ID  */
135   HAL_PSSI_RX_COMPLETE_CB_ID = 0x01U, /*!< PSSI Rx Transfer completed callback ID  */
136   HAL_PSSI_ERROR_CB_ID       = 0x03U, /*!< PSSI Error callback ID                  */
137   HAL_PSSI_ABORT_CB_ID       = 0x04U, /*!< PSSI Abort callback ID                  */
138 
139   HAL_PSSI_MSPINIT_CB_ID     = 0x05U, /*!< PSSI Msp Init callback ID               */
140   HAL_PSSI_MSPDEINIT_CB_ID   = 0x06U  /*!< PSSI Msp DeInit callback ID             */
141 
142 } HAL_PSSI_CallbackIDTypeDef;
143 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
144 
145 /**
146   * @}
147   */
148 
149 /* Exported constants --------------------------------------------------------*/
150 /** @defgroup PSSI_Exported_Constants PSSI Exported Constants
151   * @{
152   */
153 
154 /** @defgroup PSSI_Error_Code PSSI Error Code
155   * @{
156   */
157 #define HAL_PSSI_ERROR_NONE             0x00000000U /*!< No error                */
158 #define HAL_PSSI_ERROR_NOT_SUPPORTED    0x00000001U /*!< Not supported operation */
159 #define HAL_PSSI_ERROR_UNDER_RUN        0x00000002U /*!< FIFO Under-run error    */
160 #define HAL_PSSI_ERROR_OVER_RUN         0x00000004U /*!< FIFO Over-run  error    */
161 #define HAL_PSSI_ERROR_DMA              0x00000008U /*!< Dma     error           */
162 #define HAL_PSSI_ERROR_TIMEOUT          0x00000010U /*!< Timeout error           */
163 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
164 #define HAL_PSSI_ERROR_INVALID_CALLBACK 0x00000020U /*!< Invalid callback error  */
165 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
166 
167 /**
168   * @}
169   */
170 
171 /** @defgroup PSSI_DATA_WIDTH PSSI Data Width
172   * @{
173   */
174 
175 #define HAL_PSSI_8BITS                  0x00000000U   /*!<  8 Bits  */
176 #define HAL_PSSI_16BITS                 0x00000001U   /*!< 16 Bits  */
177 #define HAL_PSSI_32BITS                 0x00000002U   /*!< 32 Bits  */
178 /**
179   * @}
180   */
181 
182 /** @defgroup PSSI_BUS_WIDTH PSSI Bus Width
183   * @{
184   */
185 
186 #define HAL_PSSI_8LINES                 0x00000000U   /*!< 8 data lines  */
187 #define HAL_PSSI_16LINES                PSSI_CR_EDM   /*!< 16 data lines */
188 /**
189   * @}
190   */
191 /** @defgroup PSSI_MODE PSSI mode
192   * @{
193   */
194 #define HAL_PSSI_UNIDIRECTIONAL         0x00000000U /*!< Uni-directional mode */
195 #define HAL_PSSI_BIDIRECTIONAL          0x00000001U /*!< Bi-directional mode  */
196 /**
197   * @}
198   */
199 
200 /** @defgroup ControlSignal_Configuration ControlSignal Configuration
201   * @{
202   */
203 #define HAL_PSSI_DE_RDY_DISABLE           (0x0U << PSSI_CR_DERDYCFG_Pos) /*!< Neither DE nor RDY are enabled */
204 #define HAL_PSSI_RDY_ENABLE               (0x1U << PSSI_CR_DERDYCFG_Pos) /*!< Only RDY enabled */
205 #define HAL_PSSI_DE_ENABLE                (0x2U << PSSI_CR_DERDYCFG_Pos) /*!< Only DE enabled */
206 #define HAL_PSSI_DE_RDY_ALT_ENABLE        (0x3U << PSSI_CR_DERDYCFG_Pos) /*!< Both RDY and DE alternate functions enabled */
207 #define HAL_PSSI_MAP_RDY_BIDIR_ENABLE     (0x4U << PSSI_CR_DERDYCFG_Pos) /*!< Bi-directional on RDY pin */
208 #define HAL_PSSI_RDY_MAP_ENABLE           (0x5U << PSSI_CR_DERDYCFG_Pos) /*!< Only RDY enabled, mapped to DE pin */
209 #define HAL_PSSI_DE_MAP_ENABLE            (0x6U << PSSI_CR_DERDYCFG_Pos) /*!< Only DE enabled, mapped to RDY pin */
210 #define HAL_PSSI_MAP_DE_BIDIR_ENABLE      (0x7U << PSSI_CR_DERDYCFG_Pos) /*!< Bi-directional on DE pin */
211 
212 /**
213   * @}
214   */
215 
216 
217 /** @defgroup Data_Enable_Polarity Data Enable Polarity
218   * @{
219   */
220 #define HAL_PSSI_DEPOL_ACTIVE_LOW         0x0U            /*!< Active Low */
221 #define HAL_PSSI_DEPOL_ACTIVE_HIGH        PSSI_CR_DEPOL   /*!< Active High */
222 /**
223   * @}
224   */
225 /** @defgroup Ready_Polarity Ready Polarity
226   * @{
227   */
228 #define HAL_PSSI_RDYPOL_ACTIVE_LOW        0x0U            /*!< Active Low */
229 #define HAL_PSSI_RDYPOL_ACTIVE_HIGH       PSSI_CR_RDYPOL  /*!< Active High */
230 /**
231   * @}
232   */
233 
234 /** @defgroup Clock_Polarity Clock Polarity
235   * @{
236   */
237 #define HAL_PSSI_FALLING_EDGE             0x0U            /*!< Fallling Edge */
238 #define HAL_PSSI_RISING_EDGE              0x1U            /*!< Rising Edge */
239 /**
240   * @}
241   */
242 
243 
244 /** @defgroup PSSI_DEFINITION PSSI definitions
245   * @{
246   */
247 
248 #define PSSI_MAX_NBYTE_SIZE         0x10000U         /* 64 KB */
249 #define PSSI_TIMEOUT_TRANSMIT       0x0000FFFFU      /*!< Timeout Value   */
250 
251 #define PSSI_CR_OUTEN_INPUT         0x00000000U      /*!< Input Mode      */
252 #define PSSI_CR_OUTEN_OUTPUT        PSSI_CR_OUTEN    /*!< Output Mode     */
253 
254 #define PSSI_CR_DMA_ENABLE          PSSI_CR_DMAEN    /*!< DMA Mode Enable */
255 #define PSSI_CR_DMA_DISABLE         (~PSSI_CR_DMAEN) /*!< DMA Mode Disable*/
256 
257 #define PSSI_CR_16BITS              PSSI_CR_EDM      /*!< 16 Lines Mode   */
258 #define PSSI_CR_8BITS               (~PSSI_CR_EDM)   /*!< 8 Lines Mode    */
259 
260 #define PSSI_FLAG_RTT1B             PSSI_SR_RTT1B    /*!< 1 Byte Fifo Flag */
261 #define PSSI_FLAG_RTT4B             PSSI_SR_RTT4B    /*!< 4 Bytes Fifo Flag*/
262 
263 
264 
265 /**
266   * @}
267   */
268 
269 /** @defgroup PSSI_Interrupts PSSI Interrupts
270   * @{
271   */
272 
273 #define PSSI_FLAG_OVR_RIS            PSSI_RIS_OVR_RIS     /*!< Overrun, Underrun errors flag */
274 #define PSSI_FLAG_MASK               PSSI_RIS_OVR_RIS_Msk /*!< Overrun, Underrun errors Mask */
275 #define PSSI_FLAG_OVR_MIS            PSSI_MIS_OVR_MIS     /*!< Overrun, Underrun masked errors flag */
276 /**
277   * @}
278   */
279 
280 
281 
282 /**
283   * @}
284   */
285 /* Exported macros ------------------------------------------------------------*/
286 /** @defgroup PSSI_Exported_Macros PSSI Exported Macros
287   * @{
288   */
289 
290 /** @brief Reset PSSI handle state
291   * @param  __HANDLE__ specifies the PSSI handle.
292   * @retval None
293   */
294 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
295 #define HAL_PSSI_RESET_HANDLE_STATE(__HANDLE__) do{                                            \
296                                                       (__HANDLE__)->State = HAL_PSSI_STATE_RESET;\
297                                                       (__HANDLE__)->MspInitCallback = NULL;       \
298                                                       (__HANDLE__)->MspDeInitCallback = NULL;     \
299                                                      }while(0)
300 #else
301 #define HAL_PSSI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_PSSI_STATE_RESET)
302 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
303 
304 
305 /**
306   * @brief  Enable the PSSI.
307   * @param  __HANDLE__ PSSI handle
308   * @retval None.
309   */
310 #define HAL_PSSI_ENABLE(__HANDLE__)        ((__HANDLE__)->Instance->CR |= PSSI_CR_ENABLE)
311 /**
312   * @brief  Disable the PSSI.
313   * @param  __HANDLE__ PSSI handle
314   * @retval None.
315   */
316 #define HAL_PSSI_DISABLE(__HANDLE__)        ((__HANDLE__)->Instance->CR &= (~PSSI_CR_ENABLE))
317 
318 /* PSSI pripheral STATUS */
319 /**
320   * @brief  Get the PSSI pending flags.
321   * @param  __HANDLE__ PSSI handle
322   * @param  __FLAG__ flag to check.
323   *          This parameter can be any combination of the following values:
324   *            @arg PSSI_FLAG_RTT1B:  FIFO is ready to transfer one byte
325   *            @arg PSSI_FLAG_RTT4B: FIFO is ready to transfer four bytes
326   * @retval The state of FLAG.
327   */
328 
329 #define HAL_PSSI_GET_STATUS(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR & (__FLAG__))
330 
331 
332 
333 /* Interrupt & Flag management */
334 /**
335   * @brief  Get the PSSI pending flags.
336   * @param  __HANDLE__ PSSI handle
337   * @param  __FLAG__ flag to check.
338   *          This parameter can be any combination of the following values:
339   *            @arg PSSI_FLAG_OVR_RIS: Data Buffer overrun/underrun error flag
340   * @retval The state of FLAG.
341   */
342 #define HAL_PSSI_GET_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->RIS & (__FLAG__))
343 
344 /**
345   * @brief  Clear the PSSI pending flags.
346   * @param  __HANDLE__ PSSI handle
347   * @param  __FLAG__ specifies the flag to clear.
348   *          This parameter can be any combination of the following values:
349   *            @arg PSSI_FLAG_OVR_RIS: Data Buffer overrun/underrun error flag
350   * @retval None
351   */
352 #define HAL_PSSI_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
353 
354 /**
355   * @brief  Enable the specified PSSI interrupts.
356   * @param  __HANDLE__ PSSI handle
357   * @param __INTERRUPT__ specifies the PSSI interrupt sources to be enabled.
358   *          This parameter can be any combination of the following values:
359   *            @arg PSSI_FLAG_OVR_RIS: Configuration error mask
360   * @retval None
361   */
362 #define HAL_PSSI_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER |= (__INTERRUPT__))
363 
364 /**
365   * @brief  Disable the specified PSSI interrupts.
366   * @param  __HANDLE__ PSSI handle
367   * @param __INTERRUPT__ specifies the PSSI interrupt sources to be disabled.
368   *          This parameter can be any combination of the following values:
369   *            @arg PSSI_IT_OVR_IE: Configuration error mask
370   * @retval None
371   */
372 #define HAL_PSSI_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER &= ~(__INTERRUPT__))
373 
374 /**
375   * @brief  Check whether the specified PSSI interrupt source is enabled or not.
376   * @param  __HANDLE__ PSSI handle
377   * @param  __INTERRUPT__ specifies the PSSI interrupt source to check.
378   *          This parameter can be one of the following values:
379   *            @arg PSSI_IT_OVR_IE: Data Buffer overrun/underrun error interrupt mask
380   * @retval The state of INTERRUPT source.
381   */
382 #define HAL_PSSI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IER & (__INTERRUPT__))
383 
384 
385 /**
386   * @brief  Check whether the PSSI Control signal is valid.
387   * @param  __CONTROL__ Control signals configuration
388   * @retval Valid or not.
389   */
390 
391 #define IS_PSSI_CONTROL_SIGNAL(__CONTROL__) (((__CONTROL__) == HAL_PSSI_DE_RDY_DISABLE        ) || \
392                                              ((__CONTROL__) == HAL_PSSI_RDY_ENABLE            ) || \
393                                              ((__CONTROL__) == HAL_PSSI_DE_ENABLE             ) || \
394                                              ((__CONTROL__) == HAL_PSSI_DE_RDY_ALT_ENABLE     ) || \
395                                              ((__CONTROL__) == HAL_PSSI_MAP_RDY_BIDIR_ENABLE  ) || \
396                                              ((__CONTROL__) == HAL_PSSI_RDY_MAP_ENABLE        ) || \
397                                              ((__CONTROL__) == HAL_PSSI_DE_MAP_ENABLE         ) || \
398                                              ((__CONTROL__) == HAL_PSSI_MAP_DE_BIDIR_ENABLE   ))
399 
400 
401 
402 /**
403   * @brief  Check whether the PSSI Bus Width is valid.
404   * @param  __BUSWIDTH__ PSSI Bush width
405   * @retval Valid or not.
406   */
407 
408 #define IS_PSSI_BUSWIDTH(__BUSWIDTH__) (((__BUSWIDTH__) == HAL_PSSI_8LINES    ) || \
409                                         ((__BUSWIDTH__) == HAL_PSSI_16LINES   ))
410 
411 /**
412 
413   * @brief  Check whether the PSSI Clock Polarity is valid.
414   * @param  __CLOCKPOL__ PSSI Clock Polarity
415   * @retval Valid or not.
416   */
417 
418 #define IS_PSSI_CLOCK_POLARITY(__CLOCKPOL__) (((__CLOCKPOL__) == HAL_PSSI_FALLING_EDGE   ) || \
419                                               ((__CLOCKPOL__) == HAL_PSSI_RISING_EDGE    ))
420 
421 
422 /**
423   * @brief  Check whether the PSSI Data Enable Polarity is valid.
424   * @param  __DEPOL__ PSSI DE Polarity
425   * @retval Valid or not.
426   */
427 
428 #define IS_PSSI_DE_POLARITY(__DEPOL__) (((__DEPOL__) == HAL_PSSI_DEPOL_ACTIVE_LOW    ) || \
429                                         ((__DEPOL__) == HAL_PSSI_DEPOL_ACTIVE_HIGH   ))
430 
431 /**
432   * @brief  Check whether the PSSI Ready Polarity is valid.
433   * @param  __RDYPOL__ PSSI RDY Polarity
434   * @retval Valid or not.
435   */
436 
437 #define IS_PSSI_RDY_POLARITY(__RDYPOL__) (((__RDYPOL__) == HAL_PSSI_RDYPOL_ACTIVE_LOW   ) || \
438                                           ((__RDYPOL__) == HAL_PSSI_RDYPOL_ACTIVE_HIGH   ))
439 
440 /**
441   * @}
442   */
443 
444 
445 /* Exported functions --------------------------------------------------------*/
446 /** @addtogroup PSSI_Exported_Functions PSSI Exported Functions
447   * @{
448   */
449 
450 /** @addtogroup PSSI_Exported_Functions_Group1 Initialization and de-initialization functions
451   * @{
452   */
453 
454 /* Initialization and de-initialization functions *******************************/
455 HAL_StatusTypeDef HAL_PSSI_Init(PSSI_HandleTypeDef *hpssi);
456 HAL_StatusTypeDef HAL_PSSI_DeInit(PSSI_HandleTypeDef *hpssi);
457 void              HAL_PSSI_MspInit(PSSI_HandleTypeDef *hpssi);
458 void              HAL_PSSI_MspDeInit(PSSI_HandleTypeDef *hpssi);
459 /* Callbacks Register/UnRegister functions  ***********************************/
460 #if (USE_HAL_PSSI_REGISTER_CALLBACKS == 1)
461 HAL_StatusTypeDef HAL_PSSI_RegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_CallbackIDTypeDef CallbackID,
462                                             pPSSI_CallbackTypeDef pCallback);
463 HAL_StatusTypeDef HAL_PSSI_UnRegisterCallback(PSSI_HandleTypeDef *hpssi, HAL_PSSI_CallbackIDTypeDef CallbackID);
464 #endif /* USE_HAL_PSSI_REGISTER_CALLBACKS */
465 
466 /**
467   * @}
468   */
469 
470 
471 /** @addtogroup PSSI_Exported_Functions_Group2 Input and Output operation functions
472   * @{
473   */
474 
475 /* IO operation functions *******************************************************/
476 HAL_StatusTypeDef HAL_PSSI_Transmit(PSSI_HandleTypeDef *hpssi, uint8_t *pData, uint32_t Size, uint32_t Timeout);
477 HAL_StatusTypeDef HAL_PSSI_Receive(PSSI_HandleTypeDef *hpssi, uint8_t *pData, uint32_t Size, uint32_t Timeout);
478 #if defined(HAL_DMA_MODULE_ENABLED)
479 HAL_StatusTypeDef HAL_PSSI_Transmit_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pData, uint32_t Size);
480 HAL_StatusTypeDef HAL_PSSI_Receive_DMA(PSSI_HandleTypeDef *hpssi, uint32_t *pData, uint32_t Size);
481 HAL_StatusTypeDef HAL_PSSI_Abort_DMA(PSSI_HandleTypeDef *hpssi);
482 #endif /*HAL_DMA_MODULE_ENABLED*/
483 
484 /**
485   * @}
486   */
487 
488 /** @addtogroup PSSI_Exported_Functions_Group3 Peripheral State and Error functions
489   * @{
490   */
491 
492 /* Peripheral State functions ***************************************************/
493 HAL_PSSI_StateTypeDef HAL_PSSI_GetState(const PSSI_HandleTypeDef *hpssi);
494 uint32_t              HAL_PSSI_GetError(const PSSI_HandleTypeDef *hpssi);
495 
496 /**
497   * @}
498   */
499 
500 /** @addtogroup PSSI_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
501   * @{
502   */
503 
504 void HAL_PSSI_IRQHandler(PSSI_HandleTypeDef *hpssi);
505 void HAL_PSSI_TxCpltCallback(PSSI_HandleTypeDef *hpssi);
506 void HAL_PSSI_RxCpltCallback(PSSI_HandleTypeDef *hpssi);
507 void HAL_PSSI_ErrorCallback(PSSI_HandleTypeDef *hpssi);
508 void HAL_PSSI_AbortCpltCallback(PSSI_HandleTypeDef *hpssi);
509 
510 /**
511   * @}
512   */
513 
514 
515 
516 /**
517   * @}
518   */
519 
520 /* Private constants ---------------------------------------------------------*/
521 
522 
523 /* Private macros ------------------------------------------------------------*/
524 
525 
526 /**
527   * @}
528   */
529 #endif /* PSSI */
530 
531 /**
532   * @}
533   */
534 
535 
536 #ifdef __cplusplus
537 }
538 #endif
539 
540 #endif /* STM32H7xx_HAL_PSSI_H */
541