My problem is that with I2C I cannot use more than 16 as `read_write_len` otherwise the IMU gets stuck and only a reboot can recover it.
With 16 I have no write errors, but the function fails here because the value of the variable `reg_data` is 0 instead of 1.
Sincerely I cannot understand why this happens. Any thoughts?
I suggest you scrutinise your I2C implementation. Use a logic analyser to double check I2C transactions against Bosch documentation. Initially focus on the transaction sequence rather than actual data. For example, are all ACKs and NACKs as expected, do you account for dummy bytes where appropriate, etc.
The I2C protocol does not limit the transmission length to 16. If you use the host's hardware I2C, you need to check the maximum length supported by the hardware I2C.
In addition, loading the configuration file will not affect the data of BMI088 unless the loading configuration file is not called according to the reference example.
@BSTRobin wrote:In addition, loading the configuration file will not affect the data of BMI088 unless the loading configuration file is not called according to the reference example.
Can you explain better this part?
Can I also ask why there are no words about this on the datasheet?
I used the BMI180 and the BMI270 and the procedure was explained in detail on their datasheets.
Whether you load the configuration file or not, you can read the sensor data from BMI088.