Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMI270 FIFO communication - strange I2C signals

    BMI270 FIFO communication - strange I2C signals

    Anatol
    Member

    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

    SDA_line_1.jpg

    5 REPLIES 5

    BSTRobin
    Community Moderator
    Community Moderator

    Hi Anatol,

    As you set ODR to 50 Hz and run example file "fifo_full_headerless_mode.c", 1 frame of data contains 12 bytes(6 bytes accel, 6 bytes gyro). Read the FIFO content each 2 seconds, the theoretical length of FIFO should be 12*50*2=1200 bytes, accel and gyro frame should be 100 frames.
    From your printed information, the actual length and the number of frames are larger than the theoretical value.

    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

    If you confirm that you have configured the correct ODR and read the data in exactly 2 seconds. Then the sensor data is not read in time.

    We don't have much experience in Arduino programming. You can consult the experts on the Arduino forum.
    If your platform only supports reading the maximum 256 bytes of FIFO data, you can shorten the interval between reading FIFO data, such as reading FIFO data every 160ms.

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist