blob: 00bc1fb1c12cb9ccbb9e6a8a0fa6051207cc08eb [file] [log] [blame]
# Micropower, 3-Axis, +/-200g Digital Accelerometer
# Copyright (c) 2018 Analog Devices Inc.
# SPDX-License-Identifier: Apache-2.0
menuconfig ADXL372
bool "ADXL372 Three Axis High-g I2C/SPI accelerometer"
default y
depends on DT_HAS_ADI_ADXL372_ENABLED
depends on I2C || SPI
help
Enable driver for ADXL372 Three-Axis Digital Accelerometers.
if ADXL372
choice ADXL372_BUS_TYPE
prompt "Interface type"
help
Select interface the digital interface type for the ADXL372
config ADXL372_I2C
depends on I2C
bool "I2C Interface"
config ADXL372_SPI
depends on SPI
bool "SPI Interface"
endchoice
choice ADXL372_OP_MODE
prompt "Operating mode"
default ADXL372_PEAK_DETECT_MODE
config ADXL372_PEAK_DETECT_MODE
bool "Max Peak detect mode"
help
In most high-g applications, a single (3-axis) acceleration sample at
the peak of an impact event contains sufficient information
about the event, and the full acceleration history is not required.
In this mode the device returns only the over threshold
Peak Acceleration between two consecutive sample fetches.
config ADXL372_MEASUREMENT_MODE
bool "Measurement Mode"
help
In this mode, acceleration data is provided continuously at the
output data rate (ODR).
endchoice
choice ADXL372_ODR_FREQ
prompt "Accelerometer sampling frequency (ODR)"
default ADXL372_ODR_6400HZ if ADXL372_PEAK_DETECT_MODE
default ADXL372_ODR_400HZ if ADXL372_MEASUREMENT_MODE
config ADXL372_ODR_400HZ
bool "400 Hz"
config ADXL372_ODR_800HZ
bool "800 Hz"
config ADXL372_ODR_1600HZ
bool "1600 Hz"
config ADXL372_ODR_3200HZ
bool "3200 Hz"
config ADXL372_ODR_6400HZ
bool "6400 Hz"
endchoice
choice ADXL372_BW_FREQ
prompt "Low-Pass (Antialiasing) Filter corner frequency"
default ADXL372_BW_200HZ if ADXL372_ODR_400HZ
default ADXL372_BW_400HZ if ADXL372_ODR_800HZ
default ADXL372_BW_800HZ if ADXL372_ODR_1600HZ
default ADXL372_BW_1600HZ if ADXL372_ODR_3200HZ
default ADXL372_BW_3200HZ if ADXL372_ODR_6400HZ
help
High g events often include acceleration content over a wide range
of frequencies. The ADC of the ADXL372 samples the input acceleration
at the user selected ODR.
In the absence of antialiasing filters, input signals whose frequency
is more than half the ODR alias or fold into the measurement bandwidth
can lead to inaccurate measurements.
config ADXL372_LPF_DISABLE
bool "Disabled"
config ADXL372_BW_200HZ
bool "200 Hz"
config ADXL372_BW_400HZ
bool "400 Hz"
config ADXL372_BW_800HZ
bool "800 Hz"
config ADXL372_BW_1600HZ
bool "1600 Hz"
config ADXL372_BW_3200HZ
bool "3200 Hz"
endchoice
choice ADXL372_HPF_CORNER
prompt "High-Pass Filter corner frequency"
default ADXL372_HPF_CORNER0
help
The ADXL372 offers a one-pole, high-pass filter with a user
selectable 3 dB frequency. Applications that do not require dc
acceleration measurements can use the high-pass filter to minimize
constant or slow varying offset errors including initial bias,
bias drift due to temperature, and bias drift due to supply voltage
config ADXL372_HPF_DISABLE
bool "Disabled"
config ADXL372_HPF_CORNER0
bool "ODR/210"
config ADXL372_HPF_CORNER1
bool "ODR/411"
config ADXL372_HPF_CORNER2
bool "ODR/812"
config ADXL372_HPF_CORNER3
bool "ODR/1616"
endchoice
config ADXL372_ACTIVITY_THRESHOLD
int "Activity threshold in mg"
range 0 200000
default 500
help
Threshold for activity detection.
config ADXL372_INACTIVITY_THRESHOLD
int "In-activity threshold in mg"
range 0 200000
default 400
help
Threshold for in-activity detection.
config ADXL372_ACTIVITY_TIME
int "Activity time"
range 0 255
default 1
help
The activity timer implements a robust activity detection that
minimizes false positive motion triggers. When the timer is used,
only sustained motion can trigger activity detection.
Number of multiples of 3.3 ms activity timer for which above threshold
acceleration is required to detect activity. It is 3.3 ms per code
for 6400 Hz ODR, and it is 6.6 ms per code for 3200 Hz ODR and below.
config ADXL372_INACTIVITY_TIME
int "In-activity time"
range 0 255
default 2
help
The time that all enabled axes must be lower than the inactivity
threshold for an inactivity event to be detected. Number of multiples
of 26 ms inactivity timer for which below threshold acceleration is
required to detect inactivity. It is 26 ms per code for 3200 Hz ODR
and below, and it is 13 ms per code for 6400 Hz ODR.
config ADXL372_REFERENCED_ACTIVITY_DETECTION_MODE
bool "Use referenced activity/in-activity detection"
default y
help
Activity detection can be configured as referenced or absolute.
When using absolute activity detection, acceleration samples are
compared directly to a user set threshold to determine whether
motion is present. In many applications, it is advantageous for
activity detection to be based not on an absolute threshold,
but on a deviation from a reference point or orientation.
choice ADXL372_TRIGGER_MODE
prompt "Trigger mode"
default ADXL372_TRIGGER_NONE
help
Specify the type of triggering used by the driver.
config ADXL372_TRIGGER_NONE
bool "No trigger"
config ADXL372_TRIGGER_GLOBAL_THREAD
bool "Use global thread"
depends on GPIO
select ADXL372_TRIGGER
config ADXL372_TRIGGER_OWN_THREAD
bool "Use own thread"
depends on GPIO
select ADXL372_TRIGGER
endchoice
config ADXL372_TRIGGER
bool
config ADXL372_THREAD_PRIORITY
int "Thread priority"
depends on ADXL372_TRIGGER_OWN_THREAD && ADXL372_TRIGGER
default 10
help
Priority of thread used by the driver to handle interrupts.
config ADXL372_THREAD_STACK_SIZE
int "Thread stack size"
depends on ADXL372_TRIGGER_OWN_THREAD && ADXL372_TRIGGER
default 1024
help
Stack size of thread used by the driver to handle interrupts.
endif # ADXL372