forked from Archive/PX4-Autopilot
lsm303d: added I2C disable based on method from ST engineering support
This commit is contained in:
parent
cb76f07d31
commit
9214154831
|
@ -300,6 +300,11 @@ private:
|
||||||
*/
|
*/
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* disable I2C on the chip
|
||||||
|
*/
|
||||||
|
void disable_i2c();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static trampoline from the hrt_call context; because we don't have a
|
* Static trampoline from the hrt_call context; because we don't have a
|
||||||
* generic hrt wrapper yet.
|
* generic hrt wrapper yet.
|
||||||
|
@ -563,9 +568,25 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LSM303D::disable_i2c(void)
|
||||||
|
{
|
||||||
|
uint8_t a = read_reg(0x02);
|
||||||
|
write_reg(0x02, (0x10 | a));
|
||||||
|
a = read_reg(0x02);
|
||||||
|
write_reg(0x02, (0xF7 & a));
|
||||||
|
a = read_reg(0x15);
|
||||||
|
write_reg(0x15, (0x80 | a));
|
||||||
|
a = read_reg(0x02);
|
||||||
|
write_reg(0x02, (0xE7 & a));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LSM303D::reset()
|
LSM303D::reset()
|
||||||
{
|
{
|
||||||
|
// ensure the chip doesn't interpret any other bus traffic as I2C
|
||||||
|
disable_i2c();
|
||||||
|
|
||||||
/* enable accel*/
|
/* enable accel*/
|
||||||
_reg1_expected = REG1_X_ENABLE_A | REG1_Y_ENABLE_A | REG1_Z_ENABLE_A | REG1_BDU_UPDATE | REG1_RATE_800HZ_A;
|
_reg1_expected = REG1_X_ENABLE_A | REG1_Y_ENABLE_A | REG1_Z_ENABLE_A | REG1_BDU_UPDATE | REG1_RATE_800HZ_A;
|
||||||
write_reg(ADDR_CTRL_REG1, _reg1_expected);
|
write_reg(ADDR_CTRL_REG1, _reg1_expected);
|
||||||
|
|
Loading…
Reference in New Issue