Driver for the QMA6100P 3-Axis accelerometer. More...
Driver for the QMA6100P 3-Axis accelerometer.
The driver will initialize the accelerometer for best resolution. After the initialization the accelerometer will make measurements at periodic times. The measurements period and scale range can be determined by accelerometer initialization. This driver only implements basic functionality: data-ready interrupt support only (no tap, motion, step, or FIFO interrupts).
This driver provides [S]ensor [A]ctuator [U]ber [L]ayer capabilities.
Files | |
| file | qma6100p.h |
| Interface definition for the QMA6100P accelerometer driver. | |
| file | qma6100p_params.h |
| Default configuration for the QST QMA6100P accelerometer. | |
| file | qma6100p_regs.h |
| Register definitions for the QST QMA6100P accelerometer. | |
Data Structures | |
| struct | qma6100p_params_t |
| Configuration parameters. More... | |
| struct | qma6100p_t |
| Device descriptor for QMA6100P accelerometer. More... | |
| struct | qma6100p_raw_data_t |
| Raw 14-bit acceleration data (ADC counts) More... | |
| struct | qma6100p_data_t |
| Converted acceleration data in µg. More... | |
Typedefs | |
| typedef void(* | qma6100p_int_cb_t) (void *) |
| QMA6100P interrupt callback. | |
Functions | |
| int | qma6100p_init (qma6100p_t *dev, const qma6100p_params_t *params) |
| Initialize the QMA6100P accelerometer driver. | |
| int | qma6100p_set_low_power (qma6100p_t *dev) |
| Enter Ultra-Low Power State (ULPS) | |
| int | qma6100p_set_active_mode (qma6100p_t *dev) |
| Enter active mode. | |
| int | qma6100p_read_raw (const qma6100p_t *dev, qma6100p_raw_data_t *data) |
| Read raw accelerometer data (ADC counts) | |
| int | qma6100p_read (const qma6100p_t *dev, qma6100p_data_t *data) |
| Read accelerometer data converted to ug. | |
| 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. | |
| typedef void(* qma6100p_int_cb_t) (void *) |
QMA6100P interrupt callback.
Definition at line 104 of file qma6100p.h.
| anonymous enum |
Named return values.
Definition at line 45 of file qma6100p.h.
INT pin active level (INTPIN_CONF, 0x20)
| Enumerator | |
|---|---|
| QMA6100P_INTPIN_ACTIVE_LOW | INT pin active LOW on interrupt. |
| QMA6100P_INTPIN_ACTIVE_HIGH | INT pin active HIGH on interrupt. |
Definition at line 117 of file qma6100p.h.
INT pin output mode (INTPIN_CONF, 0x20)
| Enumerator | |
|---|---|
| QMA6100P_INTPIN_PUSH_PULL | INT pin push-pull mode. |
| QMA6100P_INTPIN_OPEN_DRAIN | INT pin open-drain mode. |
Definition at line 109 of file qma6100p.h.
Interrupt pin number selection (INT1_MAP1 0x1A / INT2_MAP1 0x1C)
| Enumerator | |
|---|---|
| QMA6100P_INT1 | Use INT1 pin for interrupt output. |
| QMA6100P_INT2 | Use INT2 pin for interrupt output. |
Definition at line 137 of file qma6100p.h.
Data shadowing mode (INT_CFG, 0x21)
Definition at line 125 of file qma6100p.h.
| enum qma6100p_mclk_t |
Master Clock selection.
Master clock is controlled by PM_REGISTER (0x11) and can be set through I2C commands.
| Enumerator | |
|---|---|
| QMA6100P_PM_MCLK_51K2 | 51.2 kHz (default) |
| QMA6100P_PM_MCLK_25K6 | 25.6 kHz |
| QMA6100P_PM_MCLK_12K8 | 12.8 kHz |
| QMA6100P_PM_MCLK_6K4 | 6.4 kHz |
Definition at line 94 of file qma6100p.h.
| enum qma6100p_odr_t |
Output data rate selection.
Values map directly to bits[4:0] of the ODR register (0x10) Assumes MCLK=51.2kHz (default after init sequence)
Definition at line 76 of file qma6100p.h.
| enum qma6100p_range_t |
Full-scale range selection for the QMA6100P accelerometer.
Values map directly to bits[3:0] of the RANGE register (0x0F) Higher range = lower sensitivity
Definition at line 62 of file qma6100p.h.
| int qma6100p_init | ( | qma6100p_t * | dev, |
| const qma6100p_params_t * | params ) |
Initialize the QMA6100P accelerometer driver.
Runs the init sequence, sets ODR, range and master clock from params.
The device is left in active mode; call qma6100p_set_low_power afterwards to enter Ultra-Low Power State (ULPS) if needed.
| [out] | dev | device descriptor of accelerometer to initialize |
| [in] | params | configuration parameters |
| QMA6100P_OK | on success |
| QMA6100P_NOI2C | if initialization of I2C bus failed |
| QMA6100P_NODEV | if accelerometer test failed |
| int qma6100p_read | ( | const qma6100p_t * | dev, |
| qma6100p_data_t * | data ) |
Read accelerometer data converted to ug.
Converts raw counts using the configured range sensitivity.
| [in] | dev | device descriptor of accelerometer |
| [out] | data | acceleration in ug per axis |
| QMA6100P_NO_NEW_DATA | No new measurement data is available, the data structure remains unchanged. |
| int qma6100p_read_raw | ( | const qma6100p_t * | dev, |
| qma6100p_raw_data_t * | data ) |
Read raw accelerometer data (ADC counts)
| [in] | dev | device descriptor of accelerometer |
| [out] | data | raw ADC counts per axis |
| QMA6100P_NO_NEW_DATA | No new measurement data is available, the data structure remains unchanged. |
| int qma6100p_set_active_mode | ( | qma6100p_t * | dev | ) |
Enter active mode.
Exits Ultra-Low Power State (ULPS) and restores the configured parameters.
| [in,out] | dev | device descriptor of accelerometer |
| QMA6100P_OK | on success |
| QMA6100P_NOI2C | if I2C transaction failed |
| QMA6100P_NODEV | if device not found on bus |
| 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.
Writes INTPIN_CONF, INTx_MAP1, and INT_EN1 registers to route the data-ready event to the line INT pin, then arms the matching MCU GPIO ISR (qma6100p_params_t::int1_pin / qma6100p_params_t::int2_pin).
| [in,out] | dev | device descriptor of accelerometer |
| [in] | line | INT line to route the data-ready event to (QMA6100P_INT1 or QMA6100P_INT2) |
| [in] | cb | callback invoked when the data-ready event fires |
| [in] | arg | argument passed to cb |
| QMA6100P_OK | on success |
| QMA6100P_GPIO_ERROR | if the line's GPIO is unwired or initialization failed |
| QMA6100P_INVALID_ARG | if line is invalid |
| QMA6100P_NOI2C | if I2C transaction failed |
| QMA6100P_NODEV | if device not found on bus |
| int qma6100p_set_low_power | ( | qma6100p_t * | dev | ) |
Enter Ultra-Low Power State (ULPS)
| [in,out] | dev | device descriptor of accelerometer |
| QMA6100P_OK | on success |
| QMA6100P_NOI2C | if I2C transaction failed |
| QMA6100P_NODEV | if device not found on bus |