LSM303DLHC 3D accelerometer/magnetometer

Device driver for the LSM303DLHC 3D accelerometer/magnetometer. More...

Detailed Description

Files

file  lsm303dlhc.h
 Device driver interface for the LSM303DLHC 3D accelerometer/magnetometer.
 

Data Structures

struct  lsm303dlhc_3d_data_t
 3d data container More...
 
struct  lsm303dlhc_t
 Device descriptor for LSM303DLHC sensors. More...
 
struct  lsm303dlhc_params_t
 Data structure holding all the information needed for initialization. More...
 

Enumerations

enum  lsm303dlhc_acc_sample_rate_t {
  LSM303DLHC_ACC_SAMPLE_RATE_1HZ = 0x10, LSM303DLHC_ACC_SAMPLE_RATE_10HZ = 0x20, LSM303DLHC_ACC_SAMPLE_RATE_25HZ = 0x30, LSM303DLHC_ACC_SAMPLE_RATE_50HZ = 0x40,
  LSM303DLHC_ACC_SAMPLE_RATE_100HZ = 0x50, LSM303DLHC_ACC_SAMPLE_RATE_200HZ = 0x60, LSM303DLHC_ACC_SAMPLE_RATE_400HZ = 0x70, LSM303DLHC_ACC_SAMPLE_RATE_1620HZ = 0x80,
  LSM303DLHC_ACC_SAMPLE_RATE_N1344HZ_L5376HZ = 0x90
}
 Possible accelerometer sample rates. More...
 
enum  lsm303dlhc_acc_scale_t { LSM303DLHC_ACC_SCALE_2G = 0x00, LSM303DLHC_ACC_SCALE_4G = 0x10, LSM303DLHC_ACC_SCALE_8G = 0x20, LSM303DLHC_ACC_SCALE_16G = 0x30 }
 Possible accelerometer scales. More...
 
enum  lsm303dlhc_mag_sample_rate_t {
  LSM303DLHC_MAG_SAMPLE_RATE_0_75HZ = 0x00, LSM303DLHC_MAG_SAMPLE_RATE_1_5HZ = 0x04, LSM303DLHC_MAG_SAMPLE_RATE_3HZ = 0x08, LSM303DLHC_MAG_SAMPLE_RATE_7_5HZ = 0x0c,
  LSM303DLHC_MAG_SAMPLE_RATE_15HZ = 0x10, LSM303DLHC_MAG_SAMPLE_RATE_30HZ = 0x14, LSM303DLHC_MAG_SAMPLE_RATE_75HZ = 0x18, LSM303DLHC_MAG_SAMPLE_RATE_220HZ = 0x1c
}
 Possible magnetometer sample rates. More...
 
enum  lsm303dlhc_mag_gain_t {
  LSM303DLHC_MAG_GAIN_1100_980_GAUSS = 0x20, LSM303DLHC_MAG_GAIN_855_760_GAUSS = 0x40, LSM303DLHC_MAG_GAIN_670_600_GAUSS = 0x60, LSM303DLHC_MAG_GAIN_450_400_GAUSS = 0x80,
  LSM303DLHC_MAG_GAIN_400_355_GAUSS = 0xa0, LSM303DLHC_MAG_GAIN_330_295_GAUSS = 0xc0, LSM303DLHC_MAG_GAIN_230_205_GAUSS = 0xe0
}
 Possible magnetometer gain values. More...
 

Functions

int lsm303dlhc_init (lsm303dlhc_t *dev, i2c_t i2c, gpio_t acc_pin, gpio_t mag_pin, uint8_t acc_address, lsm303dlhc_acc_sample_rate_t acc_sample_rate, lsm303dlhc_acc_scale_t acc_scale, uint8_t mag_address, lsm303dlhc_mag_sample_rate_t mag_sample_rate, lsm303dlhc_mag_gain_t mag_gain)
 Initialize a new LSM303DLHC device. More...
 
int lsm303dlhc_read_acc (const lsm303dlhc_t *dev, lsm303dlhc_3d_data_t *data)
 Read a accelerometer value from the sensor. More...
 
int lsm303dlhc_read_mag (const lsm303dlhc_t *dev, lsm303dlhc_3d_data_t *data)
 Read a magnetometer value from the sensor. More...
 
int lsm303dlhc_read_temp (const lsm303dlhc_t *dev, int16_t *value)
 Read a temperature value from the sensor. More...
 
int lsm303dlhc_enable (const lsm303dlhc_t *dev)
 Enable the given sensor. More...
 
int lsm303dlhc_disable (const lsm303dlhc_t *dev)
 Disable the given sensor. More...
 
#define LSM303DLHC_ACC_DEFAULT_ADDRESS   (0x19)
 The sensors default I2C address.
 
#define LSM303DLHC_MAG_DEFAULT_ADDRESS   (0x1e)
 

Enumeration Type Documentation

◆ lsm303dlhc_acc_sample_rate_t

Enumerator
LSM303DLHC_ACC_SAMPLE_RATE_1HZ 

1Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_10HZ 

10Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_25HZ 

25Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_50HZ 

50Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_100HZ 

100Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_200HZ 

200Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_400HZ 

400Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_1620HZ 

1620Hz sample rate

