lsm6dsxx.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 OTA keys S.A.
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  *
8  */
9 
10 #pragma once
11 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 #include "periph/i2c.h"
34 
38 enum {
39  LSM6DSXX_DATA_RATE_POWER_DOWN = 0x0,
40  LSM6DSXX_DATA_RATE_1_6HZ = 0xB,
41  LSM6DSXX_DATA_RATE_12_5HZ = 0x1,
42  LSM6DSXX_DATA_RATE_26HZ = 0x2,
43  LSM6DSXX_DATA_RATE_52HZ = 0x3,
44  LSM6DSXX_DATA_RATE_104HZ = 0x4,
45  LSM6DSXX_DATA_RATE_208HZ = 0x5,
46  LSM6DSXX_DATA_RATE_416HZ = 0x6,
47  LSM6DSXX_DATA_RATE_833HZ = 0x7,
48  LSM6DSXX_DATA_RATE_1_66KHZ = 0x8,
49  LSM6DSXX_DATA_RATE_3_33KHZ = 0x9,
50  LSM6DSXX_DATA_RATE_6_66KHZ = 0xa,
51 };
52 
56 enum {
57  LSM6DSXX_DECIMATION_NOT_IN_FIFO = 0,
58  LSM6DSXX_DECIMATION_NO,
59  LSM6DSXX_DECIMATION_2,
60  LSM6DSXX_DECIMATION_3,
61  LSM6DSXX_DECIMATION_4,
62  LSM6DSXX_DECIMATION_8,
63  LSM6DSXX_DECIMATION_16,
64  LSM6DSXX_DECIMATION_32,
65 };
66 
70 enum {
71  LSM6DSXX_ACC_FS_2G = 0,
72  LSM6DSXX_ACC_FS_16G,
73  LSM6DSXX_ACC_FS_4G,
74  LSM6DSXX_ACC_FS_8G,
75  LSM6DSXX_ACC_FS_MAX,
76 };
77 
81 enum {
82  LSM6DSXX_GYRO_FS_245DPS = 0,
83  LSM6DSXX_GYRO_FS_500DPS,
84  LSM6DSXX_GYRO_FS_1000DPS,
85  LSM6DSXX_GYRO_FS_2000DPS,
86  LSM6DSXX_GYRO_FS_MAX,
87 };
88 
92 typedef struct {
94  uint8_t addr;
95  uint8_t acc_odr;
96  uint8_t gyro_odr;
97  uint8_t acc_fs;
98  uint8_t gyro_fs;
99  uint8_t acc_decimation;
100  uint8_t gyro_decimation;
102 
106 typedef struct {
109 } lsm6dsxx_t;
110 
114 typedef struct {
115  int16_t x;
116  int16_t y;
117  int16_t z;
119 
123 enum {
128 };
129 
139 int lsm6dsxx_init(lsm6dsxx_t *dev, const lsm6dsxx_params_t *params);
140 
151 
162 
176 int lsm6dsxx_read_temp(const lsm6dsxx_t *dev, int16_t *data);
177 
187 
197 
207 
217 
218 #ifdef __cplusplus
219 }
220 #endif
221 
int lsm6dsxx_acc_power_down(const lsm6dsxx_t *dev)
Power down accelerometer.
int lsm6dsxx_gyro_power_down(const lsm6dsxx_t *dev)
Power down gyroscope.
int lsm6dsxx_gyro_power_up(const lsm6dsxx_t *dev)
Power up gyroscope.
int lsm6dsxx_acc_power_up(const lsm6dsxx_t *dev)
Power up accelerometer.
int lsm6dsxx_read_acc(const lsm6dsxx_t *dev, lsm6dsxx_3d_data_t *data)
Read accelerometer data.
int lsm6dsxx_init(lsm6dsxx_t *dev, const lsm6dsxx_params_t *params)
Initialize a LSM6DSXX device.
int lsm6dsxx_read_gyro(const lsm6dsxx_t *dev, lsm6dsxx_3d_data_t *data)
Read gyroscope data.
int lsm6dsxx_read_temp(const lsm6dsxx_t *dev, int16_t *data)
Read temperature data.
@ LSM6DSXX_ERROR_DEV
device error
Definition: lsm6dsxx.h:127
@ LSM6DSXX_OK
all good
Definition: lsm6dsxx.h:124
@ LSM6DSXX_ERROR_CNF
Config error.
Definition: lsm6dsxx.h:126
@ LSM6DSXX_ERROR_BUS
I2C bus error.
Definition: lsm6dsxx.h:125
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition: i2c.h:144
Low-level I2C peripheral driver interface definition.
3D output data
Definition: lsm6dsxx.h:114
int16_t x
X axis.
Definition: lsm6dsxx.h:115
int16_t y
Y axis.
Definition: lsm6dsxx.h:116
int16_t z
Z axis.
Definition: lsm6dsxx.h:117
LSM6DSXX driver parameters.
Definition: lsm6dsxx.h:92
uint8_t acc_fs
accelerometer full scale
Definition: lsm6dsxx.h:97
uint8_t acc_odr
accelerometer output data rate
Definition: lsm6dsxx.h:95
uint8_t gyro_odr
gyroscope output data rate
Definition: lsm6dsxx.h:96
i2c_t i2c
i2c bus
Definition: lsm6dsxx.h:93
uint8_t gyro_decimation
gyroscope decimation
Definition: lsm6dsxx.h:100
uint8_t gyro_fs
gyroscope full scale
Definition: lsm6dsxx.h:98
uint8_t addr
i2c address
Definition: lsm6dsxx.h:94
uint8_t acc_decimation
accelerometer decimation
Definition: lsm6dsxx.h:99
LSM6DSXX device descriptor.
Definition: lsm6dsxx.h:106
uint8_t temperature_scaling_factor
temperature scaling factor
Definition: lsm6dsxx.h:108
lsm6dsxx_params_t params
driver parameters
Definition: lsm6dsxx.h:107