I am trying to debug an error when using the FIFO on the bmx160 (I am using the driver for the bmi160 as Bosch recommends).
When I read data from the FIFO by calling bmi160_get_fifo_data (https://github.com/BoschSensortec/BMI160_driver/blob/master/bmi160.c#L2157) , the function returns -1 (BMI160_E_NULL_PTR).
I have debugged the code by adding print statements to see what’s happening. When attempting to get the fill level of the FIFO, https://github.com/BoschSensortec/BMI160_driver/blob/master/bmi160.c#L5485, then the result is -1.
The error is happening only occasionally. Sometimes I can read 10minutes of data without issue, sometimes I can read no more than 30s before I receive an error code.
I can share code, but I am writing in Rust and not C.
You could refer to the example code in the attachment. FIFO poll and FIFO watermark interrupt reading work well without the error you described.
Hi, thanks for providing that code, however it doesn't build and seems to be missing header files.
I can provide C code which exhibits the same error as the Rust implementation. Perhaps you could take a look at my C code to see if something is wrong?
I didn't put the C code and header file of sensor API in the attachment. They are on GitHub.
BMI160 sensor API: https://github.com/BoschSensortec/BMI160_driver
BMM150 sensor API: https://github.com/BoschSensortec/BMM150-Sensor-API
The api was provided along with the example you gave. It even includes the modification to change the chip ID from 0xD1 to 0xD8.
What is not provided is the following two headers in main.c:
Should I not be using main.c (which has an ST copyright in it)? There is no other entrypoint provided in the code you sent.
If you could look at the code I provided, which only has a dependency on the BMI160 api, I would be grateful.