Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: VL53L0X
Fork of BSP_B-L475E-IOT01 by
stm32l475e_iot01_gyro.c
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>© 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****/
Generated on Tue Jul 12 2022 15:06:31 by
1.7.2
