upm
1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
|
Go to the source code of this file.
Data Structures | |
struct | _lsm6dsl_context |
Functions | |
lsm6dsl_context | lsm6dsl_init (int bus, int addr, int cs) |
void | lsm6dsl_close (lsm6dsl_context dev) |
upm_result_t | lsm6dsl_update (const lsm6dsl_context dev) |
uint8_t | lsm6dsl_get_chip_id (const lsm6dsl_context dev) |
upm_result_t | lsm6dsl_devinit (const lsm6dsl_context dev, LSM6DSL_XL_ODR_T acc_odr, LSM6DSL_XL_FS_T acc_fs, LSM6DSL_G_ODR_T gyr_odr, LSM6DSL_G_FS_T gyr_fs) |
upm_result_t | lsm6dsl_set_acc_odr (const lsm6dsl_context dev, LSM6DSL_XL_ODR_T odr) |
upm_result_t | lsm6dsl_set_gyr_odr (const lsm6dsl_context dev, LSM6DSL_G_ODR_T odr) |
upm_result_t | lsm6dsl_set_acc_full_scale (const lsm6dsl_context dev, LSM6DSL_XL_FS_T fs) |
upm_result_t | lsm6dsl_set_gyr_full_scale (const lsm6dsl_context dev, LSM6DSL_G_FS_T fs) |
void | lsm6dsl_get_accelerometer (const lsm6dsl_context dev, float *x, float *y, float *z) |
void | lsm6dsl_get_gyroscope (const lsm6dsl_context dev, float *x, float *y, float *z) |
float | lsm6dsl_get_temperature (const lsm6dsl_context dev) |
upm_result_t | lsm6dsl_high_performance (const lsm6dsl_context dev, bool enable) |
upm_result_t | lsm6dsl_reset (const lsm6dsl_context dev) |
upm_result_t | lsm6dsl_set_interrupt_active_high (const lsm6dsl_context dev, bool high) |
upm_result_t | lsm6dsl_set_interrupt_push_pull (const lsm6dsl_context dev, bool pp) |
uint8_t | lsm6dsl_get_status (const lsm6dsl_context dev) |
upm_result_t | lsm6dsl_set_acc_offsets (const lsm6dsl_context dev, int x, int y, int z, bool weight) |
upm_result_t | lsm6dsl_install_isr (const lsm6dsl_context dev, LSM6DSL_INTERRUPT_PINS_T intr, int gpio, mraa_gpio_edge_t level, void(*isr)(void *), void *arg) |
void | lsm6dsl_uninstall_isr (const lsm6dsl_context dev, LSM6DSL_INTERRUPT_PINS_T intr) |
uint8_t | lsm6dsl_read_reg (const lsm6dsl_context dev, uint8_t reg) |
int | lsm6dsl_read_regs (const lsm6dsl_context dev, uint8_t reg, uint8_t *buffer, int len) |
upm_result_t | lsm6dsl_write_reg (const lsm6dsl_context dev, uint8_t reg, uint8_t val) |
Typedefs | |
typedef struct _lsm6dsl_context * | lsm6dsl_context |
lsm6dsl_context lsm6dsl_init | ( | int | bus, |
int | addr, | ||
int | cs | ||
) |
LSM6DSL initialization.
This device can support both I2C and SPI. For SPI, set the addr to -1, and specify a positive integer representing the Chip Select (CS) pin for the cs argument. If you are using a hardware CS pin (like Intel Edison with Arduino breakout), then you can connect the proper pin to the hardware CS pin on your MCU and supply -1 for cs.
bus | I2C or SPI bus to use |
addr | The address for this device, or -1 for SPI |
cs | The gpio pin to use for the SPI Chip Select. Use -1 for I2C or for SPI with a hardware controlled pin. |
void lsm6dsl_close | ( | lsm6dsl_context | dev | ) |
LSM6DSL Destructor
dev | The device context |
upm_result_t lsm6dsl_update | ( | const lsm6dsl_context | dev | ) |
Update the internal stored values from sensor data
dev | The device context |
uint8_t lsm6dsl_get_chip_id | ( | const lsm6dsl_context | dev | ) |
Return the chip ID
dev | The device context |
upm_result_t lsm6dsl_devinit | ( | const lsm6dsl_context | dev, |
LSM6DSL_XL_ODR_T | acc_odr, | ||
LSM6DSL_XL_FS_T | acc_fs, | ||
LSM6DSL_G_ODR_T | gyr_odr, | ||
LSM6DSL_G_FS_T | gyr_fs | ||
) |
Initialize the device and start operation. This function is called from lsm6dsl_init(), so it will not need to be called by a user unless the device is reset. It sets the accelerometer and gyroscope ODR and FS modes, and enables BDU, register auto-increment, and high performance mode.
dev | The device context |
acc_odr | One of the LSM6DSL_XL_ODR_T values |
acc_fs | One of the LSM6DSL_XL_FS_T values |
gyr_odr | One of the LSM6DSL_G_ODR_T values |
gyr_fs | One of the LSM6DSL_G_FS_T values |
upm_result_t lsm6dsl_set_acc_odr | ( | const lsm6dsl_context | dev, |
LSM6DSL_XL_ODR_T | odr | ||
) |
Set the output data rate (ODR) of the accelerometer
dev | The device context |
odr | One of the LSM6DSL_XL_ODR_T values |
upm_result_t lsm6dsl_set_gyr_odr | ( | const lsm6dsl_context | dev, |
LSM6DSL_G_ODR_T | odr | ||
) |
Set the output data rate (ODR) of the gyroscope
dev | The device context |
odr | One of the LSM6DSL_G_ODR_T values |
upm_result_t lsm6dsl_set_acc_full_scale | ( | const lsm6dsl_context | dev, |
LSM6DSL_XL_FS_T | fs | ||
) |
Set the full scale (FS) of the accelerometer. This device supports a full scale of 2, 4, 8, and 16G.
dev | The device context |
fs | One of the LSM6DSL_XL_FS_T values |
upm_result_t lsm6dsl_set_gyr_full_scale | ( | const lsm6dsl_context | dev, |
LSM6DSL_G_FS_T | fs | ||
) |
Set the full scale (FS) of the gyroscope. This device supports a full scale of 125, 245, 500, 1000, and 2000 degrees per second (DPS)
dev | The device context |
fs | One of the LSM6DSL_G_FS_T values |
void lsm6dsl_get_accelerometer | ( | const lsm6dsl_context | dev, |
float * | x, | ||
float * | y, | ||
float * | z | ||
) |
Return accelerometer data in gravities (g). lsm6dsl_update() must have been called prior to calling this function.
dev | The device context |
x | Pointer to a floating point value that will have the current x component placed into it |
y | Pointer to a floating point value that will have the current y component placed into it |
z | Pointer to a floating point value that will have the current z component placed into it |
void lsm6dsl_get_gyroscope | ( | const lsm6dsl_context | dev, |
float * | x, | ||
float * | y, | ||
float * | z | ||
) |
Return gyroscope data in degrees per second (DPS). lsm6dsl_update() must have been called prior to calling this function.
dev | The device context |
x | Pointer to a floating point value that will have the current x component placed into it |
y | Pointer to a floating point value that will have the current y component placed into it |
z | Pointer to a floating point value that will have the current z component placed into it |
float lsm6dsl_get_temperature | ( | const lsm6dsl_context | dev | ) |
Return the current measured temperature. Note, this is not ambient temperature. lsm6dsl_update() must have been called prior to calling this function.
dev | The device context |
upm_result_t lsm6dsl_high_performance | ( | const lsm6dsl_context | dev, |
bool | enable | ||
) |
Enable accelerometer and gyroscope high performance modes. These are further defined by the respective ODR settings to allow low power, and normal/high-performance modes.
dev | The device context |
enable | true to enable high performance mode, false otherwise |
upm_result_t lsm6dsl_reset | ( | const lsm6dsl_context | dev | ) |
Reset the device as if during a power on reset. All configured values are lost when this happens. You should call lsm6dsl_devinit() afterwards, or at least perform the same initialization lsm6dsl_devinit() does before continuing.
dev | The device context |
upm_result_t lsm6dsl_set_interrupt_active_high | ( | const lsm6dsl_context | dev, |
bool | high | ||
) |
Indicate whether the interrupt should be active high (default) or active low. See the datasheet for details.
dev | The device context |
high | true for active high, false for active low |
upm_result_t lsm6dsl_set_interrupt_push_pull | ( | const lsm6dsl_context | dev, |
bool | pp | ||
) |
Indicate whether interrupts are push-pull (default) or open drain. See the datasheet for details.
dev | The device context |
pp | true for push-pull, false for open-drain |
uint8_t lsm6dsl_get_status | ( | const lsm6dsl_context | dev | ) |
Return the contents of the status register
dev | The device context |
upm_result_t lsm6dsl_set_acc_offsets | ( | const lsm6dsl_context | dev, |
int | x, | ||
int | y, | ||
int | z, | ||
bool | weight | ||
) |
Set accelerometer offsets for each axis. In the case of X and Y, the offsets will be internally added before being placed into the output registers. For the Z offset, the value will be subtracted before being placed into the output registers. The weight is used to determine the weighing of the offset bits. All offsets must be in the range of -127 to 127.
dev | The device context |
x | X axis offset in the range -127 to 127 |
y | Y axis offset in the range -127 to 127 |
z | Z axis offset in the range -127 to 127 |
weight | When true, the the offset will be weighted at 2^-6 g/LSB, when false the weighting will be 2^-10 g/LSB |
upm_result_t lsm6dsl_install_isr | ( | const lsm6dsl_context | dev, |
LSM6DSL_INTERRUPT_PINS_T | intr, | ||
int | gpio, | ||
mraa_gpio_edge_t | level, | ||
void(*)(void *) | isr, | ||
void * | arg | ||
) |
Install an interrupt handler
dev | The device context |
intr | One of the LSM6DSL_INTERRUPT_PINS_T values specifying which interrupt pin you are installing |
gpio | GPIO pin to use as interrupt pin |
level | The interrupt trigger level (one of mraa_gpio_edge_t values). Make sure that you have configured the interrupt pin properly for whatever level you choose. |
isr | The interrupt handler, accepting a void * argument |
arg | The argument to pass the the interrupt handler |
void lsm6dsl_uninstall_isr | ( | const lsm6dsl_context | dev, |
LSM6DSL_INTERRUPT_PINS_T | intr | ||
) |
Uninstall a previously installed interrupt handler
dev | The device context |
intr | One of the LSM6DSL_INTERRUPT_PINS_T values specifying which interrupt pin you are removing |
uint8_t lsm6dsl_read_reg | ( | const lsm6dsl_context | dev, |
uint8_t | reg | ||
) |
Read a register
dev | The device context |
reg | The register to read |
int lsm6dsl_read_regs | ( | const lsm6dsl_context | dev, |
uint8_t | reg, | ||
uint8_t * | buffer, | ||
int | len | ||
) |
Read contiguous registers into a buffer
dev | The device context |
buffer | The buffer to store the results |
len | The number of registers to read |
upm_result_t lsm6dsl_write_reg | ( | const lsm6dsl_context | dev, |
uint8_t | reg, | ||
uint8_t | val | ||
) |
Write to a register
dev | The device context |
reg | The register to write to |
val | The value to write |
typedef struct _lsm6dsl_context * lsm6dsl_context |
Device context