What are the programming steps required to get the BMM150 to update to the BMI160 FIFO?
I tried the following steps :
1) Reg 03 PMU Status - Mag = normal
2) Reg 7E CMD - Mag PMU = Normal
3) Reg 44 MAG_Conf - Set Magnetometer ODR
4) Reg 47 FIFO_Config - fifo_mag_en = 1
but from what I can tell the FIFO is not accepting mag data. The FIFO frame header doesn't change to indicate Magnetometer Data is included in the FIFO frame. For example with Mag, Accel and Gyro enabled the frame should be '156' and there should be 20 bytes per frame but with above steps I can't seem to get the mag bit enabled - the frame code equals "140" and there are only 12 data bytes per frame. What am I missing?
Solved! Go to Solution.
There is still some steps missing like mapping i2c address of BMM150 into BMI160 aux address register.
you can refer to the BMI160 API in Github.
Like function name "bmi160_aux_init" and "bmi160_set_aux_auto_mode".
Could you provide the steps in Python?
I see another Magnetometer question for the BMX160 in the community where there is code provided for magnetometer configuration. Is it the same code for the BMI160?
as I was told in this topic, "BMX160 is nothing other than a BMM150 connected to the auxiliary interface of a BMI160, but packed in a single device (this is why the part is 0.12mm thicker)". If I understand correctly, that means that the same procedure is used when reading all three sensors from BMX160 and from BMI160+BMM150. I'm not an expert so if anyone can confirm, that would be great. If the former is true, that means that you can use the code presented in said topic to read out all three sensors, but you also need to make proper hardware connections between BMI160 and BMM150.
Almost forgot, the code used in mentioned topic doesn't use FIFO, but I believe this and this is what you're looking for. Unfortunately I can't provide Python example, but it shouldn't be too hard to make a conversion.