71 lines
2.5 KiB
C
71 lines
2.5 KiB
C
#ifndef IMS_IMU_LSM6DSL_H
|
|
#define IMS_IMU_LSM6DSL_H
|
|
|
|
#include "imsensors/common/sensors_common.h"
|
|
|
|
typedef enum {
|
|
IMS_LSM6DSL_XL_ODR_POWER_DOWN = 0x00U, /* Power Down */
|
|
IMS_LSM6DSL_XL_ODR_1_6_HZ = 0x0BU | (1U << 4U), /* 1.6Hz, low power mode only */
|
|
IMS_LSM6DSL_XL_ODR_12_5_HZ = 0x01U, /* 12.5Hz */
|
|
IMS_LSM6DSL_XL_ODR_26_HZ = 0x02U, /* 26Hz */
|
|
IMS_LSM6DSL_XL_ODR_52_HZ = 0x03U, /* 52Hz */
|
|
IMS_LSM6DSL_XL_ODR_104_HZ = 0x04U, /* 104Hz */
|
|
IMS_LSM6DSL_XL_ODR_208_HZ = 0x05U, /* 208Hz */
|
|
IMS_LSM6DSL_XL_ODR_416_HZ = 0x06U, /* 416Hz */
|
|
IMS_LSM6DSL_XL_ODR_833_HZ = 0x07U, /* 833Hz */
|
|
IMS_LSM6DSL_XL_ODR_1_66_KHZ = 0x08U, /* 1.66kHz */
|
|
IMS_LSM6DSL_XL_ODR_3_33_KHZ = 0x09U, /* 3.3kHz */
|
|
IMS_LSM6DSL_XL_ODR_6_66_KHZ = 0x0AU, /* 6.66kHz */
|
|
} ims_lsm6dsl_xl_odr_t;
|
|
|
|
typedef enum {
|
|
IMS_LSM6DSL_GYRO_ODR_POWER_DOWN = 0x00U, /* Power down */
|
|
IMS_LSM6DSL_GYRO_ODR_12_5_HZ = 0x01U, /* 12.5Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_26_HZ = 0x02U, /* 26Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_52_HZ = 0x03U, /* 52Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_104_HZ = 0x04U, /* 104Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_208_HZ = 0x05U, /* 208Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_416_HZ = 0x06U, /* 416Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_833_HZ = 0x07U, /* 833Hz */
|
|
IMS_LSM6DSL_GYRO_ODR_1_66_KHZ = 0x08U, /* 1.66kHz */
|
|
IMS_LSM6DSL_GYRO_ODR_3_33_KHZ = 0x09U, /* 3.33kHz */
|
|
IMS_LSM6DSL_GYRO_ODR_6_66_KHZ = 0x0AU, /* 6.66kHz */
|
|
} ims_lsm6dsl_gyro_odr_t;
|
|
|
|
typedef enum {
|
|
IMS_LSM6DSL_XL_LPF_BW_0 = 0x00U,
|
|
IMS_LSM6DSL_XL_LPF_BW_1 = 0x01U,
|
|
IMS_LSM6DSL_XL_LPF_BW_2 = 0x02U,
|
|
IMS_LSM6DSL_XL_LPF_BW_3 = 0x03U,
|
|
} ims_lsm6dsl_xl_lpf_config_t;
|
|
|
|
typedef struct {
|
|
ims_lsm6dsl_xl_odr_t odr;
|
|
ims_lsm6dsl_xl_lpf_config_t lpf_config;
|
|
} ims_lsm6dsl_xl_config_t;
|
|
|
|
typedef struct {
|
|
ims_lsm6dsl_gyro_odr_t odr;
|
|
} ims_lsm6dsl_gyro_config_t;
|
|
|
|
typedef struct {
|
|
ims_lsm6dsl_xl_config_t xl_config;
|
|
ims_lsm6dsl_gyro_config_t gyro_config;
|
|
} ims_lsm6dsl_config_t;
|
|
|
|
typedef struct {
|
|
ims_i2c_xfer_t i2c_xfer;
|
|
ims_delay_t delay;
|
|
} ims_lsm6dsl_cb_t;
|
|
|
|
typedef struct {
|
|
void *pdev;
|
|
ims_lsm6dsl_cb_t cb;
|
|
} ims_lsm6dsl_t;
|
|
|
|
ims_ret_t ims_lsm6dsl_init(ims_lsm6dsl_t *imu);
|
|
ims_ret_t ims_lsm6dsl_config(ims_lsm6dsl_t *imu, ims_lsm6dsl_config_t *config);
|
|
ims_ret_t ims_lsm6dsl_read_temperature(ims_lsm6dsl_t *imu, int16_t *temp);
|
|
|
|
#endif // IMS_IMU_LSM6DSL_H
|