mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
394:83f921546702
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

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****/