74 lines
2.0 KiB
C
74 lines
2.0 KiB
C
/*
|
|
* Copyright (c) 2018 Philémon Jaermann
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef __SENSOR_LSM303DLHC_ACCEL_
|
|
#define __SENSOR_LSM303DLHC_ACCEL_
|
|
|
|
|
|
#define LSM303_DLHC_ACCEL_X_EN_BIT BIT(0)
|
|
#define LSM303DLHC_ACCEL_Y_EN_BIT BIT(1)
|
|
#define LSM303DLHC_ACCEL_Z_EN_BIT BIT(2)
|
|
#define LSM303DLHC_ACCEL_EN_BITS (LSM303_DLHC_ACCEL_X_EN_BIT | \
|
|
LSM303DLHC_ACCEL_Y_EN_BIT | \
|
|
LSM303DLHC_ACCEL_Z_EN_BIT)
|
|
|
|
#if (CONFIG_LSM303DLHC_ACCEL_POWER_MODE == 0)
|
|
#define LSM303DLHC_LP_EN_BIT 0
|
|
#elif (CONFIG_LSM303DLHC_ACCEL_POWER_MODE == 1)
|
|
#define LSM303DLHC_LP_EN_BIT BIT(3)
|
|
#endif
|
|
|
|
#define LSM303DLHC_ACCEL_ODR_SHIFT 4
|
|
#define LSM303DLHC_ACCEL_ODR_MASK 0xF0
|
|
#define LSM303DLHC_ACCEL_ODR_BITS (CONFIG_LSM303DLHC_ACCEL_ODR << \
|
|
LSM303DLHC_ACCEL_ODR_SHIFT)
|
|
|
|
#if (CONFIG_LSM303DLHC_ACCEL_RANGE == 0)
|
|
#define LSM303DLHC_ACCEL_SCALE 1
|
|
#elif (CONFIG_LSM303DLHC_ACCEL_RANGE == 1)
|
|
#define LSM303DLHC_ACCEL_SCALE 2
|
|
#elif (CONFIG_LSM303DLHC_ACCEL_RANGE == 2)
|
|
#define LSM303DLHC_ACCEL_SCALE 4
|
|
#elif (CONFIG_LSM303DLHC_ACCEL_RANGE == 3)
|
|
#define LSM303DLHC_ACCEL_SCALE 12
|
|
#endif
|
|
|
|
#define LSM303DLHC_ACCEL_AUTO_INC_ADDR BIT(7)
|
|
#define LSM303DLHC_ACCEL_FS_SHIFT 4
|
|
#define LSM303DLHC_ACCEL_FS_BITS (CONFIG_LSM303DLHC_ACCEL_RANGE << \
|
|
LSM303DLHC_ACCEL_FS_SHIFT)
|
|
|
|
#define LSM303DLHC_REG_CTRL_1 0x20
|
|
#define LSM303DLHC_REG_CTRL_4 0x23
|
|
#define LSM303DLHC_REG_ACCEL_X_LSB (0x28 | LSM303DLHC_ACCEL_AUTO_INC_ADDR)
|
|
|
|
enum lsm303dlhc_accel_odr {
|
|
LSM303DLHC_ACCEL_ODR_1HZ,
|
|
LSM303DLHC_ACCEL_ODR_10HZ,
|
|
LSM303DLHC_ACCEL_ODR_25HZ,
|
|
LSM303DLHC_ACCEL_ODR_50HZ,
|
|
LSM303DLHC_ACCEL_ODR_100HZ,
|
|
LSM303DLHC_ACCEL_ODR_200HZ,
|
|
LSM303DLHC_ACCEL_ODR_400HZ,
|
|
LSM303DLHC_ACCEL_ODR_1620HZ,
|
|
LSM303DLHC_ACCEL_ODR_1344HZ,
|
|
LSM303DLHC_ACCEL_ODR_5376HZ = LSM303DLHC_ACCEL_ODR_1344HZ,
|
|
};
|
|
|
|
struct lsm303dlhc_accel_data {
|
|
struct device *i2c;
|
|
|
|
s16_t accel_x;
|
|
s16_t accel_y;
|
|
s16_t accel_z;
|
|
};
|
|
|
|
struct lsm303dlhc_accel_config {
|
|
char *i2c_name;
|
|
u8_t i2c_address;
|
|
};
|
|
#endif /* __SENSOR_LSM303DLHC_ACCEL_ */
|