2025-09-16 1:03 AM - last edited on 2025-09-16 1:14 AM by Andrew Neil
Hi,
I am using LSM6DSL accelerometer sensor.
I have configure it to use acc only, +-16g, @27Hz, and using FIFO.
Here is the configuration I am doing:
uint8_t val = 0x04;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_CTRL3_C, &val, 1);
val = 0x24;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_CTRL1_XL, &val, 1);
val = 0x0;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_CTRL2_G, &val, 1);
val = 0x0;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL1, &val, 1);
val = 0x0;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL2, &val, 1);
val = 0x09;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL3, &val, 1);
val = 0x0;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL4, &val, 1);
val = 0x16;
err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL5, &val, 1);
val = 0xF0;
err = lsm6dsl_write_reg(p_ctx, 0x18, &val, 1);
val = 0x00;
err = lsm6dsl_write_reg(p_ctx, 0x19, &val, 1);
ret = lsm6dsl_read_reg(ctx, LSM6DSL_FIFO_STATUS1, (uint8_t*)&fifo_status1, 1);
if(ret == 0) {
ret = lsm6dsl_read_reg(ctx, LSM6DSL_FIFO_STATUS2, (uint8_t*)&fifo_status2, 1);
if(ret == 0) {
*val = (uint8_t)fifo_status1.diff_fifo | ((uint16_t)((uint8_t)fifo_status2.diff_fifo & 0x07) << 8);
}
}
ret = lsm6dsl_read_reg(ctx, LSM6DSL_FIFO_DATA_OUT_L, buff, 6);
Edited to apply source code formatting - please see How to insert source code for future reference.