LIS2DH12 Accelerometer

Driver for the STM LIS2DH12 accelerometer.

This device driver provides a minimal interface to LIS2DH12 devices. As of now, it only provides very basic access to the device. The driver configures the device to continuously read the acceleration data with statically defined scale and rate, and with a fixed 10-bit resolution. The LIS2DH12’s FIFO is bypassed, so the driver might not be sufficient for use cases where the complete history of readings is of interest.

Also, the current version of the driver supports only interfacing the sensor via SPI. The driver is however written in a way, that adding I2C interface support is quite simple, as all bus related functions (acquire, release, read, write) are cleanly separated in the code.

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

enum lis2dh12_scale_t
LIS2DH12_SCALE_2G = 0x00
+- 2g
LIS2DH12_SCALE_4G = 0x10
+- 4g
LIS2DH12_SCALE_8G = 0x20
+- 8g
LIS2DH12_SCALE_16G = 0x30
+- 16g
enum lis2dh12_rate_t
LIS2DH12_RATE_1HZ = 0x17
sample with 1Hz
LIS2DH12_RATE_10HZ = 0x27
sample with 10Hz
LIS2DH12_RATE_25HZ = 0x37
sample with 25Hz
LIS2DH12_RATE_50HZ = 0x47
sample with 50Hz
LIS2DH12_RATE_100HZ = 0x57
sample with 100Hz
LIS2DH12_RATE_200HZ = 0x67
sample with 200Hz
LIS2DH12_RATE_400HZ = 0x77
sample with 400Hz
enum @126
LIS2DH12_OK =  0
everything was fine
LIS2DH12_NOBUS = -1
bus interface error
LIS2DH12_NODEV = -2
unable to talk to device
const saul_driver_t lis2dh12_saul_driver

Export the SAUL interface for this driver.

int lis2dh12_init(lis2dh12_t * dev, const lis2dh12_params_t * params)

Initialize the given LIS2DH12 sensor device.

Parameters

dev:device descriptor
params:static device configuration

Return values

  • LIS2DH12_OK on success
  • LIS2DH12_NOBUS on bus errors
  • LIS2DH12_NODEV if no LIS2DH12 device was found on the bus
int lis2dh12_read(const lis2dh12_t * dev, int16_t * data)

Read acceleration data from the given device.

Parameters

dev:device descriptor
data:acceleration data in mili-g, MUST hold 3 values

Return values

  • LIS2DH12_OK on success
  • LIS2DH12_NOBUS on bus error
int lis2dh12_poweron(const lis2dh12_t * dev)

Power on the given device.

Parameters

dev:device descriptor

Return values

  • LIS2DH12_OK on success
  • LIS2DH12_NOBUS on bus error
int lis2dh12_poweroff(const lis2dh12_t * dev)

Power off the given device.

Parameters

dev:device descriptor

Return values

  • LIS2DH12_OK on success
  • LIS2DH12_NOBUS on bus error
struct lis2dh12_params_t

LIS2DH12 configuration parameters.

spi.h::spi_t spi

SPI bus the device is connected to.

gpio.h::gpio_t cs

connected chip select pin

lis2dh12.h::lis2dh12_scale_t scale

sampling sensitivity used

lis2dh12.h::lis2dh12_rate_t rate

sampling rate used

struct lis2dh12_t

LIS2DH12 device descriptor.

const lis2dh12_params_t * p

device configuration

uint16_t comp

scale compensation factor