1 /**
2   ******************************************************************************
3   * @file    stm32g0xx_hal_spi_ex.c
4   * @author  MCD Application Team
5   * @brief   Extended SPI HAL module driver.
6   *          This file provides firmware functions to manage the following
7   *          SPI peripheral extended functionalities :
8   *           + IO operation functions
9   *
10   ******************************************************************************
11   * @attention
12   *
13   * Copyright (c) 2018 STMicroelectronics.
14   * All rights reserved.
15   *
16   * This software is licensed under terms that can be found in the LICENSE file
17   * in the root directory of this software component.
18   * If no LICENSE file comes with this software, it is provided AS-IS.
19   *
20   ******************************************************************************
21   */
22 
23 /* Includes ------------------------------------------------------------------*/
24 #include "stm32g0xx_hal.h"
25 
26 /** @addtogroup STM32G0xx_HAL_Driver
27   * @{
28   */
29 
30 /** @defgroup SPIEx SPIEx
31   * @brief SPI Extended HAL module driver
32   * @{
33   */
34 #ifdef HAL_SPI_MODULE_ENABLED
35 
36 /* Private typedef -----------------------------------------------------------*/
37 /* Private defines -----------------------------------------------------------*/
38 /** @defgroup SPIEx_Private_Constants SPIEx Private Constants
39   * @{
40   */
41 #define SPI_FIFO_SIZE       4UL
42 /**
43   * @}
44   */
45 
46 /* Private macros ------------------------------------------------------------*/
47 /* Private variables ---------------------------------------------------------*/
48 /* Private function prototypes -----------------------------------------------*/
49 /* Exported functions --------------------------------------------------------*/
50 
51 /** @defgroup SPIEx_Exported_Functions SPIEx Exported Functions
52   * @{
53   */
54 
55 /** @defgroup SPIEx_Exported_Functions_Group1 IO operation functions
56   *  @brief   Data transfers functions
57   *
58 @verbatim
59   ==============================================================================
60                       ##### IO operation functions #####
61  ===============================================================================
62  [..]
63     This subsection provides a set of extended functions to manage the SPI
64     data transfers.
65 
66     (#) Rx data flush function:
67         (++) HAL_SPIEx_FlushRxFifo()
68 
69 @endverbatim
70   * @{
71   */
72 
73 /**
74   * @brief  Flush the RX fifo.
75   * @param  hspi pointer to a SPI_HandleTypeDef structure that contains
76   *               the configuration information for the specified SPI module.
77   * @retval HAL status
78   */
HAL_SPIEx_FlushRxFifo(SPI_HandleTypeDef * hspi)79 HAL_StatusTypeDef HAL_SPIEx_FlushRxFifo(SPI_HandleTypeDef *hspi)
80 {
81   __IO uint32_t tmpreg;
82   uint8_t  count = 0U;
83   while ((hspi->Instance->SR & SPI_FLAG_FRLVL) !=  SPI_FRLVL_EMPTY)
84   {
85     count++;
86     tmpreg = hspi->Instance->DR;
87     UNUSED(tmpreg); /* To avoid GCC warning */
88     if (count == SPI_FIFO_SIZE)
89     {
90       return HAL_TIMEOUT;
91     }
92   }
93   return HAL_OK;
94 }
95 
96 /**
97   * @}
98   */
99 
100 /**
101   * @}
102   */
103 
104 #endif /* HAL_SPI_MODULE_ENABLED */
105 
106 /**
107   * @}
108   */
109 
110 /**
111   * @}
112   */
113