Hello, Thanks for answering, it's useful to know what you have said, but this is not the case, since if you check the project that I attached in the previous answer, the clock is set to 4 MHz. The solution I used to obtain the simultaneous reading has been to create my own function that combines the reading functions of the accelerometer and gyroscope from the Bosch library, in addition to the sensor time. This seems to work the way I wanted, so I'll end this post. Thanks for the answers. Edit: I'm going to add the function, it has nothing new, it's just a combination of those from the library. BMI08X_INTF_RET_TYPE bmi08x_get_data(struct bmi08x_sensor_data *accel, struct bmi08x_sensor_data *gyro, uint32_t *sensor_time, struct bmi08x_dev *dev) { int8_t rslt; uint8_t data[9] = { 0 }; uint8_t lsb, msb; uint16_t msblsb; uint32_t byte2, byte1, byte0; /* Proceed if null check is fine */ if ((accel != NULL) && (sensor_time != NULL)) { /* Read accel sensor data & sensor time */ rslt = bmi08a_get_regs(BMI08X_REG_ACCEL_X_LSB, data, 9, dev); if (rslt == BMI08X_OK) { lsb = data[0]; msb = data[1]; msblsb = (msb << 8 ) | lsb; accel->x = ((int16_t) msblsb); /* Data in X axis */ lsb = data[2]; msb = data[3]; msblsb = (msb << 8 ) | lsb; accel->y = ((int16_t) msblsb); /* Data in Y axis */ lsb = data[4]; msb = data[5]; msblsb = (msb << 8 ) | lsb; accel->z = ((int16_t) msblsb); /* Data in Z axis */ byte0 = data[6]; /* Lower byte */ byte1 = (data[7] << 8); /* Middle byte */ byte2 = (data[8] << 16); /* Higher byte */ /* Sensor time */ *sensor_time = (byte2 | byte1 | byte0); /* Read gyro sensor data */ rslt = bmi08g_get_data(gyro, dev); } } else { rslt = BMI08X_E_NULL_PTR; } return rslt; }
... View more