The friendly Operating System for the Internet of Things
MAG3110 3-Axis Digital Magnetometer

Driver for the Freescale MAG3110 magnetometer. More...

Detailed Description

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_t
 Device descriptor for MAG3110 magnetometer. More...
 

Macros

#define MAG3110_I2C_ADDRESS   0x0E
 Magnetometer Default Address.
 
#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.
 

Functions

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

Function Documentation

int mag3110_init ( mag3110_t dev,
i2c_t  i2c,
uint8_t  address,
uint8_t  dros 
)
Parameters
[out]devdevice descriptor of magnetometer to initialize
[in]i2cI2C bus the magnetometer is connected to
[in]addressmagnetometer's I2C slave address
[in]drosdata rate and over sampling selection
Returns
0 on success
-1 if dros parameter is wrong
-2 if initialization of I2C bus failed
-3 if magnetometer test failed
-4 if magnetometer configuration failed
int mag3110_is_ready ( mag3110_t dev)
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
int mag3110_read ( mag3110_t dev,
int16_t *  x,
int16_t *  y,
int16_t *  z,
uint8_t *  status 
)

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 magnetometer
[out]xx-axis magnetic field strength
[out]yy-axis magnetic field strength
[out]zz-axis magnetic field strength
[out]statusmagnetometer status register
Returns
0 on success
-1 on error
int mag3110_read_dtemp ( mag3110_t dev,
int8_t *  dtemp 
)
Parameters
[in]devdevice descriptor of magnetometer
[out]dtempdie temperature
Returns
0 on success
-1 on error
int mag3110_set_active ( mag3110_t dev)
Parameters
[out]devdevice descriptor of magnetometer
Returns
0 on success
-1 on error
int mag3110_set_standby ( mag3110_t dev)
Parameters
[in]devdevice descriptor of magnetometer
Returns
0 on success
-1 on error
int mag3110_set_user_offset ( mag3110_t dev,
int16_t  x,
int16_t  y,
int16_t  z 
)

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
int mag3110_test ( mag3110_t dev)

This function looks for Device ID of the MAG3110 magnetometer.

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