We try to use BMI088 in our system, but there are some problems when we use SPI to communicate with BMI088. Our master controller is FPGA, and we write a SPI protocol algorithm to control.
For accelerometer part, we can successfully read and write. First, we read a configuration register, like BMI08X_ACCEL_RANGE_REG(0x41). We write a different value in this register, and read again. The value of this register is changed. After our configuration, INT2 can generate a 400 Hz data ready wave(measured by oscilloscope) as we planned.
The problem is in Gyroscope part. We can successfully read registers. The value of gyro_chip_id is correct. But when I write anything to those configeration registers, those values are never changed. The value of BMI08X_GYRO_LPM1_REG(0x11) is 0x00. I can't change power mode of gyroscope module. When I write 0x80 to BMI08X_GYRO_LPM1_REG, The value I get from BMI08X_GYRO_LPM1_REG is still 0x00. I also tried to change range, bandwidth, interrupt configuration registers. No one register can change after I write a value. I also tried to soft reset the gyroscope part by write 0xB6 to BMI08X_GYRO_SOFTRESET_REG(0x14). The result is same.
Is there any possable reason cause this situation? I don't know what to try. And I can't find some state registers in gyroscope part in datasheet. I don't know what state this gyroscope is now.
By the way, I tried two BMI088, but the result are same. I think there are some steps I missed. I'm very confused now. We originally wanted to migrate the configuration algorithm for data synchronization, but we were stuck here.
If there is anything I need to provide, please let me know. Thanks for your time.
This is my configuration process for the imu. Firstly, after the imu is powered on, it sleeps for 50ms, then writes 0xB6 to the 0x14 register, and then sleeps for 50ms. It starts reading the data of the gyroscope 0x02 and 0x03 registers through SPI, but sometimes the data of 0x03 is 0xff and sometimes 0x00. Below is the SPI timing chart. Can you help me see where there is a problem