Farnell-Element14 Bologna IOT Team / BSP_B-L475E-IOT01

Dependencies:   VL53L0X

Fork of BSP_B-L475E-IOT01 by ST

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers stm32l475e_iot01_gyro.c Source File

stm32l475e_iot01_gyro.c

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l475e_iot01_gyro.c
00004   * @author  MCD Application Team
00005   * @brief   This file provides a set of functions needed to manage the gyroscope sensor
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V.
00010   * All rights reserved.</center></h2>
00011   *
00012   * Redistribution and use in source and binary forms, with or without
00013   * modification, are permitted, provided that the following conditions are met:
00014   *
00015   * 1. Redistribution of source code must retain the above copyright notice,
00016   *    this list of conditions and the following disclaimer.
00017   * 2. Redistributions in binary form must reproduce the above copyright notice,
00018   *    this list of conditions and the following disclaimer in the documentation
00019   *    and/or other materials provided with the distribution.
00020   * 3. Neither the name of STMicroelectronics nor the names of other
00021   *    contributors to this software may be used to endorse or promote products
00022   *    derived from this software without specific written permission.
00023   * 4. This software, including modifications and/or derivative works of this
00024   *    software, must execute solely and exclusively on microcontroller or
00025   *    microprocessor devices manufactured by or for STMicroelectronics.
00026   * 5. Redistribution and use of this software other than as permitted under
00027   *    this license is void and will automatically terminate your rights under
00028   *    this license.
00029   *
00030   * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
00031   * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
00032   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
00033   * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
00034   * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
00035   * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00036   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00037   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
00038   * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00039   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00040   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
00041   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00042   *
00043   ******************************************************************************
00044   */
00045 
00046 /* Includes ------------------------------------------------------------------*/
00047 #include "stm32l475e_iot01_gyro.h"
00048 
00049 /** @addtogroup BSP
00050   * @{
00051   */
00052 
00053 /** @addtogroup STM32L475E_IOT01
00054   * @{
00055   */
00056       
00057 /** @defgroup STM32L475E_IOT01_GYROSCOPE GYROSCOPE
00058   * @{
00059   */ 
00060 
00061 /** @defgroup STM32L475E_IOT01_GYROSCOPE_Private_Variables GYROSCOPE Private Variables
00062   * @{
00063   */
00064 static GYRO_DrvTypeDef *GyroscopeDrv;
00065 
00066 /**
00067   * @}
00068   */
00069 
00070 
00071 /** @defgroup STM32L475E_IOT01_GYROSCOPE_Private_Functions GYROSCOPE Private Functions
00072   * @{
00073   */ 
00074 /**
00075   * @brief  Initialize Gyroscope.
00076   * @retval GYRO_OK or GYRO_ERROR
00077   */
00078 uint8_t BSP_GYRO_Init(void)
00079 {  
00080   uint8_t ret = GYRO_ERROR;
00081   uint16_t ctrl = 0x0000;
00082   GYRO_InitTypeDef LSM6DSL_InitStructure;
00083 
00084   if(Lsm6dslGyroDrv.ReadID() != LSM6DSL_ACC_GYRO_WHO_AM_I)
00085   {
00086     ret = GYRO_ERROR;
00087   }
00088   else
00089   {
00090     /* Initialize the gyroscope driver structure */
00091     GyroscopeDrv = &Lsm6dslGyroDrv;
00092 
00093     /* Configure Mems : data rate, power mode, full scale and axes */
00094     LSM6DSL_InitStructure.Power_Mode = 0;
00095     LSM6DSL_InitStructure.Output_DataRate = LSM6DSL_ODR_52Hz;
00096     LSM6DSL_InitStructure.Axes_Enable = 0;
00097     LSM6DSL_InitStructure.Band_Width = 0;
00098     LSM6DSL_InitStructure.BlockData_Update = LSM6DSL_BDU_BLOCK_UPDATE;
00099     LSM6DSL_InitStructure.Endianness = 0;
00100     LSM6DSL_InitStructure.Full_Scale = LSM6DSL_GYRO_FS_2000; 
00101 
00102     /* Configure MEMS: data rate, full scale  */
00103     ctrl = (LSM6DSL_InitStructure.Full_Scale | LSM6DSL_InitStructure.Output_DataRate);
00104 
00105     /* Configure MEMS: BDU and Auto-increment for multi read/write */
00106     ctrl |= ((LSM6DSL_InitStructure.BlockData_Update | LSM6DSL_ACC_GYRO_IF_INC_ENABLED) << 8);
00107 
00108     /* Initialize component */
00109     GyroscopeDrv->Init(ctrl);
00110     
00111     ret = GYRO_OK;
00112   }
00113   
00114   return ret;
00115 }
00116 
00117 
00118 /**
00119   * @brief  DeInitialize Gyroscope.
00120   */
00121 void BSP_GYRO_DeInit(void)
00122 {
00123   /* DeInitialize the Gyroscope IO interfaces */
00124   if(GyroscopeDrv != NULL)
00125   {
00126     if(GyroscopeDrv->DeInit!= NULL)
00127     {
00128       GyroscopeDrv->DeInit();
00129     }
00130   }
00131 }
00132 
00133 
00134 /**
00135   * @brief  Set/Unset Gyroscope in low power mode.
00136   * @param  status 0 means disable Low Power Mode, otherwise Low Power Mode is enabled
00137   */
00138 void BSP_GYRO_LowPower(uint16_t status)
00139 {
00140   /* Set/Unset component in low-power mode */
00141   if(GyroscopeDrv != NULL)
00142   {
00143     if(GyroscopeDrv->LowPower!= NULL)
00144     {
00145       GyroscopeDrv->LowPower(status);
00146     }
00147   }
00148 }
00149 
00150 /**
00151   * @brief  Get XYZ angular acceleration from the Gyroscope.
00152   * @param  pfData: pointer on floating array         
00153   */
00154 void BSP_GYRO_GetXYZ(float* pfData)
00155 {
00156   if(GyroscopeDrv != NULL)
00157   {
00158     if(GyroscopeDrv->GetXYZ!= NULL)
00159     {
00160       GyroscopeDrv->GetXYZ(pfData);
00161     }
00162   }
00163 }
00164 
00165 /**
00166   * @}
00167   */
00168 
00169 /**
00170   * @}
00171   */
00172 
00173 /**
00174   * @}
00175   */
00176 
00177 /**
00178   * @}
00179   */
00180 
00181 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/