LSM6DSL: Added SW reset function.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Signed-off-by: Yilin Sun <imi415@imi.moe>
This commit is contained in:
parent
b48b9fb2d8
commit
23ff8ae04f
|
@ -2,14 +2,20 @@
|
|||
|
||||
#define LSM6DSL_REG_WHOAMI 0x0FU
|
||||
#define LSM6DSL_REG_CTRL1_XL 0x10U
|
||||
#define LSM6DSL_REG_CTRL3_C 0x12U
|
||||
#define LSM6DSL_REG_OUT_TEMP_L 0x20U
|
||||
#define LSM6DSL_REG_OUT_TEMP_H 0x21U
|
||||
|
||||
#define LSM6DSL_CONST_WHOAMI 0x6AU
|
||||
#define LSM6DSL_REG_CTRL3_C_SW_RESET_Pos (0U)
|
||||
#define LSM6DSL_REG_CTRL3_C_SW_RESET_Msk (1U << LSM6DSL_REG_CTRL3_C_SW_RESET_Pos)
|
||||
|
||||
#define LSM6DSL_CONST_TURN_ON_TIME_MS 35
|
||||
#define LSM6DSL_CONST_WHOAMI 0x6AU
|
||||
|
||||
#define LSM6DSL_MAXIMUM_MULTI_WRITE_SIZE 32
|
||||
|
||||
static ims_ret_t ims_lsm6dsl_whoami(ims_lsm6dsl_t *imu, uint8_t *whoami);
|
||||
static ims_ret_t ims_lsm6dsl_reset(ims_lsm6dsl_t *imu);
|
||||
|
||||
static ims_ret_t ims_lsm6dsl_read_register(ims_lsm6dsl_t *imu, uint8_t addr, uint8_t *data);
|
||||
static ims_ret_t ims_lsm6dsl_read_registers(ims_lsm6dsl_t *imu, uint8_t addr, uint8_t *data, uint16_t len);
|
||||
|
@ -26,6 +32,11 @@ ims_ret_t ims_lsm6dsl_init(ims_lsm6dsl_t *imu) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = ims_lsm6dsl_reset(imu);
|
||||
if (ret != IMS_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (who_am_i != LSM6DSL_CONST_WHOAMI) {
|
||||
return IMS_FAIL;
|
||||
}
|
||||
|
@ -62,6 +73,26 @@ static ims_ret_t ims_lsm6dsl_whoami(ims_lsm6dsl_t *imu, uint8_t *whoami) {
|
|||
return ims_lsm6dsl_read_register(imu, LSM6DSL_REG_WHOAMI, whoami);
|
||||
}
|
||||
|
||||
static ims_ret_t ims_lsm6dsl_reset(ims_lsm6dsl_t *imu) {
|
||||
ims_ret_t ret;
|
||||
|
||||
uint8_t ctrl3_c;
|
||||
|
||||
ret = ims_lsm6dsl_read_register(imu, LSM6DSL_REG_CTRL3_C, &ctrl3_c);
|
||||
if (ret != IMS_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ctrl3_c |= LSM6DSL_REG_CTRL3_C_SW_RESET_Msk;
|
||||
|
||||
ret = ims_lsm6dsl_write_register(imu, LSM6DSL_REG_CTRL3_C, ctrl3_c);
|
||||
if (ret != IMS_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return imu->cb.delay(imu->pdev, LSM6DSL_CONST_TURN_ON_TIME_MS);
|
||||
}
|
||||
|
||||
static ims_ret_t ims_lsm6dsl_read_register(ims_lsm6dsl_t *imu, uint8_t addr, uint8_t *data) {
|
||||
return ims_lsm6dsl_read_registers(imu, addr, data, 1U);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue