BMI088 can't communicate properly via SPI

Hello,

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.

Regards,
Blues Jiang

4 replies