Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BMI270 initialization issue with Arduino M0

    BMI270 initialization issue with Arduino M0

    New Poster


    I setup a small system with a couple of sensors including BMI270. THe system is based on an Adafruit Feather M0. I wasn't able to get the github driver working in Arduino so I started writing my own driver following the routines from the datasheet (page 19 following). Communication test (a) works, initialization step (b) seems to work too but while checking the initialization status I get 0x2 instead of 0x1 from the init status registers (0x21). 

    My assumption is that the config file might be wrong. I'm using the byte sequence (const uint8_t bmi270_config_file[]) provided in the github repository in file "bmi270.c".

    Is that the correct one?

    Thanks and best regards,


    13 REPLIES 13

    Occasional Contributor
    1. In GitHub, the configuration file is valid and correct.
    2. What is the laser marking of the BMI270 sample used in your experiment?
    3. What is the chip ID of the BMI270 sample used in your experiment?
    4. Can you provide the waveform of the entire process captured by the logic analyzer from the sensor power-on to the end?

    Community Moderator
    Community Moderator

    Hi chrfriese,

    I added a gist for your reference. You will need all the files in the BMI270 sensor API repository. If you need further assistance, kindly post here.


    Hi kgoveas,

    thanks for the reply. I checked your initial questions:

    • The chip marking reads "5P 110" which shoudl be correct according to the datasheet.
    • I also checked the Chip ID  which reads as 0x24

    That looks good. Then I switched to your gist code and I got stuck somewhere in the "bmi270_init".
    After some debugging I realized that there is a Wire.begin(); missing in the start of I2C configuration. 

    Afterwards it works fine. Thanks.

    I assume the output is in LSB and not physical units, right?


    Community Moderator
    Community Moderator

    Hi chrfriese,

    Yes the outputs right now to the Serial terminal are in LSB. Depending on your configuration of the sensor's range settings, you will have to scale it accordingly. 
    For example, the accelerometer values need to be mutliplied by (Acc_range / 32768), where Acc_range is 2, 4, 8, 16; the resultant being in G. The gyroscope values need to be mutliplied by (Gyr_range / 32768), where Gyr_range is 125, 250, 500, 1000, 2000