ble

Dependencies:   HC_SR04_Ultrasonic_Library Servo mbed

Fork of FIP_REV1 by Robotique FIP

Committer:
julientiron
Date:
Thu Jul 09 13:33:36 2015 +0000
Revision:
4:69a35a56ac48
Parent:
1:bdbf36f8408d
BLE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
julientiron 1:bdbf36f8408d 1 /**
julientiron 1:bdbf36f8408d 2 ******************************************************************************
julientiron 1:bdbf36f8408d 3 * @file x_nucleo_iks01a1_imu_6axes.c
julientiron 1:bdbf36f8408d 4 * @author MEMS Application Team
julientiron 1:bdbf36f8408d 5 * @version V1.0.0
julientiron 1:bdbf36f8408d 6 * @date 30-July-2014
julientiron 1:bdbf36f8408d 7 * @brief This file provides a set of functions needed to manage the lsm6ds0 sensor.
julientiron 1:bdbf36f8408d 8 ******************************************************************************
julientiron 1:bdbf36f8408d 9 * @attention
julientiron 1:bdbf36f8408d 10 *
julientiron 1:bdbf36f8408d 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
julientiron 1:bdbf36f8408d 12 *
julientiron 1:bdbf36f8408d 13 * Redistribution and use in source and binary forms, with or without modification,
julientiron 1:bdbf36f8408d 14 * are permitted provided that the following conditions are met:
julientiron 1:bdbf36f8408d 15 * 1. Redistributions of source code must retain the above copyright notice,
julientiron 1:bdbf36f8408d 16 * this list of conditions and the following disclaimer.
julientiron 1:bdbf36f8408d 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
julientiron 1:bdbf36f8408d 18 * this list of conditions and the following disclaimer in the documentation
julientiron 1:bdbf36f8408d 19 * and/or other materials provided with the distribution.
julientiron 1:bdbf36f8408d 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
julientiron 1:bdbf36f8408d 21 * may be used to endorse or promote products derived from this software
julientiron 1:bdbf36f8408d 22 * without specific prior written permission.
julientiron 1:bdbf36f8408d 23 *
julientiron 1:bdbf36f8408d 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
julientiron 1:bdbf36f8408d 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
julientiron 1:bdbf36f8408d 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
julientiron 1:bdbf36f8408d 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
julientiron 1:bdbf36f8408d 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
julientiron 1:bdbf36f8408d 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
julientiron 1:bdbf36f8408d 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
julientiron 1:bdbf36f8408d 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
julientiron 1:bdbf36f8408d 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
julientiron 1:bdbf36f8408d 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
julientiron 1:bdbf36f8408d 34 *
julientiron 1:bdbf36f8408d 35 ******************************************************************************
julientiron 1:bdbf36f8408d 36 */
julientiron 1:bdbf36f8408d 37 /* Includes ------------------------------------------------------------------*/
julientiron 1:bdbf36f8408d 38 #include "x_nucleo_iks01a1_imu_6axes.h"
julientiron 1:bdbf36f8408d 39 #include "stdio.h"
julientiron 1:bdbf36f8408d 40
julientiron 1:bdbf36f8408d 41 /** @addtogroup BSP
julientiron 1:bdbf36f8408d 42 * @{
julientiron 1:bdbf36f8408d 43 */
julientiron 1:bdbf36f8408d 44
julientiron 1:bdbf36f8408d 45 /** @addtogroup X_NUCLEO_IKS01A1
julientiron 1:bdbf36f8408d 46 * @{
julientiron 1:bdbf36f8408d 47 */
julientiron 1:bdbf36f8408d 48
julientiron 1:bdbf36f8408d 49 /** @addtogroup X_NUCLEO_IKS01A1_IMU_6AXES
julientiron 1:bdbf36f8408d 50 * @{
julientiron 1:bdbf36f8408d 51 */
julientiron 1:bdbf36f8408d 52
julientiron 1:bdbf36f8408d 53
julientiron 1:bdbf36f8408d 54 /** @defgroup X_NUCLEO_IKS01A1_IMU_6AXES_Private_TypesDefinitions
julientiron 1:bdbf36f8408d 55 * @{
julientiron 1:bdbf36f8408d 56 */
julientiron 1:bdbf36f8408d 57
julientiron 1:bdbf36f8408d 58 /**
julientiron 1:bdbf36f8408d 59 * @}
julientiron 1:bdbf36f8408d 60 */
julientiron 1:bdbf36f8408d 61
julientiron 1:bdbf36f8408d 62 /** @defgroup X_NUCLEO_IKS01A1_IMU_6AXES_Private_Defines
julientiron 1:bdbf36f8408d 63 * @{
julientiron 1:bdbf36f8408d 64 */
julientiron 1:bdbf36f8408d 65
julientiron 1:bdbf36f8408d 66 /**
julientiron 1:bdbf36f8408d 67 * @}
julientiron 1:bdbf36f8408d 68 */
julientiron 1:bdbf36f8408d 69
julientiron 1:bdbf36f8408d 70 /** @defgroup X_NUCLEO_IKS01A1_IMU_6AXES_Private_Macros
julientiron 1:bdbf36f8408d 71 * @{
julientiron 1:bdbf36f8408d 72 */
julientiron 1:bdbf36f8408d 73
julientiron 1:bdbf36f8408d 74 /**
julientiron 1:bdbf36f8408d 75 * @}
julientiron 1:bdbf36f8408d 76 */
julientiron 1:bdbf36f8408d 77
julientiron 1:bdbf36f8408d 78 /** @defgroup X_NUCLEO_IKS01A1_IMU_6AXES_Private_Variables
julientiron 1:bdbf36f8408d 79 * @{
julientiron 1:bdbf36f8408d 80 */
julientiron 1:bdbf36f8408d 81 static IMU_6AXES_DrvTypeDef *Imu6AxesDrv;
julientiron 1:bdbf36f8408d 82 static uint8_t Imu6AxesInitialized = 0;
julientiron 1:bdbf36f8408d 83
julientiron 1:bdbf36f8408d 84 /**
julientiron 1:bdbf36f8408d 85 * @}
julientiron 1:bdbf36f8408d 86 */
julientiron 1:bdbf36f8408d 87
julientiron 1:bdbf36f8408d 88 /** @defgroup X_NUCLEO_IKS01A1_IMU_6AXES_Private_FunctionPrototypes
julientiron 1:bdbf36f8408d 89 * @{
julientiron 1:bdbf36f8408d 90 */
julientiron 1:bdbf36f8408d 91
julientiron 1:bdbf36f8408d 92 /**
julientiron 1:bdbf36f8408d 93 * @}
julientiron 1:bdbf36f8408d 94 */
julientiron 1:bdbf36f8408d 95
julientiron 1:bdbf36f8408d 96 /** @defgroup X_NUCLEO_IKS01A1_IMU_6AXES_Private_Functions
julientiron 1:bdbf36f8408d 97 * @{
julientiron 1:bdbf36f8408d 98 */
julientiron 1:bdbf36f8408d 99
julientiron 1:bdbf36f8408d 100 /**
julientiron 1:bdbf36f8408d 101 * @brief Initialization 6 axes sensor.
julientiron 1:bdbf36f8408d 102 * @param None
julientiron 1:bdbf36f8408d 103 * @retval IMU_6AXES_OK if no problem during initialization
julientiron 1:bdbf36f8408d 104 */
julientiron 1:bdbf36f8408d 105 IMU_6AXES_StatusTypeDef BSP_IMU_6AXES_Init(void)
julientiron 1:bdbf36f8408d 106 {
julientiron 1:bdbf36f8408d 107 IMU_6AXES_StatusTypeDef ret = IMU_6AXES_ERROR;
julientiron 1:bdbf36f8408d 108 IMU_6AXES_InitTypeDef LSM6DS0_InitStructure;
julientiron 1:bdbf36f8408d 109
julientiron 1:bdbf36f8408d 110 /* Initialize the six axes driver structure */
julientiron 1:bdbf36f8408d 111 Imu6AxesDrv = &LSM6DS0Drv;
julientiron 1:bdbf36f8408d 112
julientiron 1:bdbf36f8408d 113 /* Configure sensor */
julientiron 1:bdbf36f8408d 114 LSM6DS0_InitStructure.G_FullScale = LSM6DS0_G_FS_2000;
julientiron 1:bdbf36f8408d 115 LSM6DS0_InitStructure.G_OutputDataRate = LSM6DS0_G_ODR_119HZ;
julientiron 1:bdbf36f8408d 116 LSM6DS0_InitStructure.G_X_Axis = LSM6DS0_G_XEN_ENABLE;
julientiron 1:bdbf36f8408d 117 LSM6DS0_InitStructure.G_Y_Axis = LSM6DS0_G_YEN_ENABLE;
julientiron 1:bdbf36f8408d 118 LSM6DS0_InitStructure.G_Z_Axis = LSM6DS0_G_ZEN_ENABLE;
julientiron 1:bdbf36f8408d 119
julientiron 1:bdbf36f8408d 120 LSM6DS0_InitStructure.X_FullScale = LSM6DS0_XL_FS_2G;
julientiron 1:bdbf36f8408d 121 LSM6DS0_InitStructure.X_OutputDataRate = LSM6DS0_XL_ODR_119HZ;
julientiron 1:bdbf36f8408d 122 LSM6DS0_InitStructure.X_X_Axis = LSM6DS0_XL_XEN_ENABLE;
julientiron 1:bdbf36f8408d 123 LSM6DS0_InitStructure.X_Y_Axis = LSM6DS0_XL_YEN_ENABLE;
julientiron 1:bdbf36f8408d 124 LSM6DS0_InitStructure.X_Z_Axis = LSM6DS0_XL_ZEN_ENABLE;
julientiron 1:bdbf36f8408d 125
julientiron 1:bdbf36f8408d 126 /* six axes sensor init */
julientiron 1:bdbf36f8408d 127 Imu6AxesDrv->Init(&LSM6DS0_InitStructure);
julientiron 1:bdbf36f8408d 128
julientiron 1:bdbf36f8408d 129 if(Imu6AxesDrv->Read_XG_ID() == I_AM_LSM6DS0_XG)
julientiron 1:bdbf36f8408d 130 {
julientiron 1:bdbf36f8408d 131 Imu6AxesInitialized = 1;
julientiron 1:bdbf36f8408d 132 ret = IMU_6AXES_OK;
julientiron 1:bdbf36f8408d 133 }
julientiron 1:bdbf36f8408d 134
julientiron 1:bdbf36f8408d 135 return ret;
julientiron 1:bdbf36f8408d 136 }
julientiron 1:bdbf36f8408d 137
julientiron 1:bdbf36f8408d 138
julientiron 1:bdbf36f8408d 139 uint8_t BSP_IMU_6AXES_isInitialized(void)
julientiron 1:bdbf36f8408d 140 {
julientiron 1:bdbf36f8408d 141 return Imu6AxesInitialized;
julientiron 1:bdbf36f8408d 142 }
julientiron 1:bdbf36f8408d 143
julientiron 1:bdbf36f8408d 144
julientiron 1:bdbf36f8408d 145 /**
julientiron 1:bdbf36f8408d 146 * @brief Read ID of LSM6DS0 Accelerometer and Gyroscope
julientiron 1:bdbf36f8408d 147 * @param None
julientiron 1:bdbf36f8408d 148 * @retval ID
julientiron 1:bdbf36f8408d 149 */
julientiron 1:bdbf36f8408d 150 uint8_t BSP_IMU_6AXES_Read_XG_ID(void)
julientiron 1:bdbf36f8408d 151 {
julientiron 1:bdbf36f8408d 152 uint8_t id = 0x00;
julientiron 1:bdbf36f8408d 153
julientiron 1:bdbf36f8408d 154 if(Imu6AxesDrv->Read_XG_ID != NULL)
julientiron 1:bdbf36f8408d 155 {
julientiron 1:bdbf36f8408d 156 id = Imu6AxesDrv->Read_XG_ID();
julientiron 1:bdbf36f8408d 157 }
julientiron 1:bdbf36f8408d 158 return id;
julientiron 1:bdbf36f8408d 159 }
julientiron 1:bdbf36f8408d 160
julientiron 1:bdbf36f8408d 161
julientiron 1:bdbf36f8408d 162 /**
julientiron 1:bdbf36f8408d 163 * @brief Check ID of LSM6DS0 Accelerometer and Gyroscope sensor
julientiron 1:bdbf36f8408d 164 * @param None
julientiron 1:bdbf36f8408d 165 * @retval Test status
julientiron 1:bdbf36f8408d 166 */
julientiron 1:bdbf36f8408d 167 IMU_6AXES_StatusTypeDef BSP_IMU_6AXES_Check_XG_ID(void) {
julientiron 1:bdbf36f8408d 168 if (BSP_IMU_6AXES_Read_XG_ID() == I_AM_LSM6DS0_XG) {
julientiron 1:bdbf36f8408d 169 return IMU_6AXES_OK;
julientiron 1:bdbf36f8408d 170 } else {
julientiron 1:bdbf36f8408d 171 return IMU_6AXES_ERROR;
julientiron 1:bdbf36f8408d 172 }
julientiron 1:bdbf36f8408d 173 }
julientiron 1:bdbf36f8408d 174
julientiron 1:bdbf36f8408d 175
julientiron 1:bdbf36f8408d 176 /**
julientiron 1:bdbf36f8408d 177 * @brief Get Accelerometer raw axes
julientiron 1:bdbf36f8408d 178 * @param pData: pointer on AxesRaw_TypeDef data
julientiron 1:bdbf36f8408d 179 * @retval None
julientiron 1:bdbf36f8408d 180 */
julientiron 1:bdbf36f8408d 181 void BSP_IMU_6AXES_X_GetAxesRaw(AxesRaw_TypeDef *pData)
julientiron 1:bdbf36f8408d 182 {
julientiron 1:bdbf36f8408d 183 if(Imu6AxesDrv->Get_X_Axes!= NULL)
julientiron 1:bdbf36f8408d 184 {
julientiron 1:bdbf36f8408d 185 Imu6AxesDrv->Get_X_Axes((int32_t *)pData);
julientiron 1:bdbf36f8408d 186 }
julientiron 1:bdbf36f8408d 187 }
julientiron 1:bdbf36f8408d 188
julientiron 1:bdbf36f8408d 189
julientiron 1:bdbf36f8408d 190 /**
julientiron 1:bdbf36f8408d 191 * @brief Get Gyroscope raw axes
julientiron 1:bdbf36f8408d 192 * @param pData: pointer on AxesRaw_TypeDef data
julientiron 1:bdbf36f8408d 193 * @retval None
julientiron 1:bdbf36f8408d 194 */
julientiron 1:bdbf36f8408d 195 void BSP_IMU_6AXES_G_GetAxesRaw(AxesRaw_TypeDef *pData)
julientiron 1:bdbf36f8408d 196 {
julientiron 1:bdbf36f8408d 197 if(Imu6AxesDrv->Get_G_Axes!= NULL)
julientiron 1:bdbf36f8408d 198 {
julientiron 1:bdbf36f8408d 199 Imu6AxesDrv->Get_G_Axes((int32_t *)pData);
julientiron 1:bdbf36f8408d 200 }
julientiron 1:bdbf36f8408d 201 }
julientiron 1:bdbf36f8408d 202
julientiron 1:bdbf36f8408d 203 /**
julientiron 1:bdbf36f8408d 204 * @}
julientiron 1:bdbf36f8408d 205 */
julientiron 1:bdbf36f8408d 206
julientiron 1:bdbf36f8408d 207 /**
julientiron 1:bdbf36f8408d 208 * @}
julientiron 1:bdbf36f8408d 209 */
julientiron 1:bdbf36f8408d 210
julientiron 1:bdbf36f8408d 211 /**
julientiron 1:bdbf36f8408d 212 * @}
julientiron 1:bdbf36f8408d 213 */
julientiron 1:bdbf36f8408d 214
julientiron 1:bdbf36f8408d 215 /**
julientiron 1:bdbf36f8408d 216 * @}
julientiron 1:bdbf36f8408d 217 */
julientiron 1:bdbf36f8408d 218
julientiron 1:bdbf36f8408d 219 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
julientiron 1:bdbf36f8408d 220