Loading...
Searching...
No Matches
qma6100p.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 Baptiste Le Duc <baptiste.leduc@etik.com>
3 * SPDX-FileCopyrightText: 2026 Léandre Le Duc <leandre.leduc38@gmail.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
31
32#include <stdbool.h>
33#include <stdint.h>
34
35#include "periph/gpio.h"
36#include "periph/i2c.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
45enum {
54};
55
69
86
100
104typedef void (*qma6100p_int_cb_t)(void *);
105
113
121
133
141
157
164
168typedef struct {
169 int16_t x;
170 int16_t y;
171 int16_t z;
173
177typedef struct {
178 int32_t x;
179 int32_t y;
180 int32_t z;
182
199
210
223
234
247
271 qma6100p_int_cb_t cb, void *arg);
272
273#ifdef __cplusplus
274}
275#endif
276
Low-level GPIO peripheral driver interface definitions.
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
void(* qma6100p_int_cb_t)(void *)
QMA6100P interrupt callback.
Definition qma6100p.h:104
int qma6100p_set_data_ready_int(qma6100p_t *dev, qma6100p_int_pin_num_t line, qma6100p_int_cb_t cb, void *arg)
Configure data-ready interrupt.
int qma6100p_read_raw(const qma6100p_t *dev, qma6100p_raw_data_t *data)
Read raw accelerometer data (ADC counts)
int qma6100p_set_active_mode(qma6100p_t *dev)
Enter active mode.
int qma6100p_read(const qma6100p_t *dev, qma6100p_data_t *data)
Read accelerometer data converted to ug.
qma6100p_odr_t
Output data rate selection.
Definition qma6100p.h:76
qma6100p_int_active_level_t
INT pin active level (INTPIN_CONF, 0x20)
Definition qma6100p.h:117
qma6100p_range_t
Full-scale range selection for the QMA6100P accelerometer.
Definition qma6100p.h:62
qma6100p_int_pin_mode_t
INT pin output mode (INTPIN_CONF, 0x20)
Definition qma6100p.h:109
qma6100p_int_pin_num_t
Interrupt pin number selection (INT1_MAP1 0x1A / INT2_MAP1 0x1C)
Definition qma6100p.h:137
int qma6100p_set_low_power(qma6100p_t *dev)
Enter Ultra-Low Power State (ULPS)
qma6100p_mclk_t
Master Clock selection.
Definition qma6100p.h:94
qma6100p_int_shadow_t
Data shadowing mode (INT_CFG, 0x21)
Definition qma6100p.h:125
int qma6100p_init(qma6100p_t *dev, const qma6100p_params_t *params)
Initialize the QMA6100P accelerometer driver.
@ QMA6100P_NO_NEW_DATA
no new data available (normal polling state)
Definition qma6100p.h:48
@ QMA6100P_DATA_READY
new data ready to be read
Definition qma6100p.h:47
@ QMA6100P_TIMEOUT
operation timed out
Definition qma6100p.h:53
@ QMA6100P_GPIO_ERROR
GPIO error.
Definition qma6100p.h:52
@ QMA6100P_NODEV
no QMA6100P device found on the bus
Definition qma6100p.h:50
@ QMA6100P_NOI2C
I2C communication failed.
Definition qma6100p.h:49
@ QMA6100P_INVALID_ARG
invalid argument
Definition qma6100p.h:51
@ QMA6100P_OK
everything was fine
Definition qma6100p.h:46
@ QMA6100P_ODR_12HZ5
12.5 Hz
Definition qma6100p.h:84
@ QMA6100P_ODR_200HZ
200 Hz
Definition qma6100p.h:78
@ QMA6100P_ODR_800HZ
800 Hz
Definition qma6100p.h:80
@ QMA6100P_ODR_400HZ
400 Hz
Definition qma6100p.h:79
@ QMA6100P_ODR_50HZ
50 Hz
Definition qma6100p.h:82
@ QMA6100P_ODR_1600HZ
1600 Hz
Definition qma6100p.h:81
@ QMA6100P_ODR_25HZ
25 Hz
Definition qma6100p.h:83
@ QMA6100P_ODR_100HZ
100 Hz (default)
Definition qma6100p.h:77
@ QMA6100P_INTPIN_ACTIVE_HIGH
INT pin active HIGH on interrupt.
Definition qma6100p.h:119
@ QMA6100P_INTPIN_ACTIVE_LOW
INT pin active LOW on interrupt.
Definition qma6100p.h:118
@ QMA6100P_RANGE_16G
±16g - sensitivity 512 LSB/g
Definition qma6100p.h:66
@ QMA6100P_RANGE_2G
±2g - sensitivity 4096 LSB/g
Definition qma6100p.h:63
@ QMA6100P_RANGE_8G
±8g - sensitivity 1024 LSB/g
Definition qma6100p.h:65
@ QMA6100P_RANGE_32G
±32g - sensitivity 256 LSB/g
Definition qma6100p.h:67
@ QMA6100P_RANGE_4G
±4g - sensitivity 2048 LSB/g
Definition qma6100p.h:64
@ QMA6100P_INTPIN_OPEN_DRAIN
INT pin open-drain mode.
Definition qma6100p.h:111
@ QMA6100P_INTPIN_PUSH_PULL
INT pin push-pull mode.
Definition qma6100p.h:110
@ QMA6100P_INT1
Use INT1 pin for interrupt output.
Definition qma6100p.h:138
@ QMA6100P_INT2
Use INT2 pin for interrupt output.
Definition qma6100p.h:139
@ QMA6100P_PM_MCLK_12K8
12.8 kHz
Definition qma6100p.h:97
@ QMA6100P_PM_MCLK_25K6
25.6 kHz
Definition qma6100p.h:96
@ QMA6100P_PM_MCLK_51K2
51.2 kHz (default)
Definition qma6100p.h:95
@ QMA6100P_PM_MCLK_6K4
6.4 kHz
Definition qma6100p.h:98
Low-level I2C peripheral driver interface definition.
#define QMA6100P_INT_CFG_SHADOW_EN
shadowing enabled (default)
#define QMA6100P_INT_CFG_SHADOW_DIS
shadowing disabled
Converted acceleration data in µg.
Definition qma6100p.h:177
int32_t z
acceleration in Z direction [µg]
Definition qma6100p.h:180
int32_t x
acceleration in X direction [µg]
Definition qma6100p.h:178
int32_t y
acceleration in Y direction [µg]
Definition qma6100p.h:179
Configuration parameters.
Definition qma6100p.h:145
uint8_t addr
I2C address (QMA6100P_I2C_ADDR_LOW or _HIGH)
Definition qma6100p.h:147
gpio_t int2_pin
MCU GPIO connected to the QMA6100P INT2 pin (GPIO_UNDEF if unused)
Definition qma6100p.h:151
qma6100p_int_shadow_t interrupt_shadow
acceleration data shadow mode
Definition qma6100p.h:155
qma6100p_mclk_t mclk
master clock
Definition qma6100p.h:154
i2c_t i2c
I2C bus the device is connected to.
Definition qma6100p.h:146
gpio_t int1_pin
MCU GPIO connected to the QMA6100P INT1 pin (GPIO_UNDEF if unused)
Definition qma6100p.h:149
qma6100p_range_t range
full-scale range
Definition qma6100p.h:153
qma6100p_odr_t rate
output data rate
Definition qma6100p.h:152
Raw 14-bit acceleration data (ADC counts)
Definition qma6100p.h:168
int16_t x
raw ADC counts in X direction
Definition qma6100p.h:169
int16_t y
raw ADC counts in Y direction
Definition qma6100p.h:170
int16_t z
raw ADC counts in Z direction
Definition qma6100p.h:171
Device descriptor for QMA6100P accelerometer.
Definition qma6100p.h:161
qma6100p_params_t params
Device configuration parameters.
Definition qma6100p.h:162