I read BMI270 by ESP32 programmed in Arduino IDE so I cannot use the existing API directly, have to correct it substantially. By now reading accelerometer and gyro data directly, sample by sample is no problem but I need to use FIFO to shorten communication time to save the energy consumed.
I use API example file "fifo_full_headerless_mode.c" as a start point. For the beginning, having some difficulties with interrupts, I just want to read the FIFO content each 2 seconds, regardless of overflow. Using a part of the code from the said file which I understand is responsible for it. It reads 168 samples, but strange values (acc and gyro): first 45 samples are constant values , then some random values (not noise). But what puzzles me most is not the values, I understand something with ODR, etc., may be configured wrongly still, but the signals on the communication lines. I understand it should be packets about 2000 bytes long, right? But I observe 9 short bursts, about 2 bytes each, see attachment. But the code reports all bytes received (?!):
15:40:33.904 -> FIFO data bytes available : 2016
15:40:33.904 -> FIFO data bytes requested : 2016
15:40:33.904 -> FIFO accel frames requested : 170
15:40:33.904 -> FIFO accel frames extracted : 168
15:40:33.904 -> FIFO gyro frames requested : 170
15:40:33.938 -> FIFO gyro frames extracted : 168
But such amount of data does NOT go through the line! I have absolutely no clue, may be someone more experienced can give some ideas - where to investigate?
Here are values of registers I consider relevant, read at the end of setup():
15:55:27.068 -> Read 0x49 FIFO_CONFIG_1 HEX = C0 BIN = 11000000
15:55:27.068 -> Read 0x58 INT_MAP_DATA HEX = 41 BIN = 1000001
15:55:27.068 -> Read 0x53 INT1_IO_CTRL HEX = A BIN = 1010
15:55:27.101 -> Read 0x55 INT_LATCH HEX = 0 BIN = 0
- may some others need attention?
Attachment: SDA line of I2C interface. The same each 2 seconds.
Thanks