l3gx - Driver for L3Gx(L3GD20/L3G4200D) 3-axis gyroscope sensors

group l3gx

ESP-IDF Driver for L3GDx: L3G4200D and L3GD20 3-axis gyroscope sensors.

Copyright (c) 2023 Jakub Turek qb4.dev@gmail.com

BSD Licensed as described in the file LICENSE

Defines

L3G4200D_I2C_ADDR_DEF

Default I2C address.

L3GD20_I2C_ADDR_DEF

Enums

enum l3gx_sensor_type_t

Sensor type.

Values:

enumerator L3GX_TYPE_L3G4200D
enumerator L3GX_TYPE_L3GD20
enumerator L3GX_TYPE_UNKNOWN
enum l3gx_scale_t

Scales.

Values:

enumerator L3GX_SCALE_250
enumerator L3GX_SCALE_500
enumerator L3GX_SCALE_2000
enum l3gx_drbw_t

Data rates and bandwith.

Values:

enumerator L3GX_DRBW_100_125
enumerator L3GX_DRBW_100_25a
enumerator L3GX_DRBW_100_25b
enumerator L3GX_DRBW_100_25c
enumerator L3GX_DRBW_200_125
enumerator L3GX_DRBW_200_25
enumerator L3GX_DRBW_200_50
enumerator L3GX_DRBW_200_70
enumerator L3GX_DRBW_400_20
enumerator L3GX_DRBW_400_25
enumerator L3GX_DRBW_400_50
enumerator L3GX_DRBW_400_110
enumerator L3GX_DRBW_800_30
enumerator L3GX_DRBW_800_35
enumerator L3GX_DRBW_800_50
enumerator L3GX_DRBW_800_110

Functions

esp_err_t l3gx_init_desc(l3gx_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)

Initialize device descriptor.

Parameters:
  • dev – Device descriptor

  • port – I2C port number

  • addr – I2C address

  • sda_gpio – SDA GPIO

  • scl_gpio – SCL GPIO

Returns:

ESP_OK on success

esp_err_t l3gx_free_desc(l3gx_t *dev)

Free device descriptor.

Parameters:

dev – Device descriptor

Returns:

ESP_OK on success

esp_err_t l3gx_init(l3gx_t *dev)

Initialize device.

Parameters:

dev – Device descriptor

Returns:

ESP_OK on success

esp_err_t l3gd20_get_chip_id(l3gx_t *dev, uint8_t *id)

Read chip ID.

Parameters:
  • dev – Device descriptor

  • id[out] Chip ID

Returns:

ESP_OK on success

esp_err_t l3gd20_set_scale(l3gx_t *dev, l3gx_scale_t scale)

Set scaling factor.

Parameters:
  • dev – Device descriptor

  • scale[in] Scale factor

Returns:

ESP_OK on success

esp_err_t l3gd20_set_datarate_and_bandwith(l3gx_t *dev, l3gx_drbw_t drbw)

Set data rate and bandwith.

Parameters:
  • dev – Device descriptor

  • drbw[in] Data rate and bandwidth setup

Returns:

ESP_OK on success

esp_err_t l3gx_data_ready(l3gx_t *dev, bool *ready)

Get gyro data state.

Parameters:
  • dev – Device descriptor

  • ready[out] Gyro data ready to read if true

Returns:

ESP_OK on success

esp_err_t l3gx_get_raw_data(l3gx_t *dev, l3gx_raw_data_t *raw)

Read raw gyro data.

Parameters:
  • dev – Device descriptor

  • raw[out] Raw gyro data

Returns:

ESP_OK on success

esp_err_t l3gd20_raw_to_dps(l3gx_t *dev, l3gx_raw_data_t *raw, l3gx_data_t *data)

Convert raw gyro data to dps [degrees per second].

Parameters:
  • dev – Device descriptor

  • raw[in] Raw gyro data

  • data[out] Gyro data in dps

Returns:

ESP_OK on success

esp_err_t l3gx_get_data(l3gx_t *dev, l3gx_data_t *data)

Read gyro data in degrees per second.

Parameters:
  • dev – Device descriptor

  • data[out] Gyro data in dps

Returns:

ESP_OK on success

esp_err_t l3gx_get_raw_temp(l3gx_t *dev, int16_t *temp)

Read raw temperature data (see datasheet)

Parameters:
  • dev – Device descriptor

  • temp[out] Raw temperature data

Returns:

ESP_OK on success

struct l3gx_raw_data_t
#include <l3gx.h>

Raw measurement result.

struct l3gx_data_t
#include <l3gx.h>

Measurement result, degrees per second.

struct l3gx_t
#include <l3gx.h>

Device descriptor.