Loading...
Searching...
No Matches
qmc5883l.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Freie Universität Berlin
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
53
54#ifdef __cplusplus
55extern "C"
56{
57#endif
58
59#include <stdint.h>
60
61#include "periph/gpio.h"
62#include "periph/i2c.h"
63
67#define QMC5883L_ADDR (0x0d)
68
72enum {
78};
79
89typedef enum {
90 QMC5883L_ODR_10HZ = (0u << 2),
91 QMC5883L_ODR_50HZ = (1u << 2),
92 QMC5883L_ODR_100HZ = (2u << 2),
93 QMC5883L_ODR_200HZ = (3u << 2),
95
106typedef enum {
107 QMC5883L_RNG_2G = (0u << 4),
108 QMC5883L_RNG_8G = (1u << 4),
110
120typedef enum {
121 QMC5883L_OSR_512 = (0u << 6),
122 QMC5883L_OSR_256 = (1u << 6),
123 QMC5883L_OSR_128 = (2u << 6),
124 QMC5883L_OSR_64 = (3u << 6),
126
137
141typedef struct {
143 gpio_t pin_drdy;
144 uint8_t cfg;
145} qmc5883l_t;
146
161
174
192int qmc5883l_read(const qmc5883l_t *dev, int16_t *data_out);
193
214int qmc5883l_read_raw(const qmc5883l_t *dev, int16_t *data_out);
215
227
239
240#if defined(MODULE_QMC5883L_INT) || defined(DOXYGEN)
247
269int qmc5883l_init_int(const qmc5883l_t *dev, gpio_cb_t cb, void *arg);
270
284
296#endif /* defined(MODULE_QMC5883L_INT) || defined(DOXYGEN) */
297
298#ifdef __cplusplus
299}
300#endif
301
Low-level GPIO peripheral driver interface definitions.
void(* gpio_cb_t)(void *arg)
Signature of event callback functions triggered from interrupts.
Definition gpio.h:143
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
int qmc5883l_read_raw(const qmc5883l_t *dev, int16_t *data_out)
Read RAW data from the device.
int qmc5883l_read(const qmc5883l_t *dev, int16_t *data_out)
Read sampled data from the device [converted to milli-Gauss].
int qmc5883l_irq_disable(const qmc5883l_t *dev)
Disable the data ready (DRDY) interrupt.
qmc5883l_rng_t
Output value range.
Definition qmc5883l.h:106
qmc5883l_osr_t
Over sample rate (bandwidth of internal digital filter)
Definition qmc5883l.h:120
qmc5883l_odr_t
Output data rate.
Definition qmc5883l.h:89
int qmc5883l_poweron(const qmc5883l_t *dev)
Power on the sensor (put it into continuous sampling mode)
int qmc5883l_irq_enable(const qmc5883l_t *dev)
Enable the data ready (DRDY) interrupt.
int qmc5883l_poweroff(const qmc5883l_t *dev)
Power off the sensor (put it into standby mode)
int qmc5883l_init_int(const qmc5883l_t *dev, gpio_cb_t cb, void *arg)
Initialize data ready (DRDY) interrupt notifications.
int qmc5883l_init(qmc5883l_t *dev, const qmc5883l_params_t *params)
Initialize the given QMC5883L magnetic sensor.
int qmc5883l_data_ready(const qmc5883l_t *dev)
Check if new data is available.
@ QMC5883L_RNG_2G
2 Gauss data output range
Definition qmc5883l.h:107
@ QMC5883L_RNG_8G
8 Gauss data output range
Definition qmc5883l.h:108
@ QMC5883L_OSR_256
256 samples per reading
Definition qmc5883l.h:122
@ QMC5883L_OSR_64
64 samples per reading
Definition qmc5883l.h:124
@ QMC5883L_OSR_512
512 samples per reading
Definition qmc5883l.h:121
@ QMC5883L_OSR_128
128 samples per reading
Definition qmc5883l.h:123
@ QMC5883L_ODR_50HZ
50Hz data output rate
Definition qmc5883l.h:91
@ QMC5883L_ODR_100HZ
100Hz data output rate
Definition qmc5883l.h:92
@ QMC5883L_ODR_10HZ
10Hz data output rate
Definition qmc5883l.h:90
@ QMC5883L_ODR_200HZ
200Hz data output rate
Definition qmc5883l.h:93
@ QMC5883L_BUSERR
i2c bus error
Definition qmc5883l.h:76
@ QMC5883L_OK
success
Definition qmc5883l.h:73
@ QMC5883L_OVERFLOW
at least one axis overflowed its range
Definition qmc5883l.h:75
@ QMC5883L_NOCFG
configuration error
Definition qmc5883l.h:77
@ QMC5883L_NODATA
no data are available
Definition qmc5883l.h:74
Low-level I2C peripheral driver interface definition.
QMC5883L initialization parameters.
Definition qmc5883l.h:130
qmc5883l_rng_t rng
output data range
Definition qmc5883l.h:134
qmc5883l_odr_t odr
output data rate
Definition qmc5883l.h:133
i2c_t i2c
I2C bus the sensor is connected to.
Definition qmc5883l.h:131
qmc5883l_osr_t osr
oversampling rate
Definition qmc5883l.h:135
gpio_t pin_drdy
DRDY ISR pin, set to GPIO_UNDEF if unused.
Definition qmc5883l.h:132
QMC5883L device descriptor.
Definition qmc5883l.h:141
gpio_t pin_drdy
DRDY interrupt pin.
Definition qmc5883l.h:143
uint8_t cfg
actual applied device configuration
Definition qmc5883l.h:144
i2c_t i2c
I2C bus the sensor is connected to.
Definition qmc5883l.h:142