Device Driver for ST L3Gxxxx 3-axis gyroscope sensor family. More...
Device Driver for ST L3Gxxxx 3-axis gyroscope sensor family.
Definition in file l3gxxxx.h.
#include <stdbool.h>
#include <stdint.h>
#include "mutex.h"
#include "periph/gpio.h"
#include "periph/i2c.h"
#include "periph/spi.h"
#include "l3gxxxx_regs.h"
Go to the source code of this file.
Data Structures | |
struct | l3gxxxx_int_event_cfg_t |
Event interrupt generator configuration (axis movement and wake-up) More... | |
union | l3gxxxx_int_event_src_t |
Event interrupt sources (axis movement and wake-up) More... | |
union | l3gxxxx_int_data_src_t |
Data interrupt sources (data ready and FIFO status) More... | |
struct | l3gxxxx_int_src_t |
Composite type for all possible interrupt sources. More... | |
struct | l3gxxxx_raw_data_t |
Raw output data set as two's complements. More... | |
struct | l3gxxxx_data_t |
Angular rates in millidegrees per seconds (mdps) More... | |
struct | l3gxxxx_i2c_params_t |
L3Gxxxx I2C interface parameters. More... | |
struct | l3gxxxx_spi_params_t |
L3Gxxxx SPI interface parameters. More... | |
struct | l3gxxxx_if_params_t |
L3Gxxxx Hardware interface parameters union. More... | |
struct | l3gxxxx_params_t |
L3Gxxxx device initialization parameters. More... | |
struct | l3gxxxx_t |
L3Gxxxx sensor device data structure type. More... | |
Macros | |
#define | L3GXXXX_INT_DATA |
Data interrupts (Data ready and FIFO status) | |
Typedefs | |
typedef l3gxxxx_raw_data_t | l3gxxxx_raw_data_fifo_t[32] |
Raw output data FIFO type. | |
typedef l3gxxxx_data_t | l3gxxxx_data_fifo_t[32] |
Angular rates FIFO type. | |
L3Gxxxx addresses | |
#define | L3GXXXX_I2C_ADDR_1 (0x68) |
SDO pin is low. | |
#define | L3GXXXX_I2C_ADDR_2 (0x69) |
SDO pin is high. | |
L3Gxxxx chip ids | |
#define | L3GXXXX_CHIP_ID_L3GD20H (0xd7) |
Chip ID for L3GD20H. | |
#define | L3GXXXX_CHIP_ID_L3GD20 (0xd4) |
Chip ID for L3GD20. | |
#define | L3GXXXX_CHIP_ID_X3G42XXD (0xd3) |
Chip ID for L3G4200D, I3G4250D, A3G4250D. | |
Sensor initialization and configuration | |
int | l3gxxxx_init (l3gxxxx_t *dev, const l3gxxxx_params_t *params) |
Initialize the L3Gxxxx sensor device. | |
int | l3gxxxx_set_mode (l3gxxxx_t *dev, l3gxxxx_odr_t odr, bool x, bool y, bool z) |
Set sensor mode. | |
int | l3gxxxx_set_scale (l3gxxxx_t *dev, l3gxxxx_scale_t scale) |
Set full scale. | |
Power saving functions | |
int | l3gxxxx_power_down (l3gxxxx_t *dev) |
Power down the sensor. | |
int | l3gxxxx_power_up (l3gxxxx_t *dev) |
Power up the sensor. | |
int | l3gxxxx_sleep (l3gxxxx_t *dev) |
Sleep mode. | |
int | l3gxxxx_wake_up (l3gxxxx_t *dev) |
Wake-up the sensor. | |
Basic sensor data handling | |
int | l3gxxxx_data_ready (const l3gxxxx_t *dev) |
Data ready status function. | |
int | l3gxxxx_read (const l3gxxxx_t *dev, l3gxxxx_data_t *data) |
Read last sample of angular rates in millidegree per second (mpds) | |
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. | |
FIFO handling | |
int | l3gxxxx_set_fifo_mode (l3gxxxx_t *dev, l3gxxxx_fifo_mode_t mode, uint8_t watermark) |
Set FIFO mode and watermark level (threshold) | |
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_read_raw_fifo (const l3gxxxx_t *dev, l3gxxxx_raw_data_fifo_t raw) |
Get all samples of raw output data stored in the FIFO. | |
Filter configuration and handling | |
int | l3gxxxx_select_output_filter (l3gxxxx_t *dev, l3gxxxx_filter_sel_t filter) |
Filter selection for raw output data. | |
int | l3gxxxx_config_hpf (const l3gxxxx_t *dev, l3gxxxx_hpf_mode_t mode, uint8_t cutoff) |
Config HPF (high pass filter) for output data. | |
int | l3gxxxx_set_hpf_ref (const l3gxxxx_t *dev, int8_t ref) |
Set HPF (high pass filter) reference. | |
int | l3gxxxx_get_hpf_ref (const l3gxxxx_t *dev, int8_t *ref) |
Get HPF (high pass filter) reference. | |
Interrupt configuration and handling | |
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_int_src_t | l3gxxxx_wait_int (l3gxxxx_t *dev) |
Wait for event and/or data interrupts on signals INT1 and INT2/DRDY | |
int | l3gxxxx_set_int_event_cfg (const l3gxxxx_t *dev, const l3gxxxx_int_event_cfg_t *cfg) |
Set new configuration for event interrupt generation. | |
int | l3gxxxx_get_int_event_cfg (const l3gxxxx_t *dev, l3gxxxx_int_event_cfg_t *cfg) |
Get current configuration of event interrupt generation. | |
Low level interface functions | |
int | l3gxxxx_reg_write (const l3gxxxx_t *dev, uint8_t reg, const uint8_t *data, uint8_t len) |
Direct write to register. | |
int | l3gxxxx_reg_read (const l3gxxxx_t *dev, uint8_t reg, uint8_t *data, uint8_t len) |
Direct read from register. | |