MAG3110 3-Axis Digital Magnetometer

Driver for the Freescale MAG3110 magnetometer. More...

Detailed Description

Driver for the Freescale MAG3110 magnetometer.

After initialization and set activ the magnetometer will make measurements at periodic times. The output rate and over sample ratio can be determined by magnetometer initialization. The measured values of magnetic field strength and die temperature have uncalibrated offsets. To get correct measurement values, the individual offsets must be measured and set accordingly.

Files

file  mag3110.h
 Interface definition for the MAG3110 magnetometer driver.
 
file  mag3110_reg.h
 Register definition for the MAG3110 magnetometer driver.
 

Data Structures

struct  mag3110_params_t
 Configuration parameters. More...
 
struct  mag3110_t
 Device descriptor for MAG3110 magnetometer. More...
 
struct  mag3110_data_t
 Data type for the result data. More...
 

Macros

#define MAG3110_I2C_ADDRESS   0x0E
 Magnetometer Default Address.
 

Enumerations

enum  { MAG3110_OK, MAG3110_ERROR_I2C, MAG3110_ERROR_DEV, MAG3110_ERROR_CNF }
 Named return values. More...
 

Functions

int mag3110_init (mag3110_t *dev, const mag3110_params_t *params)
 Initialise the MAG3110 magnetometer driver. More...
 
int mag3110_set_user_offset (const mag3110_t *dev, int16_t x, int16_t y, int16_t z)
 Set user offset correction. More...
 
int mag3110_set_active (const mag3110_t *dev)
 Set active mode, this enables periodic measurements. More...
 
int mag3110_set_standby (const mag3110_t *dev)
 Set standby mode. More...
 
int mag3110_is_ready (const mag3110_t *dev)
 Check for new set of measurement data. More...
 
int mag3110_read (const mag3110_t *dev, mag3110_data_t *data)
 Read magnetometer's data. More...
 
int mag3110_read_dtemp (const mag3110_t *dev, int8_t *dtemp)
 Read die temperature. More...
 

Output data rate macros

#define MAG3110_DROS_8000_16   0
 Output Rate 80 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_4000_32   1
 Output Rate 40 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_2000_64   2
 Output Rate 20 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_1000_128   3
 Output Rate 10 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_4000_16   4
 Output Rate 40 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_2000_32   5
 Output Rate 20 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_1000_64   6
 Output Rate 10 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0500_128   7
 Output Rate 5 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_2000_16   8
 Output Rate 20 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_1000_32   9
 Output Rate 10 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_0500_64   10
 Output Rate 5 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0250_128   11
 Output Rate 2.5 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_1000_16   12
 Output Rate 10 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_0500_32   13
 Output Rate 5 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_0250_64   14
 Output Rate 2.5 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0125_128   15
 Output Rate 1.25 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_0500_16   16
 Output Rate 5 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_0250_32   17
 Output Rate 2.5 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_0125_64   18
 Output Rate 1.25 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0063_128   19
 Output Rate 0.63 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_0250_16   20
 Output Rate 2.5 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_0125_32   21
 Output Rate 1.25 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_0063_64   22
 Output Rate 0.63 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0031_128   23
 Output Rate 0.31 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_0125_16   24
 Output Rate 1.25 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_0063_32   25
 Output Rate 0.63 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_0031_64   26
 Output Rate 0.31 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0016_128   27
 Output Rate 0.16 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_0063_16   28
 Output Rate 0.63 Hz, Over Sample Ratio 16.
 
#define MAG3110_DROS_0031_32   29
 Output Rate 0.31 Hz, Over Sample Ratio 32.
 
#define MAG3110_DROS_0016_64   30
 Output Rate 0.16 Hz, Over Sample Ratio 64.
 
#define MAG3110_DROS_0008_128   31
 Output Rate 0.08 Hz, Over Sample Ratio 128.
 
#define MAG3110_DROS_DEFAULT   MAG3110_DROS_0125_128
 Default Setting for testing.
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Named return values.

Enumerator
MAG3110_OK 

all good

MAG3110_ERROR_I2C 

I2C communication failed.

MAG3110_ERROR_DEV 

Device MAG3110 not found.

MAG3110_ERROR_CNF 

Device configuration failed.

Definition at line 47 of file mag3110.h.

Function Documentation

◆ mag3110_init()

int mag3110_init ( mag3110_t dev,
const mag3110_params_t params 
)

Initialise the MAG3110 magnetometer driver.

Parameters
[out]devdevice descriptor of magnetometer to initialize
[in]paramsconfiguration parameters
Returns
0 on success
-1 if I2C communication failed
-2 if magnetometer test failed
-3 if magnetometer configuration failed

◆ mag3110_is_ready()

int mag3110_is_ready ( const mag3110_t dev)

Check for new set of measurement data.

Parameters
[in]devdevice descriptor of magnetometer
Returns
>0 if x-, y- and z-axis new sample is ready
0 if measurement is in progress
-1 on error

◆ mag3110_read()

int mag3110_read ( const mag3110_t dev,
mag3110_data_t data 
)

Read magnetometer's data.

To get the actual values for the magnetic field in $\mu T$, one have to divide the returned values from the magnetometer by 10.

Parameters
[in]devdevice descriptor of accelerometer
[out]datathe current magnetic field strength
Returns
0 on success
-1 on error

◆ mag3110_read_dtemp()

int mag3110_read_dtemp ( const mag3110_t dev,
int8_t *  dtemp 
)

Read die temperature.

Parameters
[in]devdevice descriptor of magnetometer
[out]dtempdie temperature
Returns
0 on success
-1 on error

◆ mag3110_set_active()

int mag3110_set_active ( const mag3110_t dev)

Set active mode, this enables periodic measurements.

Parameters
[out]devdevice descriptor of magnetometer
Returns
0 on success
-1 on error

◆ mag3110_set_standby()

int mag3110_set_standby ( const mag3110_t dev)

Set standby mode.

Parameters
[in]devdevice descriptor of magnetometer
Returns
0 on success
-1 on error

◆ mag3110_set_user_offset()

int mag3110_set_user_offset ( const mag3110_t dev,
int16_t  x,
int16_t  y,
int16_t  z 
)

Set user offset correction.

Offset correction register will be erased after accelerometer reset.

Parameters
[out]devdevice descriptor of magnetometer
[in]xoffset offset correction value for x-axis
[in]yoffset offset correction value for y-axis
[in]zoffset offset correction value for z-axis
Returns
0 on success
-1 on error