B-L475E-IOT01 BSP User Manual: stm32l475e_iot01_accelero.c Source File

B-L475E-IOT01 BSP Driver

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