46#define EX_ADXL317_VERSION "1.0.0"
51#define EX_ADXL317_MAJOR 1
56#define EX_ADXL317_MINOR 0
61#define EX_ADXL317_PATCH 0
72#define ADXL317_ACC_NUMBER_OF_AXES 3U
75#define ADXL317_ACC_SENS 2.0f
76#define ADXL317_ACC_BIAS 0.0f
84#define ADXL317_AD_DEVID_0 0x00
85#define ADXL317_AD_DEVID_1 0x01
86#define ADXL317_AD_USER_REG_KEY 0x80
87#define ADXL317_AD_I2C_CFGO 0x81
88#define ADXL317_AD_I2C_CFG1 0x82
89#define ADXL317_AD_CLK_RATE 0x83
90#define ADXL317_AD_X_ST 0x84
91#define ADXL317_AD_X_FILT 0x85
92#define ADXL317_AD_Y_ST 0x86
93#define ADXL317_AD_Y_FILT 0x87
94#define ADXL317_AD_Z_ST 0x88
95#define ADXL317_AD_Z_FILT 0x89
96#define ADXL317_AD_X_DATA_LO 0x8A
97#define ADXL317_AD_X_DATA_HI 0x8B
98#define ADXL317_AD_Y_DATA_LO 0x8C
99#define ADXL317_AD_Y_DATA_HI 0x8D
100#define ADXL317_AD_Z_DATA_LO 0x8E
101#define ADXL317_AD_Z_DATA_HI 0x8F
108#define ADXL317_DEVID_0 0x22
115#define ADXL317_USER_REG_KEY_0 0xBC
116#define ADXL317_USER_REG_KEY_1 0x43
125#define ADXL317_DEFAULT_FILTER 0x40
132#define ADXL317_I2S_CFG0_MASK 0xF3
133#define ADXL317_I2S_CFG0_TDMMODE_0 (1 << 0)
134#define ADXL317_I2S_CFG0_TDMMODE_1 (1 << 1)
135#define ADXL317_I2S_CFG0_TDMSS (1 << 4)
136#define ADXL317_I2S_CFG0_ALT (1 << 5)
137#define ADXL317_I2S_CFG0_EARLY (1 << 6)
138#define ADXL317_I2S_CFG0_INV (1 << 7)
145#define ADXL317_I2S_CFG1_MASK 0x07
146#define ADXL317_I2S_CFG1_TX0EN (1 << 0)
147#define ADXL317_I2S_CFG1_TX1EN (1 << 1)
148#define ADXL317_I2S_CFG1_TXBCLKINV (1 << 3)
155#define ADXL317_CLOCK_RATE_MASK 0x07
156#define ADXL317_CLOCK_RATE_A2B_CLK_RATE_0 (1 << 0)
157#define ADXL317_CLOCK_RATE_A2B_CLK_RATE_1 (1 << 1)
158#define ADXL317_CLOCK_RATE_A2B_CLK_RATE_2 (1 << 3)
174#if !defined(ADXL317_USE_I2C) || defined(__DOXYGEN__)
175#define ADXL317_USE_I2C TRUE
184#if !defined(ADXL317_SHARED_I2C) || defined(__DOXYGEN__)
185#define ADXL317_SHARED_I2C FALSE
193#if !defined(ADXL317_USE_ADVANCED) || defined(__DOXYGEN__)
194#define ADXL317_USE_ADVANCED FALSE
200#if !defined(ADXL317_COMM_BUFF_SIZE) || defined(__DOXYGEN__)
201#define ADXL317_MAX_BUFF_SIZE 6
209#if ADXL317_USE_I2C && !HAL_USE_I2C
210#error "ADXL317_USE_I2C requires HAL_USE_I2C"
213#if ADXL317_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
214#error "ADXL317_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
345#if (ADXL317_USE_I2C) || defined(__DOXYGEN__)
363#if ADXL317_USE_ADVANCED || defined(__DOXYGEN__)
378#define _adxl317_methods_alone
384#define _adxl317_methods \
385 _base_object_methods \
386 _adxl317_methods_alone
400#define _adxl317_data \
403 adxl317_state_t state; \
405 const ADXL317Config *config; \
409 float accsensitivity[ADXL317_ACC_NUMBER_OF_AXES]; \
411 float accbias[ADXL317_ACC_NUMBER_OF_AXES]; \
413 float accfullscale; \
444#define adxl317AccelerometerGetAxesNumber(devp) \
445 accelerometerGetAxesNumber(&((devp)->acc_if))
465#define adxl317AccelerometerReadRaw(devp, axes) \
466 accelerometerReadRaw(&((devp)->acc_if), axes)
487#define adxl317AccelerometerReadCooked(devp, axes) \
488 accelerometerReadCooked(&((devp)->acc_if), axes)
Generic accelerometer interface header.
adxl317_state_t
Driver state machine possible states.
adxl317_sad_t
ADXL317 Slave Address.
adxl317_acc_z_hp_t
ADXL317 Z HP filter.
#define _adxl317_data
ADXL317Driver specific data.
adxl317_acc_y_hp_t
ADXL317 Y HP filter.
#define _adxl317_methods
ADXL317 specific methods with inherited ones.
void adxl317ObjectInit(ADXL317Driver *devp, uint8_t *txbp, uint8_t *rxbp)
Initializes an instance.
void adxl317Stop(ADXL317Driver *devp)
Deactivates the ADXL317 Complex Driver peripheral.
adxl317_acc_x_lp_t
ADXL317 X LP filter.
adxl317_acc_y_lp_t
ADXL317 Y LP filter.
msg_t adxl317Start(ADXL317Driver *devp, const ADXL317Config *config)
Configures and activates ADXL317 Complex Driver peripheral.
adxl317_acc_z_lp_t
ADXL317 Z LP filter.
adxl317_acc_x_hp_t
ADXL317 X HP filter.
@ ADXL317_ACC_Z_HP_DISABLED
@ ADXL317_ACC_Y_HP_DISABLED
@ ADXL317_ACC_X_LP_DISABLED
@ ADXL317_ACC_Y_LP_DISABLED
@ ADXL317_ACC_Z_LP_DISABLED
@ ADXL317_ACC_X_HP_DISABLED
ADXL317 configuration structure.
float * accbias
ADXL317 accelerometer subsystem initial bias.
adxl317_acc_hp_t acchighpass
ADXL317 HP filter bandwidth.
I2CDriver * i2cp
I2C driver associated to this ADXL317.
adxl317_acc_lp_t acclowpass
ADXL317 LP filter bandwidth.
const I2CConfig * i2ccfg
I2C configuration associated to this ADXL317.
float * accsensitivity
ADXL317 accelerometer subsystem initial sensitivity.
ADXL317 3-axis accelerometer class.
const struct ADXL317VMT * vmt
Virtual Methods Table.
BaseAccelerometer acc_if
Base accelerometer interface.
ADXL317 virtual methods table.
Base accelerometer class.
ADXL317 HP filter configuration.
ADXL317 LP filter configuration.