LSM6DSL 3D accelerometer/gyroscope

Device driver for the LSM6DSL 3D accelerometer/gyroscope.

This driver provides [S]ensor [A]ctuator [U]ber [L]ayer capabilities.

enum @127
LSM6DSL_DATA_RATE_POWER_DOWN = 0x0
LSM6DSL_DATA_RATE_1_6HZ = 0xB
LSM6DSL_DATA_RATE_12_5HZ = 0x1
LSM6DSL_DATA_RATE_26HZ = 0x2
LSM6DSL_DATA_RATE_52HZ = 0x3
LSM6DSL_DATA_RATE_104HZ = 0x4
LSM6DSL_DATA_RATE_208HZ = 0x5
LSM6DSL_DATA_RATE_416HZ = 0x6
LSM6DSL_DATA_RATE_833HZ = 0x7
LSM6DSL_DATA_RATE_1_66KHZ = 0x8
LSM6DSL_DATA_RATE_3_33KHZ = 0x9
LSM6DSL_DATA_RATE_6_66KHZ = 0xa
enum @128
LSM6DSL_DECIMATION_NOT_IN_FIFO = 0
LSM6DSL_DECIMATION_NO
LSM6DSL_DECIMATION_2
LSM6DSL_DECIMATION_3
LSM6DSL_DECIMATION_4
LSM6DSL_DECIMATION_8
LSM6DSL_DECIMATION_16
LSM6DSL_DECIMATION_32
enum @129
LSM6DSL_ACC_FS_2G = 0
LSM6DSL_ACC_FS_16G
LSM6DSL_ACC_FS_4G
LSM6DSL_ACC_FS_8G
LSM6DSL_ACC_FS_MAX
enum @130
LSM6DSL_GYRO_FS_245DPS = 0
LSM6DSL_GYRO_FS_500DPS
LSM6DSL_GYRO_FS_1000DPS
LSM6DSL_GYRO_FS_2000DPS
LSM6DSL_GYRO_FS_MAX
enum @131
LSM6DSL_OK = 0
all good
LSM6DSL_ERROR_BUS
I2C bus error.
LSM6DSL_ERROR_CNF
Config error.
LSM6DSL_ERROR_DEV
device error
int lsm6dsl_init(lsm6dsl_t * dev, const lsm6dsl_params_t * params)

Initialize a LSM6DSL device.

Parameters

dev:device to initialize
params:driver parameters

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_read_acc(const lsm6dsl_t * dev, lsm6dsl_3d_data_t * data)

Read accelerometer data.

Parameters

dev:device to read
data:accelerometer values

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_read_gyro(const lsm6dsl_t * dev, lsm6dsl_3d_data_t * data)

Read gyroscope data.

Parameters

dev:device to read
data:gyroscope values

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_read_temp(const lsm6dsl_t * dev, int16_t * data)

Read temperature data.

Note

To avoid floating point data types but still provide high resolution for temperature readings, resulting values are scale by factor 100.

Parameters

dev:device to read
data:temperature value, in °C x 100

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_acc_power_down(const lsm6dsl_t * dev)

Power down accelerometer.

Parameters

dev:device to power down

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_gyro_power_down(const lsm6dsl_t * dev)

Power down gyroscope.

Parameters

dev:device to power down

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_acc_power_up(const lsm6dsl_t * dev)

Power up accelerometer.

Parameters

dev:device to power up

Return values

  • LSM6DSL_OK on success
  • < 0 on error
int lsm6dsl_gyro_power_up(const lsm6dsl_t * dev)

Power up gyroscope.

Parameters

dev:device to power up

Return values

  • LSM6DSL_OK on success
  • < 0 on error
struct lsm6dsl_params_t

LSM6DSL driver parameters.

i2c.h::i2c_t i2c

i2c bus

uint8_t addr

i2c address

uint8_t acc_odr

accelerometer output data rate

uint8_t gyro_odr

gyroscope output data rate

uint8_t acc_fs

accelerometer full scale

uint8_t gyro_fs

gyroscope full scale

uint8_t acc_decimation

accelerometer decimation

uint8_t gyro_decimation

gyroscope decimation

struct lsm6dsl_t

LSM6DSL device descriptor.

lsm6dsl_params_t params

driver parameters

struct lsm6dsl_3d_data_t

3D output data

int16_t x

X axis.

int16_t y

Y axis.

int16_t z

Z axis.