Loading...
Searching...
No Matches
l3gxxxx.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Gunar Schorcht
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
958
959#ifdef __cplusplus
960extern "C"
961{
962#endif
963
964#include <stdbool.h>
965#include <stdint.h>
966
967#include "mutex.h"
968#include "periph/gpio.h"
969#include "periph/i2c.h"
970#include "periph/spi.h"
971
972#include "l3gxxxx_regs.h"
973
974#if !IS_USED(MODULE_L3GD20H) && !IS_USED(MODULE_L3GD20) \
975 && !IS_USED(MODULE_L3G4200D_NG) \
976 && !IS_USED(MODULE_A3G4250D) \
977 && !IS_USED(MODULE_I3G4250D)
978#error Please select your sensor variant by using the respective pseudomodule.
979#endif
980
985#if IS_USED(MODULE_L3GD20H) || IS_USED(MODULE_L3GD20)
986#define L3GXXXX_I2C_ADDR_1 (0x6a)
987#define L3GXXXX_I2C_ADDR_2 (0x6b)
988#else
989#define L3GXXXX_I2C_ADDR_1 (0x68)
990#define L3GXXXX_I2C_ADDR_2 (0x69)
991#endif
993
998#define L3GXXXX_CHIP_ID_L3GD20H (0xd7)
999#define L3GXXXX_CHIP_ID_L3GD20 (0xd4)
1000#define L3GXXXX_CHIP_ID_X3G42XXD (0xd3)
1002
1021
1085
1101
1108typedef enum {
1110
1115#if IS_USED(MODULE_L3GD20H) || IS_USED(MODULE_L3GD20) || DOXYGEN
1122#endif
1123#if IS_USED(MODULE_L3GD20H) || DOXYGEN
1130#endif
1132
1191
1205
1242
1249#define L3GXXXX_INT_DATA (L3GXXXX_INT_DATA_READY | \
1250 L3GXXXX_INT_FIFO_WATERMARK | \
1251 L3GXXXX_INT_FIFO_OVERRUN | \
1252 L3GXXXX_INT_FIFO_EMPTY)
1253
1288
1292typedef union {
1293 struct {
1294 uint8_t x_low :1;
1295 uint8_t x_high:1;
1296 uint8_t y_low :1;
1297 uint8_t y_high:1;
1298 uint8_t z_low :1;
1299 uint8_t z_high:1;
1300 uint8_t active:1;
1301 uint8_t unused:1;
1302 };
1303 uint8_t val;
1306
1310typedef union {
1311 struct {
1312 uint8_t fifo_empty :1;
1313 uint8_t fifo_overrun :1;
1314 uint8_t fifo_watermark:1;
1315 uint8_t data_ready :1;
1316 uint8_t unused :4;
1317 };
1318 uint8_t val;
1321
1333
1341
1349
1353typedef struct {
1354 int16_t x;
1355 int16_t y;
1356 int16_t z;
1358
1362typedef struct {
1363 int32_t x;
1364 int32_t y;
1365 int32_t z;
1367
1372
1377
1381typedef enum {
1382#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
1384#endif
1385#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
1387#endif
1388} l3gxxxx_if_t;
1389
1390#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
1394typedef struct {
1396 uint8_t addr;
1398#endif
1399
1400#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
1404typedef struct {
1405 spi_t dev;
1407 gpio_t cs;
1409#endif
1410
1414typedef struct {
1416 union {
1417#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
1419#endif
1420#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
1422#endif
1423 };
1425
1429typedef struct {
1431
1434
1437 uint8_t hpf_cutoff;
1439#if IS_USED(MODULE_L3GXXXX_FIFO) || DOXYGEN
1442#endif
1443
1444#if IS_USED(MODULE_L3GXXXX_IRQ_DATA) || DOXYGEN
1445 gpio_t int2_pin;
1447#endif
1448
1449#if IS_USED(MODULE_L3GXXXX_IRQ_EVENT) || DOXYGEN
1451 gpio_t int1_pin;
1453#endif
1454
1456
1471
1476
1490int l3gxxxx_init(l3gxxxx_t *dev, const l3gxxxx_params_t *params);
1491
1492#if IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN
1508 l3gxxxx_odr_t odr, bool x, bool y, bool z);
1509
1522
1523#endif /* IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN */
1525
1543
1556
1557#if IS_USED(MODULE_L3GXXXX_SLEEP) || DOXYGEN
1573
1589
1590#endif /* IS_USED(MODULE_L3GXXXX_SLEEP) || DOXYGEN */
1592
1597
1615
1642
1658
1660
1661#if IS_USED(MODULE_L3GXXXX_FIFO) || DOXYGEN
1662
1667
1668#if IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN
1695 l3gxxxx_fifo_mode_t mode, uint8_t watermark);
1696
1697#endif /* IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN */
1698
1718 l3gxxxx_data_fifo_t data);
1719
1737
1738#endif /* IS_USED(MODULE_L3GXXXX_FIFO) || DOXYGEN */
1740
1741#if IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN
1746
1769 l3gxxxx_filter_sel_t filter);
1770
1804 l3gxxxx_hpf_mode_t mode, uint8_t cutoff);
1805
1821int l3gxxxx_set_hpf_ref(const l3gxxxx_t *dev, int8_t ref);
1822
1837int l3gxxxx_get_hpf_ref(const l3gxxxx_t *dev, int8_t *ref);
1838
1839#endif /* IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN */
1841
1842#if IS_USED(MODULE_L3GXXXX_IRQ) || DOXYGEN
1847
1870 l3gxxxx_int_types_t mask, bool enable);
1871
1895
1896#if IS_USED(MODULE_L3GXXXX_IRQ_EVENT) || DOXYGEN
1919 const l3gxxxx_int_event_cfg_t *cfg);
1920
1921#if IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN
1940
1941#endif /* IS_USED(MODULE_L3GXXXX_CONFIG) || DOXYGEN */
1942#endif /* IS_USED(MODULE_L3GXXXX_IRQ_EVENT) || DOXYGEN */
1943
1945
1946#endif /* IS_USED(MODULE_L3GXXXX_IRQ) || DOXYGEN */
1947
1952
1969 uint8_t reg, const uint8_t *data, uint8_t len);
1970
1987 uint8_t reg, uint8_t *data, uint8_t len);
1989
1990#ifdef __cplusplus
1991}
1992#endif
1993
spi_clk_t
Definition periph_cpu.h:348
Low-level GPIO peripheral driver interface definitions.
int l3gxxxx_set_mode(l3gxxxx_t *dev, l3gxxxx_odr_t odr, bool x, bool y, bool z)
Set sensor mode.
int l3gxxxx_reg_write(const l3gxxxx_t *dev, uint8_t reg, const uint8_t *data, uint8_t len)
Direct write to register.
int l3gxxxx_read(const l3gxxxx_t *dev, l3gxxxx_data_t *data)
Read last sample of angular rates in millidegree per second (mpds)
l3gxxxx_int_types_t
Interrupt types.
Definition l3gxxxx.h:1218
int l3gxxxx_data_ready(const l3gxxxx_t *dev)
Data ready status function.
l3gxxxx_int_pin_level_t
INT1, INT2/DRDY sensor signal activity level
Definition l3gxxxx.h:1337
int l3gxxxx_read_raw_fifo(const l3gxxxx_t *dev, l3gxxxx_raw_data_fifo_t raw)
Get all samples of raw output data stored in the FIFO.
int l3gxxxx_power_up(l3gxxxx_t *dev)
Power up the sensor.
int l3gxxxx_select_output_filter(l3gxxxx_t *dev, l3gxxxx_filter_sel_t filter)
Filter selection for raw output data.
l3gxxxx_hpf_mode_t
HPF (high pass filter) modes.
Definition l3gxxxx.h:1197
int l3gxxxx_enable_int(const l3gxxxx_t *dev, l3gxxxx_int_types_t mask, bool enable)
Enable or disable event and/or data interrupts on signal INT1 and INT2/DRDY
l3gxxxx_filter_sel_t
High pass filter (HPF) and low pass filter 2 (LPF2) selection.
Definition l3gxxxx.h:1185
l3gxxxx_scale_t
Full scale in degrees per second (dps)
Definition l3gxxxx.h:1096
int l3gxxxx_init(l3gxxxx_t *dev, const l3gxxxx_params_t *params)
Initialize the L3Gxxxx sensor device.
int l3gxxxx_reg_read(const l3gxxxx_t *dev, uint8_t reg, uint8_t *data, uint8_t len)
Direct read from register.
l3gxxxx_data_t l3gxxxx_data_fifo_t[32]
Angular rates FIFO type.
Definition l3gxxxx.h:1376
int l3gxxxx_sleep(l3gxxxx_t *dev)
Sleep mode.
int l3gxxxx_set_int_event_cfg(const l3gxxxx_t *dev, const l3gxxxx_int_event_cfg_t *cfg)
Set new configuration for event interrupt generation.
l3gxxxx_fifo_mode_t
FIFO mode.
Definition l3gxxxx.h:1108
int l3gxxxx_set_hpf_ref(const l3gxxxx_t *dev, int8_t ref)
Set HPF (high pass filter) reference.
l3gxxxx_int_src_t l3gxxxx_wait_int(l3gxxxx_t *dev)
Wait for event and/or data interrupts on signals INT1 and INT2/DRDY
int l3gxxxx_read_fifo(const l3gxxxx_t *dev, l3gxxxx_data_fifo_t data)
Get all samples of angular rates stored in the FIFO (unit mdps)
int l3gxxxx_config_hpf(const l3gxxxx_t *dev, l3gxxxx_hpf_mode_t mode, uint8_t cutoff)
Config HPF (high pass filter) for output data.
l3gxxxx_if_t
L3Gxxxx interface types.
Definition l3gxxxx.h:1381
l3gxxxx_int_pin_type_t
INT1, INT2/DRDY sensor signal type
Definition l3gxxxx.h:1345
int l3gxxxx_power_down(l3gxxxx_t *dev)
Power down the sensor.
int l3gxxxx_read_raw(const l3gxxxx_t *dev, l3gxxxx_raw_data_t *raw)
Read last sample of raw output data as 16 bit two's complements.
int l3gxxxx_get_hpf_ref(const l3gxxxx_t *dev, int8_t *ref)
Get HPF (high pass filter) reference.
int l3gxxxx_set_fifo_mode(l3gxxxx_t *dev, l3gxxxx_fifo_mode_t mode, uint8_t watermark)
Set FIFO mode and watermark level (threshold)
l3gxxxx_raw_data_t l3gxxxx_raw_data_fifo_t[32]
Raw output data FIFO type.
Definition l3gxxxx.h:1371
l3gxxxx_error_codes_t
Definition of error codes.
Definition l3gxxxx.h:1004
int l3gxxxx_wake_up(l3gxxxx_t *dev)
Wake-up the sensor.
l3gxxxx_odr_t
Sensor output data rates (ODR) and LPF2 cutoff frequencies.
Definition l3gxxxx.h:1064
int l3gxxxx_get_int_event_cfg(const l3gxxxx_t *dev, l3gxxxx_int_event_cfg_t *cfg)
Get current configuration of event interrupt generation.
int l3gxxxx_set_scale(l3gxxxx_t *dev, l3gxxxx_scale_t scale)
Set full scale.
@ L3GXXXX_INT_FIFO_OVERRUN
Data interrupt on signal INT2/DRDY: FIFO is completely filled.
Definition l3gxxxx.h:1231
@ L3GXXXX_INT_EVENT
Event interrupt on signal INT1: Angular rate of one or more axes is lower or higher than the configur...
Definition l3gxxxx.h:1240
@ L3GXXXX_INT_FIFO_EMPTY
Data interrupt on signal INT2/DRDY: FIFO becomes empty.
Definition l3gxxxx.h:1235
@ L3GXXXX_INT_DATA_READY
Data interrupt on signal INT2/DRDY: Output data are ready to be read.
Definition l3gxxxx.h:1222
@ L3GXXXX_INT_FIFO_WATERMARK
Data interrupt on signal INT2/DRDY: FIFO filling exceeds the watermark level (threshold)
Definition l3gxxxx.h:1227
@ L3GXXXX_HIGH
INT signals are High active (default)
Definition l3gxxxx.h:1338
@ L3GXXXX_LOW
INT signals are Low active.
Definition l3gxxxx.h:1339
@ L3GXXXX_HPF_AUTORESET
Autoreset mode, HPF is automatically reset when a configured event interrupt occurs.
Definition l3gxxxx.h:1202
@ L3GXXXX_HPF_REFERENCE
Reference mode, output data are the difference to the REFERENCE register.
Definition l3gxxxx.h:1200
@ L3GXXXX_HPF_NORMAL
Normal mode, HPF is reset by reading the REFERENCE register.
Definition l3gxxxx.h:1198
@ L3GXXXX_NO_FILTER
HPF not used, LPF2 not used (default)
Definition l3gxxxx.h:1186
@ L3GXXXX_HPF_ONLY
HPF used, LPF2 not used.
Definition l3gxxxx.h:1187
@ L3GXXXX_HPF_AND_LPF2
HPF used, LPF2 used.
Definition l3gxxxx.h:1189
@ L3GXXXX_LPF2_ONLY
HPF not used, LPF2 used.
Definition l3gxxxx.h:1188
@ L3GXXXX_SCALE_2000_DPS
2000 dps
Definition l3gxxxx.h:1099
@ L3GXXXX_SCALE_245_DPS
245 dps (default)
Definition l3gxxxx.h:1097
@ L3GXXXX_SCALE_500_DPS
500 dps
Definition l3gxxxx.h:1098
@ L3GXXXX_STREAM_TO_FIFO
FIFO is used in Stream mode until an interrupt, switches then to FIFO mode (L3GD20H and L3GD20 only)
Definition l3gxxxx.h:1116
@ L3GXXXX_STREAM
FIFO is used as ring buffer and newest data samples are stored continuously.
Definition l3gxxxx.h:1113
@ L3GXXXX_DYNAMIC_STREAM
like Stream mode, but differs in reading the first data sample after emptying (L3GD20H only)
Definition l3gxxxx.h:1124
@ L3GXXXX_BYPASS_TO_FIFO
FIFO is not used until an interrupt, switches then to FIFO mode (L3GD20H only)
Definition l3gxxxx.h:1127
@ L3GXXXX_BYPASS
FIFO is not used (default)
Definition l3gxxxx.h:1109
@ L3GXXXX_BYPASS_TO_STREAM
FIFO is not used until an interrupt, switches then to Stream mode (L3GD20H and L3GD20 only)
Definition l3gxxxx.h:1119
@ L3GXXXX_FIFO
Data samples are stored in the FIFO until it is full.
Definition l3gxxxx.h:1111
@ L3GXXXX_SPI
SPI interface used.
Definition l3gxxxx.h:1386
@ L3GXXXX_I2C
I2C interface used.
Definition l3gxxxx.h:1383
@ L3GXXXX_OPEN_DRAIN
INT pins are open-drain.
Definition l3gxxxx.h:1347
@ L3GXXXX_PUSH_PULL
INT pins are push/pull outputs (default)
Definition l3gxxxx.h:1346
@ L3GXXXX_ERROR_BYPASS_MODE
sensor is in bypass mode
Definition l3gxxxx.h:1018
@ L3GXXXX_ERROR_I2C
I2C communication error.
Definition l3gxxxx.h:1006
@ L3GXXXX_ERROR_INV_INT_TYPE
invalid interrupt type used
Definition l3gxxxx.h:1012
@ L3GXXXX_ERROR_WRONG_CHIP_ID
wrong chip id read from WHO_AM_I reg
Definition l3gxxxx.h:1008
@ L3GXXXX_ERROR_RAW_DATA_FIFO
reading raw output data from FIFO failed
Definition l3gxxxx.h:1015
@ L3GXXXX_ERROR_SPI
SPI communication error.
Definition l3gxxxx.h:1007
@ L3GXXXX_ERROR_NO_INT1_PIN
INT1 signal pin not configured
Definition l3gxxxx.h:1016
@ L3GXXXX_ERROR_INV_MODE
sensor mode is invalid or not available
Definition l3gxxxx.h:1010
@ L3GXXXX_ERROR_FIFO_MODE
sensor is in FIFO mode
Definition l3gxxxx.h:1019
@ L3GXXXX_ERROR_INV_DEV
invalid device type used
Definition l3gxxxx.h:1009
@ L3GXXXX_OK
success
Definition l3gxxxx.h:1005
@ L3GXXXX_ERROR_NO_INT2_PIN
INT2/DRDY signal pin not configured
Definition l3gxxxx.h:1017
@ L3GXXXX_ERROR_RAW_DATA
reading raw output data failed
Definition l3gxxxx.h:1014
@ L3GXXXX_ERROR_INV_FIFO_MODE
FIFO mode is invalid or not available.
Definition l3gxxxx.h:1011
@ L3GXXXX_ERROR_NO_NEW_DATA
no new data are available
Definition l3gxxxx.h:1013
@ L3GXXXX_ODR_800_35
High ODR 400 Hz, LPF1 cutoff 211 Hz, LPF2 cutoff 35 Hz.
Definition l3gxxxx.h:1076
@ L3GXXXX_ODR_400_110
High ODR 400 Hz, LPF1 cutoff 128 Hz, LPF2 cutoff 110 Hz.
Definition l3gxxxx.h:1074
@ L3GXXXX_ODR_50
Low ODR 50 Hz, LPF1 cutoff 16 Hz, LPF2 cutoff 16.6 Hz.
Definition l3gxxxx.h:1082
@ L3GXXXX_ODR_800_50
High ODR 400 Hz, LPF1 cutoff 211 Hz, LPF2 cutoff 50 Hz.
Definition l3gxxxx.h:1077
@ L3GXXXX_ODR_200_12
High ODR 200 Hz, LPF1 cutoff 63.3 Hz, LPF2 cutoff 12.5 Hz.
Definition l3gxxxx.h:1067
@ L3GXXXX_ODR_800_30
High ODR 400 Hz, LPF1 cutoff 211 Hz, LPF2 cutoff 30 Hz.
Definition l3gxxxx.h:1075
@ L3GXXXX_ODR_200_70
High ODR 200 Hz, LPF1 cutoff 63.3 Hz, LPF2 cutoff 70 Hz.
Definition l3gxxxx.h:1070
@ L3GXXXX_ODR_400_25
High ODR 400 Hz, LPF1 cutoff 128 Hz, LPF2 cutoff 25 Hz.
Definition l3gxxxx.h:1072
@ L3GXXXX_ODR_400_20
High ODR 400 Hz, LPF1 cutoff 128 Hz, LPF2 cutoff 20 Hz.
Definition l3gxxxx.h:1071
@ L3GXXXX_ODR_100_12
High ODR 100 Hz, LPF1 cutoff 32 Hz, LPF2 cutoff 12.5 Hz.
Definition l3gxxxx.h:1065
@ L3GXXXX_ODR_12
Low ODR 12.5 Hz, LPF1 cutoff 3.9 Hz, LPF2 not used.
Definition l3gxxxx.h:1080
@ L3GXXXX_ODR_200_50
High ODR 200 Hz, LPF1 cutoff 63.3 Hz, LPF2 cutoff 50 Hz.
Definition l3gxxxx.h:1069
@ L3GXXXX_ODR_800_100
High ODR 400 Hz, LPF1 cutoff 211 Hz, LPF2 cutoff 100 Hz.
Definition l3gxxxx.h:1078
@ L3GXXXX_ODR_200_25
High ODR 200 Hz, LPF1 cutoff 63.3 Hz, LPF2 cutoff 25 Hz.
Definition l3gxxxx.h:1068
@ L3GXXXX_ODR_25
Low ODR 25 Hz, LPF1 cutoff 7.8 Hz, LPF2 not used.
Definition l3gxxxx.h:1081
@ L3GXXXX_ODR_400_50
High ODR 400 Hz, LPF1 cutoff 128 Hz, LPF2 cutoff 50 Hz.
Definition l3gxxxx.h:1073
@ L3GXXXX_ODR_100_25
High ODR 100 Hz, LPF1 cutoff 32 Hz, LPF2 cutoff 25 Hz.
Definition l3gxxxx.h:1066
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
Register definitions for ST L3Gxxxx 3-axis gyroscope sensor family.
#define L3GXXXX_INT2_WTM
L3GXXXX_REG_CTRL3<2>
#define L3GXXXX_INT2_ORUN
L3GXXXX_REG_CTRL3<1>
#define L3GXXXX_INT2_EMPTY
L3GXXXX_REG_CTRL3<0>
#define L3GXXXX_INT2_DRDY
L3GXXXX_REG_CTRL3<3>
#define L3GXXXX_INT1_IG
L3GXXXX_REG_CTRL3<7>
Mutex for thread synchronization.
Low-level SPI peripheral driver interface definition.
Angular rates in millidegrees per seconds (mdps)
Definition l3gxxxx.h:1362
int32_t z
Z angular rate (yaw)
Definition l3gxxxx.h:1365
int32_t y
Y angular rate (pitch)
Definition l3gxxxx.h:1364
int32_t x
X angular rate (roll)
Definition l3gxxxx.h:1363
L3Gxxxx I2C interface parameters.
Definition l3gxxxx.h:1394
i2c_t dev
I2C device used.
Definition l3gxxxx.h:1395
uint8_t addr
I2C slave address.
Definition l3gxxxx.h:1396
L3Gxxxx Hardware interface parameters union.
Definition l3gxxxx.h:1414
l3gxxxx_spi_params_t spi
SPI interface parameters.
Definition l3gxxxx.h:1421
l3gxxxx_i2c_params_t i2c
I2C interface parameters.
Definition l3gxxxx.h:1418
l3gxxxx_if_t type
I2C/SPI interface type selector.
Definition l3gxxxx.h:1415
Event interrupt generator configuration (axis movement and wake-up)
Definition l3gxxxx.h:1259
bool y_low_enabled
Interrupt enabled for |Y| < Y threshold (Y low event)
Definition l3gxxxx.h:1267
bool counter_mode
DCRM is not documented and not used therefore.
Definition l3gxxxx.h:1286
bool z_high_enabled
Interrupt enabled for |Z| > Z threshold (Y high event)
Definition l3gxxxx.h:1271
uint16_t x_threshold
X threshold value in full scale / INT16_MAX.
Definition l3gxxxx.h:1260
bool x_high_enabled
Interrupt enabled for |X| > X threshold (X high event)
Definition l3gxxxx.h:1265
l3gxxxx_filter_sel_t filter
HPF and LPF2 filter selection used for threshold comparison.
Definition l3gxxxx.h:1273
bool y_high_enabled
Interrupt enabled for |Y| > Y threshold (Y high event)
Definition l3gxxxx.h:1268
bool latch
Latch the interrupt when true until the interrupt source has been read by function l3gxxxx_wait_int.
Definition l3gxxxx.h:1279
bool and_or
Combination of interrupt events (true=AND, false=OR): AND - all enabled axes passed their thresholds...
Definition l3gxxxx.h:1276
uint16_t z_threshold
Z threshold value in full scale / INT16_MAX.
Definition l3gxxxx.h:1262
bool wait
When true, duration is also used when interrupt condition in no longer given before interrupt signal ...
Definition l3gxxxx.h:1283
bool z_low_enabled
Interrupt enabled for |Z| < Z threshold (Z low event)
Definition l3gxxxx.h:1270
uint16_t y_threshold
Y threshold value in full scale / INT16_MAX.
Definition l3gxxxx.h:1261
uint8_t duration
Duration in 1/ODR an interrupt condition has to be given before the interrupt is generated.
Definition l3gxxxx.h:1281
bool x_low_enabled
Interrupt enabled for |X| < X threshold (X low event)
Definition l3gxxxx.h:1264
Composite type for all possible interrupt sources.
Definition l3gxxxx.h:1329
l3gxxxx_int_data_src_t data
data interrupt sources
Definition l3gxxxx.h:1331
l3gxxxx_int_event_src_t event
event interrupt sources
Definition l3gxxxx.h:1330
L3Gxxxx device initialization parameters.
Definition l3gxxxx.h:1429
gpio_t int1_pin
MCU GPIO pin for event interrupts on signal INT1
Definition l3gxxxx.h:1451
uint8_t hpf_cutoff
HPF cutoff frequency 0..9, see l3gxxxx_config_hpf for details.
Definition l3gxxxx.h:1437
gpio_t int2_pin
MCU GPIO pin for data interrupts on signal INT2/DRDY pin.
Definition l3gxxxx.h:1445
uint8_t fifo_watermark
FIFO watermark setting 0..31.
Definition l3gxxxx.h:1441
l3gxxxx_scale_t scale
Full scale.
Definition l3gxxxx.h:1433
l3gxxxx_if_params_t if_params
Interface parameters (I2C/SPI)
Definition l3gxxxx.h:1430
l3gxxxx_fifo_mode_t fifo_mode
FIFO operation mode.
Definition l3gxxxx.h:1440
l3gxxxx_filter_sel_t filter_sel
HPF/LPF2 filter selection.
Definition l3gxxxx.h:1435
l3gxxxx_int_event_cfg_t int1_cfg
event interrupt parameters
Definition l3gxxxx.h:1450
l3gxxxx_odr_t odr
ODR and LPF2 cutoff frequency.
Definition l3gxxxx.h:1432
l3gxxxx_hpf_mode_t hpf_mode
HPF mode.
Definition l3gxxxx.h:1436
Raw output data set as two's complements.
Definition l3gxxxx.h:1353
int16_t z
Z angular rate (yaw) as 16 bit two's complements.
Definition l3gxxxx.h:1356
int16_t x
X angular rate (roll) as 16 bit two's complements.
Definition l3gxxxx.h:1354
int16_t y
Y angular rate (pitch) as 16 bit two's complements.
Definition l3gxxxx.h:1355
L3Gxxxx SPI interface parameters.
Definition l3gxxxx.h:1404
spi_t dev
SPI device used.
Definition l3gxxxx.h:1405
spi_clk_t clk
SPI clock speed.
Definition l3gxxxx.h:1406
gpio_t cs
SPI chip Select pin.
Definition l3gxxxx.h:1407
L3Gxxxx sensor device data structure type.
Definition l3gxxxx.h:1460
mutex_t int_lock
Used to lock the calling thread while waiting for an interrupt.
Definition l3gxxxx.h:1463
l3gxxxx_int_types_t int_type
Type of the last interrupt triggered.
Definition l3gxxxx.h:1462
@ L3GD20H
Sensor detected at runtime.
Definition l3gxxxx.h:1466
@ L3GD20
L3GD20 detected.
Definition l3gxxxx.h:1467
@ X3G42XXD
L3G400D, I3G4250D or A3G4250D detected.
Definition l3gxxxx.h:1468
l3gxxxx_params_t params
Device initialization parameters.
Definition l3gxxxx.h:1461
Mutex structure.
Definition mutex.h:36
Data interrupt sources (data ready and FIFO status)
Definition l3gxxxx.h:1310
uint8_t fifo_empty
true when FIFO is empty
Definition l3gxxxx.h:1312
uint8_t fifo_overrun
true when FIFO is completely filled
Definition l3gxxxx.h:1313
uint8_t unused
not used
Definition l3gxxxx.h:1316
uint8_t val
data interrupt sources as value that can be used for bitwise operations
Definition l3gxxxx.h:1318
uint8_t fifo_watermark
true when FIFO filling > watermark
Definition l3gxxxx.h:1314
uint8_t data_ready
true when data are ready to read
Definition l3gxxxx.h:1315
Event interrupt sources (axis movement and wake-up)
Definition l3gxxxx.h:1292
uint8_t y_low
true on |Y| < Y threshold (Y low event)
Definition l3gxxxx.h:1296
uint8_t y_high
true on |Y| > Y threshold (Y high event)
Definition l3gxxxx.h:1297
uint8_t z_low
true on |Z| < Z threshold (Z low event)
Definition l3gxxxx.h:1298
uint8_t val
event interrupt sources as value that can be used for bitwise operations
Definition l3gxxxx.h:1303
uint8_t x_low
true on |X| < X threshold (X low event)
Definition l3gxxxx.h:1294
uint8_t z_high
true on |Z| > Z threshold (Z high event)
Definition l3gxxxx.h:1299
uint8_t x_high
true on |X| > X threshold (X high event)
Definition l3gxxxx.h:1295
uint8_t active
true when one or more events have been generated
Definition l3gxxxx.h:1300
uint8_t unused
not used
Definition l3gxxxx.h:1301