29 void imu_setMagCalibration(
int mxBias,
int myBias,
int mzBias)
31 __mBiasRaw[X_AXIS] = mxBias;
32 __mBiasRaw[Y_AXIS] = myBias;
33 __mBiasRaw[Z_AXIS] = mzBias;
35 unsigned char msb, lsb;
36 for(
int k = 0; k < 3; k++)
38 msb = (__mBiasRaw[k] & 0xFF00) >> 8;
39 lsb = __mBiasRaw[k] & 0x00FF;
40 imu_SPIwriteByte(__pinM, OFFSET_X_REG_L_M + (2 * k), lsb);
41 imu_SPIwriteByte(__pinM, OFFSET_X_REG_H_M + (2 * k), msb);
44 i2c_out(eeBus, 0b1010000, 63280, 2,
"LSM9DS1", 7);
46 char biasBuf[7] = {
'm', 0, 0, 0, 0, 0, 0};
48 for (
int k = 0; k < 3; k++)
50 biasBuf[k * 2 + 1] = (__mBiasRaw[k] >> 8) & 0xFF;
51 biasBuf[k * 2 + 2] = __mBiasRaw[k] & 0xFF;
54 i2c_out(eeBus, 0b1010000, 63287, 2, biasBuf, 7);
59 void imu_setAccelCalibration(
int axBias,
int ayBias,
int azBias)
61 __aBiasRaw[X_AXIS] = axBias;
62 __aBiasRaw[Y_AXIS] = ayBias;
63 __aBiasRaw[Z_AXIS] = azBias;
65 i2c_out(eeBus, 0b1010000, 63280, 2,
"LSM9DS1", 7);
67 char biasBuf[7] = {
'a', 0, 0, 0, 0, 0, 0};
69 for (
int k = 0; k < 3; k++)
71 biasBuf[k * 2 + 1] = (__aBiasRaw[k] >> 8) & 0xFF;
72 biasBuf[k * 2 + 2] = __aBiasRaw[k] & 0xFF;
75 i2c_out(eeBus, 0b1010000, 63294, 2, biasBuf, 7);
81 void imu_setGyroCalibration(
int gxBias,
int gyBias,
int gzBias)
83 __gBiasRaw[X_AXIS] = gxBias;
84 __gBiasRaw[Y_AXIS] = gyBias;
85 __gBiasRaw[Z_AXIS] = gzBias;
87 i2c_out(eeBus, 0b1010000, 63280, 2,
"LSM9DS1", 7);
89 char biasBuf[7] = {
'g', 0, 0, 0, 0, 0, 0};
91 for (
int k = 0; k < 3; k++)
93 biasBuf[k * 2 + 1] = (__gBiasRaw[k] >> 8) & 0xFF;
94 biasBuf[k * 2 + 2] = __gBiasRaw[k] & 0xFF;
97 i2c_out(eeBus, 0b1010000, 63301, 2, biasBuf, 7);