Loading...
Searching...
No Matches
lsm6dsxx.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 OTA keys S.A.
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#include "periph/i2c.h"
30
34enum {
35 LSM6DSXX_DATA_RATE_POWER_DOWN = 0x0,
36 LSM6DSXX_DATA_RATE_1_6HZ = 0xB,
37 LSM6DSXX_DATA_RATE_12_5HZ = 0x1,
38 LSM6DSXX_DATA_RATE_26HZ = 0x2,
39 LSM6DSXX_DATA_RATE_52HZ = 0x3,
40 LSM6DSXX_DATA_RATE_104HZ = 0x4,
41 LSM6DSXX_DATA_RATE_208HZ = 0x5,
42 LSM6DSXX_DATA_RATE_416HZ = 0x6,
43 LSM6DSXX_DATA_RATE_833HZ = 0x7,
44 LSM6DSXX_DATA_RATE_1_66KHZ = 0x8,
45 LSM6DSXX_DATA_RATE_3_33KHZ = 0x9,
46 LSM6DSXX_DATA_RATE_6_66KHZ = 0xa,
47};
48
52enum {
53 LSM6DSXX_DECIMATION_NOT_IN_FIFO = 0,
54 LSM6DSXX_DECIMATION_NO,
55 LSM6DSXX_DECIMATION_2,
56 LSM6DSXX_DECIMATION_3,
57 LSM6DSXX_DECIMATION_4,
58 LSM6DSXX_DECIMATION_8,
59 LSM6DSXX_DECIMATION_16,
60 LSM6DSXX_DECIMATION_32,
61};
62
66enum {
67 LSM6DSXX_ACC_FS_2G = 0,
68 LSM6DSXX_ACC_FS_16G,
69 LSM6DSXX_ACC_FS_4G,
70 LSM6DSXX_ACC_FS_8G,
71 LSM6DSXX_ACC_FS_MAX,
72};
73
77enum {
78 LSM6DSXX_GYRO_FS_245DPS = 0,
79 LSM6DSXX_GYRO_FS_500DPS,
80 LSM6DSXX_GYRO_FS_1000DPS,
81 LSM6DSXX_GYRO_FS_2000DPS,
82 LSM6DSXX_GYRO_FS_MAX,
83};
84
88typedef struct {
90 uint8_t addr;
91 uint8_t acc_odr;
92 uint8_t gyro_odr;
93 uint8_t acc_fs;
94 uint8_t gyro_fs;
98
106
110typedef struct {
111 int16_t x;
112 int16_t y;
113 int16_t z;
115
119enum {
124};
125
136
147
158
172int lsm6dsxx_read_temp(const lsm6dsxx_t *dev, int16_t *data);
173
183
193
203
213
214#ifdef __cplusplus
215}
216#endif
217
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:123
@ LSM6DSXX_OK
all good
Definition lsm6dsxx.h:120
@ LSM6DSXX_ERROR_CNF
Config error.
Definition lsm6dsxx.h:122
@ LSM6DSXX_ERROR_BUS
I2C bus error.
Definition lsm6dsxx.h:121
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
3D output data
Definition lsm6dsxx.h:110
int16_t x
X axis.
Definition lsm6dsxx.h:111
int16_t y
Y axis.
Definition lsm6dsxx.h:112
int16_t z
Z axis.
Definition lsm6dsxx.h:113
LSM6DSXX driver parameters.
Definition lsm6dsxx.h:88
uint8_t acc_fs
accelerometer full scale
Definition lsm6dsxx.h:93
uint8_t acc_odr
accelerometer output data rate
Definition lsm6dsxx.h:91
uint8_t gyro_odr
gyroscope output data rate
Definition lsm6dsxx.h:92
i2c_t i2c
i2c bus
Definition lsm6dsxx.h:89
uint8_t gyro_decimation
gyroscope decimation
Definition lsm6dsxx.h:96
uint8_t gyro_fs
gyroscope full scale
Definition lsm6dsxx.h:94
uint8_t addr
i2c address
Definition lsm6dsxx.h:90
uint8_t acc_decimation
accelerometer decimation
Definition lsm6dsxx.h:95
LSM6DSXX device descriptor.
Definition lsm6dsxx.h:102
uint8_t temperature_scaling_factor
temperature scaling factor
Definition lsm6dsxx.h:104
lsm6dsxx_params_t params
driver parameters
Definition lsm6dsxx.h:103