228 lines
4.7 KiB
Plaintext
228 lines
4.7 KiB
Plaintext
# ST Microelectronics LIS2DW12 3-axis accelerometer driver
|
|
|
|
# Copyright (c) 2019 STMicroelectronics
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig LIS2DW12
|
|
bool "LIS2DW12 I2C/SPI accelerometer sensor driver"
|
|
depends on I2C || SPI
|
|
select HAS_STMEMSC
|
|
select USE_STDC_LIS2DW12
|
|
help
|
|
Enable driver for LIS2DW12 accelerometer sensor driver
|
|
|
|
if LIS2DW12
|
|
|
|
choice LIS2DW12_TRIGGER_MODE
|
|
prompt "Trigger mode"
|
|
help
|
|
Specify the type of triggering to be used by the driver.
|
|
|
|
config LIS2DW12_TRIGGER_NONE
|
|
bool "No trigger"
|
|
|
|
config LIS2DW12_TRIGGER_GLOBAL_THREAD
|
|
bool "Use global thread"
|
|
depends on GPIO
|
|
select LIS2DW12_TRIGGER
|
|
|
|
config LIS2DW12_TRIGGER_OWN_THREAD
|
|
bool "Use own thread"
|
|
depends on GPIO
|
|
select LIS2DW12_TRIGGER
|
|
|
|
endchoice
|
|
|
|
config LIS2DW12_TRIGGER
|
|
bool
|
|
|
|
if LIS2DW12_TRIGGER
|
|
|
|
config LIS2DW12_THREAD_PRIORITY
|
|
int "Thread priority"
|
|
depends on LIS2DW12_TRIGGER_OWN_THREAD
|
|
default 10
|
|
help
|
|
Priority of thread used by the driver to handle interrupts.
|
|
|
|
config LIS2DW12_THREAD_STACK_SIZE
|
|
int "Thread stack size"
|
|
depends on LIS2DW12_TRIGGER_OWN_THREAD
|
|
default 1024
|
|
help
|
|
Stack size of thread used by the driver to handle interrupts.
|
|
|
|
choice
|
|
prompt "Sensor INT pin number"
|
|
default LIS2DW12_INT_PIN_1
|
|
help
|
|
The number of LIS2DW12 int pin used to generate interrupt to cpu.
|
|
Supported values are int1 or int2
|
|
|
|
config LIS2DW12_INT_PIN_1
|
|
bool "int1"
|
|
|
|
config LIS2DW12_INT_PIN_2
|
|
bool "int2"
|
|
endchoice
|
|
|
|
menuconfig LIS2DW12_PULSE
|
|
bool "Pulse detection"
|
|
help
|
|
Enable pulse (single/double tap) detection
|
|
|
|
if LIS2DW12_PULSE
|
|
|
|
choice
|
|
prompt "Pulse interrupt source"
|
|
default LIS2DW12_ONLY_SINGLE
|
|
|
|
config LIS2DW12_ONLY_SINGLE
|
|
bool "single"
|
|
|
|
config LIS2DW12_SINGLE_DOUBLE
|
|
bool "single/double"
|
|
|
|
endchoice
|
|
|
|
config LIS2DW12_PULSE_THSX
|
|
hex "Pulse X-axis threshold"
|
|
range 0 0x1F
|
|
default 0x0E
|
|
help
|
|
Threshold to start the pulse-event detection procedure on the X-axis.
|
|
Threshold values for each axis are unsigned 5-bit corresponding
|
|
to an 2g acceleration full-scale range.
|
|
|
|
config LIS2DW12_PULSE_THSY
|
|
hex "Pulse Y-axis threshold"
|
|
range 0 0x1F
|
|
default 0x0E
|
|
help
|
|
Threshold to start the pulse-event detection procedure on the Y-axis.
|
|
Threshold values for each axis are unsigned 5-bit corresponding
|
|
to an 2g acceleration full-scale range.
|
|
|
|
config LIS2DW12_PULSE_THSZ
|
|
hex "Pulse Z-axis threshold"
|
|
range 0 0x1F
|
|
default 0x0E
|
|
help
|
|
Threshold to start the pulse-event detection procedure on the Z-axis.
|
|
Threshold values for each axis are unsigned 5-bit corresponding
|
|
to an 2g acceleration full-scale range.
|
|
|
|
config LIS2DW12_PULSE_X
|
|
bool "Enable X axis for pulse"
|
|
default y
|
|
|
|
config LIS2DW12_PULSE_Y
|
|
bool "Enable Y axis for pulse"
|
|
default y
|
|
|
|
config LIS2DW12_PULSE_Z
|
|
bool "Enable Z axis for pulse"
|
|
default y
|
|
|
|
config LIS2DW12_PULSE_SHOCK
|
|
hex "Shock value"
|
|
range 0 0x03
|
|
default 0x00
|
|
help
|
|
Maximum duration of over-threshold event: this register represents
|
|
the maximum time of an over-threshold signal detection to be
|
|
recognized as a tap event. Where 0 equals 4*1/ODR and 1LSB = 8*1/ODR.
|
|
|
|
config LIS2DW12_PULSE_LTNCY
|
|
hex "Latency value"
|
|
range 0 0x0F
|
|
default 0x05
|
|
help
|
|
When double-tap recognition is enabled, this register expresses
|
|
the maximum time between two successive detected taps to
|
|
determine a double-tap event. Where 0 equals 16*1/ODR and
|
|
1LSB = 32*1/ODR.
|
|
|
|
config LIS2DW12_PULSE_QUIET
|
|
hex "Quiet value"
|
|
range 0 0x03
|
|
default 0x00
|
|
help
|
|
Expected quiet time after a tap detection: this register represents
|
|
the time after the first detected tap in which there must not be
|
|
any overthreshold event. Where 0 equals 2*1/ODR and 1LSB = 4*1/ODR.
|
|
|
|
endif # LIS2DW12_PULSE
|
|
|
|
endif # LIS2DW12_TRIGGER
|
|
|
|
choice
|
|
prompt "Accelerometer Full-scale range setting"
|
|
default LIS2DW12_ACCEL_RANGE_RUNTIME
|
|
|
|
config LIS2DW12_ACCEL_RANGE_RUNTIME
|
|
bool "Set at runtime (Default 2G)"
|
|
|
|
config LIS2DW12_ACCEL_RANGE_2G
|
|
bool "2G"
|
|
|
|
config LIS2DW12_ACCEL_RANGE_4G
|
|
bool "4G"
|
|
|
|
config LIS2DW12_ACCEL_RANGE_8G
|
|
bool "8G"
|
|
|
|
config LIS2DW12_ACCEL_RANGE_16G
|
|
bool "16G"
|
|
endchoice
|
|
|
|
choice
|
|
prompt "Accelerometer sampling frequency (ODR)"
|
|
default LIS2DW12_ODR_RUNTIME
|
|
|
|
config LIS2DW12_ODR_RUNTIME
|
|
bool "Set at runtime (Default 100 Hz)"
|
|
|
|
config LIS2DW12_ODR_1_6
|
|
bool "1.6 Hz"
|
|
|
|
config LIS2DW12_ODR_12_5
|
|
bool "12.5 Hz"
|
|
|
|
config LIS2DW12_ODR_25
|
|
bool "25 Hz"
|
|
|
|
config LIS2DW12_ODR_50
|
|
bool "50 Hz"
|
|
|
|
config LIS2DW12_ODR_100
|
|
bool "100 Hz"
|
|
|
|
config LIS2DW12_ODR_200
|
|
bool "200 Hz"
|
|
|
|
config LIS2DW12_ODR_400
|
|
bool "400 Hz"
|
|
|
|
config LIS2DW12_ODR_800
|
|
bool "800 Hz"
|
|
|
|
config LIS2DW12_ODR_1600
|
|
bool "1600 Hz"
|
|
|
|
endchoice
|
|
|
|
config LIS2DW12_POWER_MODE
|
|
int "Sensor Power Modes"
|
|
range 0 4
|
|
default 0
|
|
help
|
|
Specify the sensor power mode
|
|
0: Low Power M1
|
|
1: Low Power M2
|
|
2: Low Power M3
|
|
3: Low Power M4
|
|
4: High Performance
|
|
|
|
endif # LIS2DW12
|