222 lines
5.6 KiB
Plaintext
222 lines
5.6 KiB
Plaintext
# 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"
|
||
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
|
||
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
|
||
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
|
||
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
|
||
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
|
||
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
|