We have developed a product with BMI160 as motion sensor of choice. For the last year it has only been used to collect data about motion. We only collect agregated data in form on min, max, everage values for g force. We noticed, that from time to time we get pikes and dips in the derrived values. Generally it constitues in on or 2 axis showing really high positive or negative values. We've verified that test units didn't have any motion that could cause such a chage.
Current hypothysis is that the way BMI is powered is the source of the promblem. I've use referance design for i2c as primary data bus. Both VDD and VDDIO powered from the same source, which is IO pin of microcontroller. i2c bus is pulled up to 3.3V from the duch regulator.
Maybe somebody had simmilar issue?
This behaviour is only triggered if we power on/off a set of sensors on the same i2c buss, but we could never concistantly replicate this issue to trigger the osciloscope. It happens randomly.
We've already tested changing power source for BMI – without any luck.
In the image: WM on/of is when sensors on the i2c bus are turned on/off, and WM off means they are disconnected from the bus.
min and max are values of the magnitude that is calculated from samples from all 3 axis.
Can you provide some detail information as following:
1. which ODR you are current using
2. which power mode you are current using (normal or low power mode)
3. when you turn off the GPIO of host MCU for VDD and VDDIO of sensor, is the I2C bus still powered?
4. when you mean turn on / off a set of sensors, do you mean BMI160 or other sensor on the same bus which cause BMI160 data spike?
1. We use 25hz ODR.
2. BMI is in normal power mode when we are activly sampling. We set it to low power mode when not using it.
3. yes, i2c bus is still powered.
4. We turn off power to other sensors: they are FDC1004, 2 x MCP9808/04 and EEPROM M24C02
Note that we have one more MCP9808, BQ27441-G1, LP55231 and Quectel L96 on the same bus. They are constantly on and proven to have no influence on the BMI160. Also, keeping all the sensors from 4. on will not create data spikes.
Can I provide extra information about the setup or test results?
Thi this has been one weird issue that we can't really figure out at the moment. Best solution right now is to isolate i2c bus to BMI160, but it would be very hard to implement.
I hope there's a sipmple explanation to what we see.