113 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * @file    stm32f7xx_hal_spi_ex.c
 | |
|   * @author  MCD Application Team
 | |
|   * @brief   Extended SPI HAL module driver.
 | |
|   *          This file provides firmware functions to manage the following
 | |
|   *          SPI peripheral extended functionalities :
 | |
|   *           + IO operation functions
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * Copyright (c) 2017 STMicroelectronics.
 | |
|   * All rights reserved.
 | |
|   *
 | |
|   * This software is licensed under terms that can be found in the LICENSE file
 | |
|   * in the root directory of this software component.
 | |
|   * If no LICENSE file comes with this software, it is provided AS-IS.
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| 
 | |
| /* Includes ------------------------------------------------------------------*/
 | |
| #include "stm32f7xx_hal.h"
 | |
| 
 | |
| /** @addtogroup STM32F7xx_HAL_Driver
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @defgroup SPIEx SPIEx
 | |
|   * @brief SPI Extended HAL module driver
 | |
|   * @{
 | |
|   */
 | |
| #ifdef HAL_SPI_MODULE_ENABLED
 | |
| 
 | |
| /* Private typedef -----------------------------------------------------------*/
 | |
| /* Private defines -----------------------------------------------------------*/
 | |
| /** @defgroup SPIEx_Private_Constants SPIEx Private Constants
 | |
|   * @{
 | |
|   */
 | |
| #define SPI_FIFO_SIZE       4UL
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /* Private macros ------------------------------------------------------------*/
 | |
| /* Private variables ---------------------------------------------------------*/
 | |
| /* Private function prototypes -----------------------------------------------*/
 | |
| /* Exported functions --------------------------------------------------------*/
 | |
| 
 | |
| /** @defgroup SPIEx_Exported_Functions SPIEx Exported Functions
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @defgroup SPIEx_Exported_Functions_Group1 IO operation functions
 | |
|   *  @brief   Data transfers functions
 | |
|   *
 | |
| @verbatim
 | |
|   ==============================================================================
 | |
|                       ##### IO operation functions #####
 | |
|  ===============================================================================
 | |
|  [..]
 | |
|     This subsection provides a set of extended functions to manage the SPI
 | |
|     data transfers.
 | |
| 
 | |
|     (#) Rx data flush function:
 | |
|         (++) HAL_SPIEx_FlushRxFifo()
 | |
| 
 | |
| @endverbatim
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @brief  Flush the RX fifo.
 | |
|   * @param  hspi pointer to a SPI_HandleTypeDef structure that contains
 | |
|   *               the configuration information for the specified SPI module.
 | |
|   * @retval HAL status
 | |
|   */
 | |
| HAL_StatusTypeDef HAL_SPIEx_FlushRxFifo(SPI_HandleTypeDef *hspi)
 | |
| {
 | |
|   __IO uint32_t tmpreg;
 | |
|   uint8_t  count = 0U;
 | |
|   while ((hspi->Instance->SR & SPI_FLAG_FRLVL) !=  SPI_FRLVL_EMPTY)
 | |
|   {
 | |
|     count++;
 | |
|     tmpreg = hspi->Instance->DR;
 | |
|     UNUSED(tmpreg); /* To avoid GCC warning */
 | |
|     if (count == SPI_FIFO_SIZE)
 | |
|     {
 | |
|       return HAL_TIMEOUT;
 | |
|     }
 | |
|   }
 | |
|   return HAL_OK;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| #endif /* HAL_SPI_MODULE_ENABLED */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 |