Hi,
there is an obvious discrepancy between the BMM150 datasheet and the reference driver on GitHub:
The magetometer data lower byte (here for X and Y axis) is
Bit 7: Data LSB <4>
Bit 6: Data LSB <3>
Bit 5: Data LSB <2>
Bit 4: Data LSB <1>
Bit 3: Data LSB <0>
Bit 2: Reserved - 0
Bit 1: Reserved - 0
Bit0: SelfTestX.
However the reference code of the driver (here line 840 in bmm150.c) seems to assume that the lower byte of mag data contains significant mag data in bits 0-4, and bits 5-7 are 0:
msb_data = ((int16_t)((int8_t)reg_data[1])) * 32;
/* Raw mag X axis data */
raw_mag_data.raw_datax = (int16_t)(msb_data | reg_data[0]);
Can one please explain the discrepancy?
Thanks,
Kai