BMM150: Discrepancy between data sheet and reference driver on GitHub

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

Best reply by hor63

Thanks a lot for the quick answer.

One additional question regarding BMX160: Are the MAG data transferred verbatim in the format as described for BMM150 by the MAG interface, or somehow processed? The BMX160 data sheet does not mention anything but just states high- and low-byte for the mag data.

Thanks,

Kai

View original
4 replies
Resolved