Loading...
Searching...
No Matches
mag3110.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 PHYTEC Messtechnik GmbH
3 * SPDX-FileCopyrightText: 2017 HAW Hamburg
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
33
34#include <stdint.h>
35#include <stdbool.h>
36#include "periph/i2c.h"
37
38#ifdef __cplusplus
39extern "C"
40{
41#endif
42
46enum {
51};
52
64#ifndef CONFIG_MAG3110_I2C_ADDRESS
65#define CONFIG_MAG3110_I2C_ADDRESS 0x0E
66#endif
68
73#define MAG3110_DROS_8000_16 0
74#define MAG3110_DROS_4000_32 1
75#define MAG3110_DROS_2000_64 2
76#define MAG3110_DROS_1000_128 3
77#define MAG3110_DROS_4000_16 4
78#define MAG3110_DROS_2000_32 5
79#define MAG3110_DROS_1000_64 6
80#define MAG3110_DROS_0500_128 7
81#define MAG3110_DROS_2000_16 8
82#define MAG3110_DROS_1000_32 9
83#define MAG3110_DROS_0500_64 10
84#define MAG3110_DROS_0250_128 11
85#define MAG3110_DROS_1000_16 12
86#define MAG3110_DROS_0500_32 13
87#define MAG3110_DROS_0250_64 14
88#define MAG3110_DROS_0125_128 15
89#define MAG3110_DROS_0500_16 16
90#define MAG3110_DROS_0250_32 17
91#define MAG3110_DROS_0125_64 18
92#define MAG3110_DROS_0063_128 19
93#define MAG3110_DROS_0250_16 20
94#define MAG3110_DROS_0125_32 21
95#define MAG3110_DROS_0063_64 22
96#define MAG3110_DROS_0031_128 23
97#define MAG3110_DROS_0125_16 24
98#define MAG3110_DROS_0063_32 25
99#define MAG3110_DROS_0031_64 26
100#define MAG3110_DROS_0016_128 27
101#define MAG3110_DROS_0063_16 28
102#define MAG3110_DROS_0031_32 29
103#define MAG3110_DROS_0016_64 30
104#define MAG3110_DROS_0008_128 31
105#define MAG3110_DROS_DEFAULT MAG3110_DROS_0125_128
107
111typedef struct {
113 uint8_t addr;
114 uint8_t type;
115 uint8_t dros;
116 int16_t offset[3];
118
122typedef struct {
124} mag3110_t;
125
129typedef struct {
130 int16_t x;
131 int16_t y;
132 int16_t z;
134
146int mag3110_init(mag3110_t *dev, const mag3110_params_t *params);
147
161int mag3110_set_user_offset(const mag3110_t *dev, int16_t x, int16_t y, int16_t z);
162
172
182
193
206int mag3110_read(const mag3110_t *dev, mag3110_data_t *data);
207
217int mag3110_read_dtemp(const mag3110_t *dev, int8_t *dtemp);
218
219#ifdef __cplusplus
220}
221#endif
222
int mag3110_init(mag3110_t *dev, const mag3110_params_t *params)
Initialise the MAG3110 magnetometer driver.
int mag3110_is_ready(const mag3110_t *dev)
Check for new set of measurement data.
int mag3110_read(const mag3110_t *dev, mag3110_data_t *data)
Read magnetometer's data.
int mag3110_set_active(const mag3110_t *dev)
Set active mode, this enables periodic measurements.
int mag3110_set_standby(const mag3110_t *dev)
Set standby mode.
int mag3110_read_dtemp(const mag3110_t *dev, int8_t *dtemp)
Read die temperature.
int mag3110_set_user_offset(const mag3110_t *dev, int16_t x, int16_t y, int16_t z)
Set user offset correction.
@ MAG3110_ERROR_DEV
Device MAG3110 not found.
Definition mag3110.h:49
@ MAG3110_ERROR_CNF
Device configuration failed.
Definition mag3110.h:50
@ MAG3110_ERROR_I2C
I2C communication failed.
Definition mag3110.h:48
@ MAG3110_OK
all good
Definition mag3110.h:47
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
Data type for the result data.
Definition mag3110.h:129
int16_t x
acceleration in X direction
Definition mag3110.h:130
int16_t y
acceleration in Y direction
Definition mag3110.h:131
int16_t z
acceleration in Z direction
Definition mag3110.h:132
Configuration parameters.
Definition mag3110.h:111
uint8_t dros
sampling rate to use
Definition mag3110.h:115
uint8_t addr
I2C bus address of the device.
Definition mag3110.h:113
i2c_t i2c
I2C bus the device is connected to.
Definition mag3110.h:112
int16_t offset[3]
data offset in X, Y, and Z direction
Definition mag3110.h:116
uint8_t type
device type
Definition mag3110.h:114
Device descriptor for MAG3110 magnetometer.
Definition mag3110.h:122
mag3110_params_t params
device configuration parameters
Definition mag3110.h:123