LSM303DLHC_ACC_SAMPLE_RATE_N1344HZ_L5376HZ 

1344Hz normal mode, 5376Hz low power mode

Definition at line 43 of file lsm303dlhc.h.

◆ lsm303dlhc_acc_scale_t

Enumerator
LSM303DLHC_ACC_SCALE_2G 

+- 2g range

LSM303DLHC_ACC_SCALE_4G 

+- 4g range

LSM303DLHC_ACC_SCALE_8G 

+- 8g range

LSM303DLHC_ACC_SCALE_16G 

+-16g range

Definition at line 59 of file lsm303dlhc.h.

◆ lsm303dlhc_mag_gain_t

Enumerator
LSM303DLHC_MAG_GAIN_1100_980_GAUSS 

1100Gauss XYZ 980Gauss Z

LSM303DLHC_MAG_GAIN_855_760_GAUSS 

855Gauss XYZ 760Gauss Z

LSM303DLHC_MAG_GAIN_670_600_GAUSS 

670Gauss XYZ 600Gauss Z

LSM303DLHC_MAG_GAIN_450_400_GAUSS 

450Gauss XYZ 400Gauss Z

LSM303DLHC_MAG_GAIN_400_355_GAUSS 

400Gauss XYZ 355Gauss Z

LSM303DLHC_MAG_GAIN_330_295_GAUSS 

330Gauss XYZ 295Gauss Z

LSM303DLHC_MAG_GAIN_230_205_GAUSS 

230Gauss XYZ 205Gauss Z

Definition at line 83 of file lsm303dlhc.h.

◆ lsm303dlhc_mag_sample_rate_t

Enumerator
LSM303DLHC_MAG_SAMPLE_RATE_0_75HZ 

0.75Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_1_5HZ 

1.5 Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_3HZ 

3 Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_7_5HZ 

7.5 Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_15HZ 

15 Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_30HZ 

30 Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_75HZ 

75 Hz sample rate

LSM303DLHC_MAG_SAMPLE_RATE_220HZ 

220 Hz sample rate

Definition at line 69 of file lsm303dlhc.h.

Function Documentation

◆ lsm303dlhc_disable()

int lsm303dlhc_disable ( const lsm303dlhc_t dev)
Parameters
[in]devdevice descriptor of an LSM303DLHC device
Returns
0 on success
-1 on error

◆ lsm303dlhc_enable()

int lsm303dlhc_enable ( const lsm303dlhc_t dev)
Parameters
[in]devdevice descriptor of an LSM303DLHC device
Returns
0 on success
-1 on error

◆ lsm303dlhc_init()

int lsm303dlhc_init ( lsm303dlhc_t dev,
i2c_t  i2c,
gpio_t  acc_pin,
gpio_t  mag_pin,
uint8_t  acc_address,
lsm303dlhc_acc_sample_rate_t  acc_sample_rate,
lsm303dlhc_acc_scale_t  acc_scale,
uint8_t  mag_address,
lsm303dlhc_mag_sample_rate_t  mag_sample_rate,
lsm303dlhc_mag_gain_t  mag_gain 
)
Parameters
[in]devdevice descriptor of an LSM303DLHC device
[in]i2cI2C device the sensor is connected to
[in]acc_pinGPIO pin connected to accelerometer
[in]mag_pinGPIO pin connected to magnetometer
[in]acc_addressI2C address of the accelerometer
[in]acc_sample_rateaccelerometer sample rate
[in]acc_scaleaccelerometer scale (from +- 2g to +-16g)
[in]mag_addressI2C address of the magnetometer
[in]mag_sample_ratemagnetometer sample rate
[in]mag_gainmagnetometer gain
Returns
0 on success
-1 on error

◆ lsm303dlhc_read_acc()

int lsm303dlhc_read_acc ( const lsm303dlhc_t dev,
lsm303dlhc_3d_data_t data 
)

This function provides raw acceleration data. To get the corresponding values in g please refer to the following table: measurement range | factor -----------------—+------— +- 2g | 1*10^-3 +- 4g | 2*10^-3 +- 8g | 4*10^-3 +-16g | 8*10^-3

Parameters
[in]devdevice descriptor of an LSM303DLHC device
[out]datathe measured accelerometer data
Returns
0 on success
-1 on error

◆ lsm303dlhc_read_mag()

int lsm303dlhc_read_mag ( const lsm303dlhc_t dev,
lsm303dlhc_3d_data_t data 
)

This function returns raw magnetic data. To get the corresponding values in gauss please refer to the following table: measurement range | factor -----------------—+------— +- 1.3 gauss | 1/1100 +- 1.9 gauss | 1/855 +- 2.5 gauss | 1/670 +- 4.0 gauss | 1/450 +- 4.7 gauss | 1/400 +- 5.6 gauss | 1/330 +- 8.1 gauss | 1/230

Parameters
[in]devdevice descriptor of an LSM303DLHC device
[out]datathe measured magnetometer data
Returns
0 on success
-1 on error

◆ lsm303dlhc_read_temp()

int lsm303dlhc_read_temp ( const lsm303dlhc_t dev,
int16_t *  value 
)
Parameters
[in]devdevice descriptor of an LSM303DLHC device
[out]valuethe measured temperature
Returns
0 on success
-1 on error