LSM303AGR Class
- ID: lsm303agr
- Name: Ultra-compact high-performance eCompass module
- Category: compass
- Manufacturer: stmicro
- Connection: i2c gpio
- Link: http://www.st.com/en/mems-and-sensors/lsm303agr.html
The LSM303AGR is an ultra-low-power high-performance system-in-package featuring a 3D digital linear acceleration sensor and a 3D digital magnetic sensor. The LSM303AGR has linear acceleration full scales of 2g/4g/8g/16g and a magnetic field dynamic range of 50 Gauss.
Not all functionality of this chip has been implemented in this driver, however all the pieces are present to add any desired functionality. This driver supports only I2C operation.
This device requires 3.3v operation.
Item Index
Methods
- LSM303AGR
- update
- getMagnetometer
- getMagnetometer
- getAccelerometer
- getAccelerometer
- getTemperature
- init
- setFullScale
- setPowerMode
- setAccelerometerODR
- setMagnetometerODR
- getAccelerometerInt1Config
- getAccelerometerInt2Config
- setAccelerometerInt1Config
- setAccelerometerInt2Config
- getMagnetometerIntConfig
- setMagnetometerIntConfig
- getAccelerometerInt1Src
- getAccelerometerInt2Src
- getMagnetometerIntSrc
- installISR
- uninstallISR
Methods
LSM303AGR
-
bus
-
acc_addr
-
mag_addr
LSM303AGR constructor
This driver can only support I2C. SPI requires support for 3-wire SPI which we cannot currently handle. Only the basic capabilities of the device are supported, however there is a full register map defined ( lsm303agr_defs.h ), and with access to the bus read/write functions, any desired additional functionality can be implemented.
Parameters:
-
bus
NumberI2C bus to use
-
acc_addr
NumberThe I2C address of the accelerometer. Use -1 if you do not wish to use the accelerometer.
-
mag_addr
NumberThe I2C address of the magnetometer. Use -1 if you do not wish to use the magnetometer.
Returns:
The device context, or NULL if an error occurred
update
()
Update the internal stored values from sensor data. This method must be called before querying the acceleration, magnetometer, or temperature.
getMagnetometer
-
x
-
y
-
z
Return magnetometer data in micro-Teslas (uT). update() must have been called prior to calling this method.
Parameters:
-
x
Float *Pointer to a floating point value that will have the current x component placed into it
-
y
Float *Pointer to a floating point value that will have the current y component placed into it
-
z
Float *Pointer to a floating point value that will have the current z component placed into it
getMagnetometer
()
Std::vector float
Return magnetometer data in micro-Teslas (uT) in the form of a floating point vector. update() must have been called prior to calling this method.
Returns:
A floating point vector containing x, y, and z in that order
getAccelerometer
-
x
-
y
-
z
Return acceleration data in gravities. update() must have been called prior to calling this method.
Parameters:
-
x
Float *Pointer to a floating point value that will have the current x component placed into it
-
y
Float *Pointer to a floating point value that will have the current y component placed into it
-
z
Float *Pointer to a floating point value that will have the current z component placed into it
getAccelerometer
()
Std::vector float
Return acceleration data in gravities in the form of a floating point vector. update() must have been called prior to calling this method.
Returns:
A floating point vector containing x, y, and z in that order
getTemperature
()
Number
Return temperature data in degrees Celsius. NOTE: This is not the ambient room temperature. update() must have been called prior to calling this method.
Returns:
Temperature in degrees Celsius
init
-
usage
Initialize the device and start operation. This function is called from the constructor so it will not typically need to be called by a user unless the device is reset. It will initialize the accelerometer and magnetometer (if enabled) to certain default running modes.
For the accelerometer, the full scale will be set to 2G, mode continuous, all axes enabled, BDU enabled, temperature measurement enabled, and an output data rate (ODR) of 100Hz with the power mode set at high resolution.
For the magnetometer, temperature compensation will be enabled, mode continuous, and an output data rate of 10Hz with the power mode set at high resolution.
Parameters:
-
usage
LSM303AGR_POWER_MODE_TOne of the LSM303AGR_POWER_MODE_T values. The default is LSM303AGR_POWER_HIGH_RESOLUTION.
setFullScale
-
fs
Set the full scale (sensitivity) value for the accelerometer. This device supports 2G, 4G, 8G, and 16G full scale modes.
Parameters:
-
fs
LSM303AGR_A_FS_TOne of the LSM303AGR_A_FS_T values
setPowerMode
-
mode
Set an operating power mode. There are 3 modes available: low power, normal, and high resolution.
Parameters:
-
mode
LSM303AGR_POWER_MODE_TOne of the LSM303AGR_POWER_MODE_T values. The default set at initialization time is LSM303AGR_POWER_HIGH_RESOLUTION.
setAccelerometerODR
-
odr
Set the accelerometer output data rate (ODR)
Parameters:
-
odr
LSM303AGR_A_ODR_TOne of the LSM303AGR_A_ODR_T values. The default set at initialization time is LSM303AGR_A_ODR_100HZ.
setMagnetometerODR
-
odr
Set the magnetometer output data rate (ODR)
Parameters:
-
odr
LSM303AGR_CFG_A_M_ODR_TOne of the LSM303AGR_CFG_A_M_ODR_T values. The default set at initialization time is LSM303AGR_CFG_A_M_ODR_10HZ.
getAccelerometerInt1Config
()
Number
Return the accelerometer interrupt 1 config register. This register allows you to enable various interrupt conditions. See the datasheet for details.
Returns:
A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits
getAccelerometerInt2Config
()
Number
Return the accelerometer interrupt 2 config register. This register allows you to enable various interrupt conditions. See the datasheet for details.
Returns:
A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits
setAccelerometerInt1Config
-
bits
Set the accelerometer interrupt 1 config register. See the datasheet for details.
Parameters:
-
bits
NumberA bitmask of LSM303AGR_INT_CFG_A_BITS_T bits
setAccelerometerInt2Config
-
bits
Set the accelerometer interrupt 2 config register. See the datasheet for details.
Parameters:
-
bits
NumberA bitmask of LSM303AGR_INT_CFG_A_BITS_T bits
getMagnetometerIntConfig
()
Number
Return the magnetometer interrupt config register. See the datasheet for details.
Returns:
A bitmask of LSM303AGR_INT_CTRL_REG_M_BITS_T bits
setMagnetometerIntConfig
-
bits
Set the magnetometer (mag) interrupt config register. See the datasheet for details.
Parameters:
-
bits
NumberA bitmask of LSM303AGR_INT_CTRL_REG_M_BITS_T bits
getAccelerometerInt1Src
()
Number
Return the accelerometer interrupt 1 source register. This register indicates which interrupts have been triggered. See the datasheet for details.
Returns:
a bitmask of LSM303AGR_INT_SRC_A_BITS_T bits
getAccelerometerInt2Src
()
Number
Return the accelerometer interrupt 2 source register. This register indicates which interrupts have been triggered. See the datasheet for details.
Returns:
a bitmask of LSM303AGR_INT_SRC_A_BITS_T bits
getMagnetometerIntSrc
()
Number
Return the magnetometer (mag) interrupt source register. This register indicates which interrupts have been triggered. See the datasheet for details.
Returns:
a bitmask of LSM303AGR_INT_SRC_REG_M_BITS_T bits
installISR
-
intr
-
gpio
-
level
-
isr
-
arg
Install an interrupt handler
Parameters:
-
intr
LSM303AGR_INTERRUPT_PINS_TOne of the LSM303AGR_INTERRUPT_PINS_T values specifying which interrupt pin you are installing
-
gpio
NumberGPIO pin to use as interrupt pin
-
level
Mraa::EdgeThe interrupt trigger level (one of mraa::Edge values). Make sure that you have configured the interrupt pin properly for whatever level you choose.
-
isr
FunctionThe interrupt handler, accepting a void * argument
-
arg
Void *The argument to pass the the interrupt handler
uninstallISR
-
intr
Uninstall a previously installed interrupt handler
Parameters:
-
intr
LSM303AGR_INTERRUPT_PINS_TOne of the LSM303AGR_INTERRUPT_PINS_T values specifying which interrupt pin you are removing