ST Americas mbed Team / Nucleo_Sensor_Shield

Dependents:   Nucleo_Sensors_Demo m2x-temp_ethernet_demo m2x-MEMS_ACKme_Wifi_demo m2x_MEMS_Ublox_Cellular_demo ... more

Fork of Nucleo_Sensor_Shield by Daniel Griffin

Committer:
dangriffin
Date:
Sat Dec 13 01:09:48 2014 +0000
Revision:
0:0433918efb54
Child:
1:354f61ffdcfb
Create Nucleo sensor shield library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dangriffin 0:0433918efb54 1 /**
dangriffin 0:0433918efb54 2 ******************************************************************************
dangriffin 0:0433918efb54 3 * @file x_cube_mems_lsm6ds0.h
dangriffin 0:0433918efb54 4 * @author AST / EST
dangriffin 0:0433918efb54 5 * @version V0.0.1
dangriffin 0:0433918efb54 6 * @date 9-December-2014
dangriffin 0:0433918efb54 7 * @brief Header file for component LSM6DS0
dangriffin 0:0433918efb54 8 ******************************************************************************
dangriffin 0:0433918efb54 9 * @attention
dangriffin 0:0433918efb54 10 *
dangriffin 0:0433918efb54 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
dangriffin 0:0433918efb54 12 *
dangriffin 0:0433918efb54 13 * Redistribution and use in source and binary forms, with or without modification,
dangriffin 0:0433918efb54 14 * are permitted provided that the following conditions are met:
dangriffin 0:0433918efb54 15 * 1. Redistributions of source code must retain the above copyright notice,
dangriffin 0:0433918efb54 16 * this list of conditions and the following disclaimer.
dangriffin 0:0433918efb54 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
dangriffin 0:0433918efb54 18 * this list of conditions and the following disclaimer in the documentation
dangriffin 0:0433918efb54 19 * and/or other materials provided with the distribution.
dangriffin 0:0433918efb54 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
dangriffin 0:0433918efb54 21 * may be used to endorse or promote products derived from this software
dangriffin 0:0433918efb54 22 * without specific prior written permission.
dangriffin 0:0433918efb54 23 *
dangriffin 0:0433918efb54 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
dangriffin 0:0433918efb54 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
dangriffin 0:0433918efb54 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dangriffin 0:0433918efb54 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
dangriffin 0:0433918efb54 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
dangriffin 0:0433918efb54 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
dangriffin 0:0433918efb54 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
dangriffin 0:0433918efb54 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
dangriffin 0:0433918efb54 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dangriffin 0:0433918efb54 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dangriffin 0:0433918efb54 34 *
dangriffin 0:0433918efb54 35 ******************************************************************************
dangriffin 0:0433918efb54 36 */
dangriffin 0:0433918efb54 37
dangriffin 0:0433918efb54 38 /* Includes ------------------------------------------------------------------*/
dangriffin 0:0433918efb54 39 #include "mbed.h"
dangriffin 0:0433918efb54 40 #include "lsm6ds0.h"
dangriffin 0:0433918efb54 41 #include "lsm6ds0_platform.h"
dangriffin 0:0433918efb54 42 #include <math.h>
dangriffin 0:0433918efb54 43
dangriffin 0:0433918efb54 44 /* Methods -------------------------------------------------------------------*/
dangriffin 0:0433918efb54 45
dangriffin 0:0433918efb54 46 /**
dangriffin 0:0433918efb54 47 * @brief Read data from LSM6DS0 Gyroscope and calculate angular rate in mdps.
dangriffin 0:0433918efb54 48 * @param float *pfData
dangriffin 0:0433918efb54 49 * @retval None.
dangriffin 0:0433918efb54 50 */
dangriffin 0:0433918efb54 51 void LSM6DS0::Gyro_GetAxes(AxesRaw_TypeDef *pData)
dangriffin 0:0433918efb54 52 {
dangriffin 0:0433918efb54 53
dangriffin 0:0433918efb54 54 uint8_t tempReg = 0x00;
dangriffin 0:0433918efb54 55 int16_t pDataRaw[3];
dangriffin 0:0433918efb54 56 float sensitivity = 0;
dangriffin 0:0433918efb54 57 int ret;
dangriffin 0:0433918efb54 58
dangriffin 0:0433918efb54 59 LSM6DS0::Gyro_GetAxesRaw(pDataRaw);
dangriffin 0:0433918efb54 60
dangriffin 0:0433918efb54 61 //IMU_6AXES_IO_Read(&tempReg, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG1_G, 1);
dangriffin 0:0433918efb54 62 ret = dev_i2c.i2c_read(&tempReg, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG1_G, 1);
dangriffin 0:0433918efb54 63
dangriffin 0:0433918efb54 64 tempReg &= LSM6DS0_G_FS_MASK;
dangriffin 0:0433918efb54 65
dangriffin 0:0433918efb54 66 switch(tempReg)
dangriffin 0:0433918efb54 67 {
dangriffin 0:0433918efb54 68 case LSM6DS0_G_FS_245:
dangriffin 0:0433918efb54 69 sensitivity = 8.75;
dangriffin 0:0433918efb54 70 break;
dangriffin 0:0433918efb54 71 case LSM6DS0_G_FS_500:
dangriffin 0:0433918efb54 72 sensitivity = 17.50;
dangriffin 0:0433918efb54 73 break;
dangriffin 0:0433918efb54 74 case LSM6DS0_G_FS_2000:
dangriffin 0:0433918efb54 75 sensitivity = 70;
dangriffin 0:0433918efb54 76 break;
dangriffin 0:0433918efb54 77 }
dangriffin 0:0433918efb54 78
dangriffin 0:0433918efb54 79 pData->AXIS_X = (int32_t)(pDataRaw[0] * sensitivity);
dangriffin 0:0433918efb54 80 pData->AXIS_Y = (int32_t)(pDataRaw[1] * sensitivity);
dangriffin 0:0433918efb54 81 pData->AXIS_Z = (int32_t)(pDataRaw[2] * sensitivity);
dangriffin 0:0433918efb54 82 }
dangriffin 0:0433918efb54 83
dangriffin 0:0433918efb54 84
dangriffin 0:0433918efb54 85 /**
dangriffin 0:0433918efb54 86 * @brief Read raw data from LSM6DS0 Gyroscope output register.
dangriffin 0:0433918efb54 87 * @param float *pfData
dangriffin 0:0433918efb54 88 * @retval None.
dangriffin 0:0433918efb54 89 */
dangriffin 0:0433918efb54 90 void LSM6DS0::Gyro_GetAxesRaw(int16_t *pData)
dangriffin 0:0433918efb54 91 {
dangriffin 0:0433918efb54 92 uint8_t tempReg[2] = {0,0};
dangriffin 0:0433918efb54 93 int ret;
dangriffin 0:0433918efb54 94
dangriffin 0:0433918efb54 95 //IMU_6AXES_IO_Read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_X_L_G + 0x80, 2);
dangriffin 0:0433918efb54 96 ret = dev_i2c.i2c_read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_X_L_G + 0x80, 2);
dangriffin 0:0433918efb54 97
dangriffin 0:0433918efb54 98 pData[0] = ((((int16_t)tempReg[1]) << 8)+(int16_t)tempReg[0]);
dangriffin 0:0433918efb54 99
dangriffin 0:0433918efb54 100 //IMU_6AXES_IO_Read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Y_L_G + 0x80, 2);
dangriffin 0:0433918efb54 101 ret = dev_i2c.i2c_read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Y_L_G + 0x80, 2);
dangriffin 0:0433918efb54 102
dangriffin 0:0433918efb54 103 pData[1] = ((((int16_t)tempReg[1]) << 8)+(int16_t)tempReg[0]);
dangriffin 0:0433918efb54 104
dangriffin 0:0433918efb54 105 //IMU_6AXES_IO_Read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Z_L_G + 0x80, 2);
dangriffin 0:0433918efb54 106 ret = dev_i2c.i2c_read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Z_L_G + 0x80, 2);
dangriffin 0:0433918efb54 107
dangriffin 0:0433918efb54 108 pData[2] = ((((int16_t)tempReg[1]) << 8)+(int16_t)tempReg[0]);
dangriffin 0:0433918efb54 109 }
dangriffin 0:0433918efb54 110
dangriffin 0:0433918efb54 111
dangriffin 0:0433918efb54 112 /**
dangriffin 0:0433918efb54 113 * @brief Read data from LSM6DS0 Accelerometer and calculate linear acceleration in mg.
dangriffin 0:0433918efb54 114 * @param float *pfData
dangriffin 0:0433918efb54 115 * @retval None.
dangriffin 0:0433918efb54 116 */
dangriffin 0:0433918efb54 117 void LSM6DS0::Acc_GetAxes(AxesRaw_TypeDef *pData)
dangriffin 0:0433918efb54 118 {
dangriffin 0:0433918efb54 119 uint8_t tempReg = 0x00;
dangriffin 0:0433918efb54 120 int16_t pDataRaw[3];
dangriffin 0:0433918efb54 121 float sensitivity = 0;
dangriffin 0:0433918efb54 122 int ret;
dangriffin 0:0433918efb54 123
dangriffin 0:0433918efb54 124 Acc_GetAxesRaw(pDataRaw);
dangriffin 0:0433918efb54 125
dangriffin 0:0433918efb54 126 //IMU_6AXES_IO_Read(&tempReg, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG6_XL, 1);
dangriffin 0:0433918efb54 127 ret = dev_i2c.i2c_read(&tempReg, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG6_XL, 1);
dangriffin 0:0433918efb54 128
dangriffin 0:0433918efb54 129 tempReg &= LSM6DS0_XL_FS_MASK;
dangriffin 0:0433918efb54 130
dangriffin 0:0433918efb54 131 switch(tempReg)
dangriffin 0:0433918efb54 132 {
dangriffin 0:0433918efb54 133 case LSM6DS0_XL_FS_2G:
dangriffin 0:0433918efb54 134 sensitivity = 0.061;
dangriffin 0:0433918efb54 135 break;
dangriffin 0:0433918efb54 136 case LSM6DS0_XL_FS_4G:
dangriffin 0:0433918efb54 137 sensitivity = 0.122;
dangriffin 0:0433918efb54 138 break;
dangriffin 0:0433918efb54 139 case LSM6DS0_XL_FS_8G:
dangriffin 0:0433918efb54 140 sensitivity = 0.244;
dangriffin 0:0433918efb54 141 break;
dangriffin 0:0433918efb54 142 }
dangriffin 0:0433918efb54 143
dangriffin 0:0433918efb54 144 pData->AXIS_X = (int32_t)(pDataRaw[0] * sensitivity);
dangriffin 0:0433918efb54 145 pData->AXIS_Y = (int32_t)(pDataRaw[1] * sensitivity);
dangriffin 0:0433918efb54 146 pData->AXIS_Z = (int32_t)(pDataRaw[2] * sensitivity);
dangriffin 0:0433918efb54 147
dangriffin 0:0433918efb54 148 }
dangriffin 0:0433918efb54 149
dangriffin 0:0433918efb54 150 /**
dangriffin 0:0433918efb54 151 * @brief Read raw data from LSM6DS0 Accelerometer output register.
dangriffin 0:0433918efb54 152 * @param float *pfData
dangriffin 0:0433918efb54 153 * @retval None.
dangriffin 0:0433918efb54 154 */
dangriffin 0:0433918efb54 155 void LSM6DS0::Acc_GetAxesRaw(int16_t *pData)
dangriffin 0:0433918efb54 156 {
dangriffin 0:0433918efb54 157 uint8_t tempReg[2] = {0,0};
dangriffin 0:0433918efb54 158 int ret;
dangriffin 0:0433918efb54 159
dangriffin 0:0433918efb54 160 //IMU_6AXES_IO_Read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_X_L_XL + 0x80, 2);
dangriffin 0:0433918efb54 161 ret = dev_i2c.i2c_read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_X_L_XL + 0x80, 2);
dangriffin 0:0433918efb54 162
dangriffin 0:0433918efb54 163 pData[0] = ((((int16_t)tempReg[1]) << 8)+(int16_t)tempReg[0]);
dangriffin 0:0433918efb54 164
dangriffin 0:0433918efb54 165 //IMU_6AXES_IO_Read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Y_L_XL + 0x80, 2);
dangriffin 0:0433918efb54 166 ret = dev_i2c.i2c_read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Y_L_XL + 0x80, 2);
dangriffin 0:0433918efb54 167
dangriffin 0:0433918efb54 168 pData[1] = ((((int16_t)tempReg[1]) << 8)+(int16_t)tempReg[0]);
dangriffin 0:0433918efb54 169
dangriffin 0:0433918efb54 170 //IMU_6AXES_IO_Read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Z_L_XL + 0x80, 2);
dangriffin 0:0433918efb54 171 ret = dev_i2c.i2c_read(&tempReg[0], LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_OUT_Z_L_XL + 0x80, 2);
dangriffin 0:0433918efb54 172
dangriffin 0:0433918efb54 173 pData[2] = ((((int16_t)tempReg[1]) << 8)+(int16_t)tempReg[0]);
dangriffin 0:0433918efb54 174 }
dangriffin 0:0433918efb54 175
dangriffin 0:0433918efb54 176 /**
dangriffin 0:0433918efb54 177 * @brief Read ID address of HTS221
dangriffin 0:0433918efb54 178 * @param Device ID address
dangriffin 0:0433918efb54 179 * @retval ID name
dangriffin 0:0433918efb54 180 */
dangriffin 0:0433918efb54 181 uint8_t LSM6DS0::ReadID(void)
dangriffin 0:0433918efb54 182 {
dangriffin 0:0433918efb54 183 uint8_t tmp=0x00;
dangriffin 0:0433918efb54 184 int ret;
dangriffin 0:0433918efb54 185
dangriffin 0:0433918efb54 186 /* Read WHO I AM register */
dangriffin 0:0433918efb54 187 //IMU_6AXES_IO_Read(&tmp, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_WHO_AM_I_ADDR, 1);
dangriffin 0:0433918efb54 188 ret = dev_i2c.i2c_read(&tmp, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_WHO_AM_I_ADDR, 1);
dangriffin 0:0433918efb54 189
dangriffin 0:0433918efb54 190 /* Return the ID */
dangriffin 0:0433918efb54 191 return (uint8_t)tmp;
dangriffin 0:0433918efb54 192 }
dangriffin 0:0433918efb54 193
dangriffin 0:0433918efb54 194 /**
dangriffin 0:0433918efb54 195 * @brief Set LSM6DS0 Initialization.
dangriffin 0:0433918efb54 196 * @param InitStruct: it contains the configuration setting for the LSM6DS0.
dangriffin 0:0433918efb54 197 * @retval None
dangriffin 0:0433918efb54 198 */
dangriffin 0:0433918efb54 199 void LSM6DS0::Init() {
dangriffin 0:0433918efb54 200
dangriffin 0:0433918efb54 201 uint8_t tmp1 = 0x00;
dangriffin 0:0433918efb54 202 int ret;
dangriffin 0:0433918efb54 203
dangriffin 0:0433918efb54 204 /******* Gyroscope init *******/
dangriffin 0:0433918efb54 205
dangriffin 0:0433918efb54 206 //IMU_6AXES_IO_Read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG1_G, 1);
dangriffin 0:0433918efb54 207 ret = dev_i2c.i2c_read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG1_G, 1);
dangriffin 0:0433918efb54 208
dangriffin 0:0433918efb54 209 /* Output Data Rate selection */
dangriffin 0:0433918efb54 210 tmp1 &= ~(LSM6DS0_G_ODR_MASK);
dangriffin 0:0433918efb54 211 tmp1 |= LSM6DS0_G_ODR_119HZ;
dangriffin 0:0433918efb54 212
dangriffin 0:0433918efb54 213 /* Full scale selection */
dangriffin 0:0433918efb54 214 tmp1 &= ~(LSM6DS0_G_FS_MASK);
dangriffin 0:0433918efb54 215 tmp1 |= LSM6DS0_G_FS_2000;
dangriffin 0:0433918efb54 216
dangriffin 0:0433918efb54 217 //IMU_6AXES_IO_Write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG1_G, 1);
dangriffin 0:0433918efb54 218 ret = dev_i2c.i2c_write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG1_G, 1);
dangriffin 0:0433918efb54 219
dangriffin 0:0433918efb54 220 //IMU_6AXES_IO_Read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG4, 1);
dangriffin 0:0433918efb54 221 ret = dev_i2c.i2c_read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG4, 1);
dangriffin 0:0433918efb54 222
dangriffin 0:0433918efb54 223 /* Enable X axis selection */
dangriffin 0:0433918efb54 224 tmp1 &= ~(LSM6DS0_G_XEN_MASK);
dangriffin 0:0433918efb54 225 tmp1 |= LSM6DS0_G_XEN_ENABLE;
dangriffin 0:0433918efb54 226
dangriffin 0:0433918efb54 227 /* Enable Y axis selection */
dangriffin 0:0433918efb54 228 tmp1 &= ~(LSM6DS0_G_YEN_MASK);
dangriffin 0:0433918efb54 229 tmp1 |= LSM6DS0_G_YEN_ENABLE;
dangriffin 0:0433918efb54 230
dangriffin 0:0433918efb54 231 /* Enable Z axis selection */
dangriffin 0:0433918efb54 232 tmp1 &= ~(LSM6DS0_G_ZEN_MASK);
dangriffin 0:0433918efb54 233 tmp1 |= LSM6DS0_G_ZEN_ENABLE;
dangriffin 0:0433918efb54 234
dangriffin 0:0433918efb54 235 //IMU_6AXES_IO_Write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG4, 1);
dangriffin 0:0433918efb54 236 ret = dev_i2c.i2c_write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG4, 1);
dangriffin 0:0433918efb54 237
dangriffin 0:0433918efb54 238 /******************************/
dangriffin 0:0433918efb54 239
dangriffin 0:0433918efb54 240 /***** Accelerometer init *****/
dangriffin 0:0433918efb54 241
dangriffin 0:0433918efb54 242 //IMU_6AXES_IO_Read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG6_XL, 1);
dangriffin 0:0433918efb54 243 ret = dev_i2c.i2c_read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG6_XL, 1);
dangriffin 0:0433918efb54 244
dangriffin 0:0433918efb54 245 /* Output Data Rate selection */
dangriffin 0:0433918efb54 246 tmp1 &= ~(LSM6DS0_XL_ODR_MASK);
dangriffin 0:0433918efb54 247 tmp1 |= LSM6DS0_XL_ODR_119HZ;
dangriffin 0:0433918efb54 248
dangriffin 0:0433918efb54 249 /* Full scale selection */
dangriffin 0:0433918efb54 250 tmp1 &= ~(LSM6DS0_XL_FS_MASK);
dangriffin 0:0433918efb54 251 tmp1 |= LSM6DS0_XL_FS_2G;
dangriffin 0:0433918efb54 252
dangriffin 0:0433918efb54 253 //IMU_6AXES_IO_Write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG6_XL, 1);
dangriffin 0:0433918efb54 254 ret = dev_i2c.i2c_write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG6_XL, 1);
dangriffin 0:0433918efb54 255
dangriffin 0:0433918efb54 256
dangriffin 0:0433918efb54 257 //IMU_6AXES_IO_Read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG5_XL, 1);
dangriffin 0:0433918efb54 258 ret = dev_i2c.i2c_read(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG5_XL, 1);
dangriffin 0:0433918efb54 259
dangriffin 0:0433918efb54 260 /* Enable X axis selection */
dangriffin 0:0433918efb54 261 tmp1 &= ~(LSM6DS0_XL_XEN_MASK);
dangriffin 0:0433918efb54 262 tmp1 |= LSM6DS0_XL_XEN_ENABLE;
dangriffin 0:0433918efb54 263
dangriffin 0:0433918efb54 264 /* Enable Y axis selection */
dangriffin 0:0433918efb54 265 tmp1 &= ~(LSM6DS0_XL_YEN_MASK);
dangriffin 0:0433918efb54 266 tmp1 |= LSM6DS0_XL_YEN_ENABLE;
dangriffin 0:0433918efb54 267
dangriffin 0:0433918efb54 268 /* Enable Z axis selection */
dangriffin 0:0433918efb54 269 tmp1 &= ~(LSM6DS0_XL_ZEN_MASK);
dangriffin 0:0433918efb54 270 tmp1 |= LSM6DS0_XL_ZEN_ENABLE;
dangriffin 0:0433918efb54 271
dangriffin 0:0433918efb54 272 //IMU_6AXES_IO_Write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG5_XL, 1);
dangriffin 0:0433918efb54 273 ret = dev_i2c.i2c_write(&tmp1, LSM6DS0_XG_MEMS_ADDRESS, LSM6DS0_XG_CTRL_REG5_XL, 1);
dangriffin 0:0433918efb54 274
dangriffin 0:0433918efb54 275 /******************************/
dangriffin 0:0433918efb54 276
dangriffin 0:0433918efb54 277 if(ReadID() == I_AM_LSM6DS0_XG)
dangriffin 0:0433918efb54 278 {
dangriffin 0:0433918efb54 279 LSM6DS0Initialized = 1;
dangriffin 0:0433918efb54 280 //ret = HUM_TEMP_OK;
dangriffin 0:0433918efb54 281 }
dangriffin 0:0433918efb54 282
dangriffin 0:0433918efb54 283 return;
dangriffin 0:0433918efb54 284 }
dangriffin 0:0433918efb54 285
dangriffin 0:0433918efb54 286