mbed library sources

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Fri Nov 07 15:45:07 2014 +0000
Revision:
394:83f921546702
Parent:
targets/cmsis/TARGET_STM/TARGET_NUCLEO_L152RE/stm32l1xx_hal_spi_ex.c@354:e67efb2aab0e
Synchronized with git revision aab52cb7ec5a665869e507dd988bbfd55b7e087e

Full URL: https://github.com/mbedmicro/mbed/commit/aab52cb7ec5a665869e507dd988bbfd55b7e087e/

Tests: Fix cpputest testrunner

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 354:e67efb2aab0e 1 /**
mbed_official 354:e67efb2aab0e 2 ******************************************************************************
mbed_official 354:e67efb2aab0e 3 * @file stm32l1xx_hal_spi_ex.c
mbed_official 354:e67efb2aab0e 4 * @author MCD Application Team
mbed_official 354:e67efb2aab0e 5 * @version V1.0.0
mbed_official 354:e67efb2aab0e 6 * @date 5-September-2014
mbed_official 354:e67efb2aab0e 7 * @brief Extended SPI HAL module driver.
mbed_official 354:e67efb2aab0e 8 *
mbed_official 354:e67efb2aab0e 9 * This file provides firmware functions to manage the following
mbed_official 354:e67efb2aab0e 10 * functionalities SPI extension peripheral:
mbed_official 354:e67efb2aab0e 11 * + Extended Peripheral Control functions
mbed_official 354:e67efb2aab0e 12 *
mbed_official 354:e67efb2aab0e 13 ******************************************************************************
mbed_official 354:e67efb2aab0e 14 * @attention
mbed_official 354:e67efb2aab0e 15 *
mbed_official 354:e67efb2aab0e 16 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 354:e67efb2aab0e 17 *
mbed_official 354:e67efb2aab0e 18 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 354:e67efb2aab0e 19 * are permitted provided that the following conditions are met:
mbed_official 354:e67efb2aab0e 20 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 354:e67efb2aab0e 21 * this list of conditions and the following disclaimer.
mbed_official 354:e67efb2aab0e 22 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 354:e67efb2aab0e 23 * this list of conditions and the following disclaimer in the documentation
mbed_official 354:e67efb2aab0e 24 * and/or other materials provided with the distribution.
mbed_official 354:e67efb2aab0e 25 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 354:e67efb2aab0e 26 * may be used to endorse or promote products derived from this software
mbed_official 354:e67efb2aab0e 27 * without specific prior written permission.
mbed_official 354:e67efb2aab0e 28 *
mbed_official 354:e67efb2aab0e 29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 354:e67efb2aab0e 30 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 354:e67efb2aab0e 31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 354:e67efb2aab0e 32 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 354:e67efb2aab0e 33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 354:e67efb2aab0e 34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 354:e67efb2aab0e 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 354:e67efb2aab0e 36 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 354:e67efb2aab0e 37 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 354:e67efb2aab0e 38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 354:e67efb2aab0e 39 *
mbed_official 354:e67efb2aab0e 40 ******************************************************************************
mbed_official 354:e67efb2aab0e 41 */
mbed_official 354:e67efb2aab0e 42
mbed_official 354:e67efb2aab0e 43 /* Includes ------------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 44 #include "stm32l1xx_hal.h"
mbed_official 354:e67efb2aab0e 45
mbed_official 354:e67efb2aab0e 46 /** @addtogroup STM32L1xx_HAL_Driver
mbed_official 354:e67efb2aab0e 47 * @{
mbed_official 354:e67efb2aab0e 48 */
mbed_official 354:e67efb2aab0e 49
mbed_official 354:e67efb2aab0e 50 /** @addtogroup SPI
mbed_official 354:e67efb2aab0e 51 * @{
mbed_official 354:e67efb2aab0e 52 */
mbed_official 354:e67efb2aab0e 53 #ifdef HAL_SPI_MODULE_ENABLED
mbed_official 354:e67efb2aab0e 54
mbed_official 354:e67efb2aab0e 55 /* Private typedef -----------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 56 /* Private define ------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 57 /* Private macro -------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 58 /* Private variables ---------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 59 /* Private function prototypes -----------------------------------------------*/
mbed_official 354:e67efb2aab0e 60 /* Private functions ---------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 61
mbed_official 354:e67efb2aab0e 62 /** @addtogroup SPI_Exported_Functions
mbed_official 354:e67efb2aab0e 63 * @{
mbed_official 354:e67efb2aab0e 64 */
mbed_official 354:e67efb2aab0e 65
mbed_official 354:e67efb2aab0e 66 /** @addtogroup SPI_Exported_Functions_Group1
mbed_official 354:e67efb2aab0e 67 *
mbed_official 354:e67efb2aab0e 68 * @{
mbed_official 354:e67efb2aab0e 69 */
mbed_official 354:e67efb2aab0e 70
mbed_official 354:e67efb2aab0e 71 /**
mbed_official 354:e67efb2aab0e 72 * @brief Initializes the SPI according to the specified parameters
mbed_official 354:e67efb2aab0e 73 * in the SPI_InitTypeDef and create the associated handle.
mbed_official 354:e67efb2aab0e 74 * @param hspi: pointer to a SPI_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 75 * the configuration information for SPI module.
mbed_official 354:e67efb2aab0e 76 * @retval HAL status
mbed_official 354:e67efb2aab0e 77 */
mbed_official 354:e67efb2aab0e 78 HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
mbed_official 354:e67efb2aab0e 79 {
mbed_official 354:e67efb2aab0e 80 /* Check the SPI handle allocation */
mbed_official 354:e67efb2aab0e 81 if(hspi == HAL_NULL)
mbed_official 354:e67efb2aab0e 82 {
mbed_official 354:e67efb2aab0e 83 return HAL_ERROR;
mbed_official 354:e67efb2aab0e 84 }
mbed_official 354:e67efb2aab0e 85
mbed_official 354:e67efb2aab0e 86 /* Check the parameters */
mbed_official 354:e67efb2aab0e 87 assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance));
mbed_official 354:e67efb2aab0e 88 assert_param(IS_SPI_MODE(hspi->Init.Mode));
mbed_official 354:e67efb2aab0e 89 assert_param(IS_SPI_DIRECTION_MODE(hspi->Init.Direction));
mbed_official 354:e67efb2aab0e 90 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize));
mbed_official 354:e67efb2aab0e 91 assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity));
mbed_official 354:e67efb2aab0e 92 assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase));
mbed_official 354:e67efb2aab0e 93 assert_param(IS_SPI_NSS(hspi->Init.NSS));
mbed_official 354:e67efb2aab0e 94 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler));
mbed_official 354:e67efb2aab0e 95 assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit));
mbed_official 354:e67efb2aab0e 96 assert_param(IS_SPI_TIMODE(hspi->Init.TIMode));
mbed_official 354:e67efb2aab0e 97 assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation));
mbed_official 354:e67efb2aab0e 98 assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial));
mbed_official 354:e67efb2aab0e 99
mbed_official 354:e67efb2aab0e 100 if(hspi->State == HAL_SPI_STATE_RESET)
mbed_official 354:e67efb2aab0e 101 {
mbed_official 354:e67efb2aab0e 102 /* Init the low level hardware : GPIO, CLOCK, NVIC... */
mbed_official 354:e67efb2aab0e 103 HAL_SPI_MspInit(hspi);
mbed_official 354:e67efb2aab0e 104 }
mbed_official 354:e67efb2aab0e 105
mbed_official 354:e67efb2aab0e 106 hspi->State = HAL_SPI_STATE_BUSY;
mbed_official 354:e67efb2aab0e 107
mbed_official 354:e67efb2aab0e 108 /* Disble the selected SPI peripheral */
mbed_official 354:e67efb2aab0e 109 __HAL_SPI_DISABLE(hspi);
mbed_official 354:e67efb2aab0e 110
mbed_official 354:e67efb2aab0e 111 /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/
mbed_official 354:e67efb2aab0e 112 /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management,
mbed_official 354:e67efb2aab0e 113 Communication speed, First bit and CRC calculation state */
mbed_official 354:e67efb2aab0e 114 hspi->Instance->CR1 = (hspi->Init.Mode | hspi->Init.Direction | hspi->Init.DataSize |
mbed_official 354:e67efb2aab0e 115 hspi->Init.CLKPolarity | hspi->Init.CLKPhase | (hspi->Init.NSS & SPI_CR1_SSM) |
mbed_official 354:e67efb2aab0e 116 hspi->Init.BaudRatePrescaler | hspi->Init.FirstBit | hspi->Init.CRCCalculation);
mbed_official 354:e67efb2aab0e 117
mbed_official 354:e67efb2aab0e 118 /* Configure : NSS management */
mbed_official 354:e67efb2aab0e 119 hspi->Instance->CR2 = (((hspi->Init.NSS >> 16) & SPI_CR2_SSOE) | hspi->Init.TIMode);
mbed_official 354:e67efb2aab0e 120
mbed_official 354:e67efb2aab0e 121 /*---------------------------- SPIx CRCPOLY Configuration ------------------*/
mbed_official 354:e67efb2aab0e 122 /* Configure : CRC Polynomial */
mbed_official 354:e67efb2aab0e 123 hspi->Instance->CRCPR = hspi->Init.CRCPolynomial;
mbed_official 354:e67efb2aab0e 124
mbed_official 354:e67efb2aab0e 125 #if defined (STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE)
mbed_official 354:e67efb2aab0e 126 /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */
mbed_official 354:e67efb2aab0e 127 CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD);
mbed_official 354:e67efb2aab0e 128 #endif
mbed_official 354:e67efb2aab0e 129
mbed_official 354:e67efb2aab0e 130 hspi->ErrorCode = HAL_SPI_ERROR_NONE;
mbed_official 354:e67efb2aab0e 131 hspi->State = HAL_SPI_STATE_READY;
mbed_official 354:e67efb2aab0e 132
mbed_official 354:e67efb2aab0e 133 return HAL_OK;
mbed_official 354:e67efb2aab0e 134 }
mbed_official 354:e67efb2aab0e 135
mbed_official 354:e67efb2aab0e 136 /**
mbed_official 354:e67efb2aab0e 137 * @}
mbed_official 354:e67efb2aab0e 138 */
mbed_official 354:e67efb2aab0e 139
mbed_official 354:e67efb2aab0e 140 /**
mbed_official 354:e67efb2aab0e 141 * @}
mbed_official 354:e67efb2aab0e 142 */
mbed_official 354:e67efb2aab0e 143
mbed_official 354:e67efb2aab0e 144 #endif /* HAL_SPI_MODULE_ENABLED */
mbed_official 354:e67efb2aab0e 145 /**
mbed_official 354:e67efb2aab0e 146 * @}
mbed_official 354:e67efb2aab0e 147 */
mbed_official 354:e67efb2aab0e 148
mbed_official 354:e67efb2aab0e 149 /**
mbed_official 354:e67efb2aab0e 150 * @}
mbed_official 354:e67efb2aab0e 151 */
mbed_official 354:e67efb2aab0e 152
mbed_official 354:e67efb2aab0e 153 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/