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,
Solved! Go to Solution.
Changed the read and write functions as you suggested. The code compiled just fine, but the init_status register returned 2. Turns out I couldn't write 32 byte bursts, probably because the tx buffer is 32 and needs 2 stop bytes. Changing the write length to 16 fixed this, and now everything is working perfectly.
Thank you so much for your help! 🙂
I also use this example program to debug BMI.But the value of "rslt" is not equal to the value of "BMI_OK" during debugging.This means the communication is not completed.
17:04:48.358 -> bmi270_init done 17:04:48.376 -> -2 17:04:48.376 -> 0 17:04:48.704 -> Accel x = 0 Accel y = 0 Accel z = 0 Gyro x = 0 Gyro y = 0 Gyro z = 0
Which section of the program should be modified to get normal output? Thank you very much.
Jimit here, I have bmi270 IMU, I am successfully loading my config file and then initializing the sensor in normal mode, as shown in the datasheet, I implement it in teensy 4.1 board, and I set ODR, BANDWIDTH, and filter pref with ACC_CONFIG resistor filter_pref = 1, ODR = 100Hz, BANDWIDTH = res_avg16 I get Acc config ERROR, and when I get ACC data on 2G I get range between on Z axis = 4175-4185, I don't know why this happens? can you help me, please? you can check my code, I will give you my code, I showed in the data sheet what reserved means.