From 38264c53e1f46fe50a9a8a15b02432322cbcad7d Mon Sep 17 00:00:00 2001 From: TuxMonkey <8196772+tuxmonkey@user.noreply.gitee.com> Date: Sun, 16 Nov 2025 21:05:10 +0800 Subject: [PATCH] release bmi088 to dwt delay --- User_Code/module/periph/imu/BMI088driver.c | 38 +++++++++------------- ozonedeb/windebnewestux.jdebug | 1 + 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/User_Code/module/periph/imu/BMI088driver.c b/User_Code/module/periph/imu/BMI088driver.c index 7a93553..80f8f22 100644 --- a/User_Code/module/periph/imu/BMI088driver.c +++ b/User_Code/module/periph/imu/BMI088driver.c @@ -246,27 +246,23 @@ uint8_t bmi088_accel_init(void) { // check commiunication BMI088_accel_read_single_reg(BMI088_ACC_CHIP_ID, res); - // DWT_Delay(0.001); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); BMI088_accel_read_single_reg(BMI088_ACC_CHIP_ID, res); - // DWT_Delay(0.001); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); // accel software reset BMI088_accel_write_single_reg(BMI088_ACC_SOFTRESET, BMI088_ACC_SOFTRESET_VALUE); // HAL_Delay(BMI088_LONG_DELAY_TIME); - HAL_Delay(BMI088_COM_WAIT_SENSOR_TIME); + DWT_Delay(0.08); // check commiunication is normal after reset BMI088_accel_read_single_reg(BMI088_ACC_CHIP_ID, res); - // DWT_Delay(0.001); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); BMI088_accel_read_single_reg(BMI088_ACC_CHIP_ID, res); - // DWT_Delay(0.001); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); // check the "who am I" if (res != BMI088_ACC_CHIP_ID_VALUE) { - // Todo: LOGERROR("[bmi088] Can not read bmi088 acc chip id"); + // LOGERROR("[bmi088] Can not read bmi088 acc chip id"); return BMI088_NO_SENSOR; } @@ -276,12 +272,10 @@ uint8_t bmi088_accel_init(void) BMI088_accel_write_single_reg(BMI088_Accel_Init_Table[write_reg_num][0], BMI088_Accel_Init_Table[write_reg_num][1]); - // DWT_Delay(0.001); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); BMI088_accel_read_single_reg(BMI088_Accel_Init_Table[write_reg_num][0], res); - // DWT_Delay(0.001); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); if (res != BMI088_Accel_Init_Table[write_reg_num][1]) { @@ -297,24 +291,24 @@ uint8_t bmi088_gyro_init(void) { // check commiunication BMI088_gyro_read_single_reg(BMI088_GYRO_CHIP_ID, res); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); BMI088_gyro_read_single_reg(BMI088_GYRO_CHIP_ID, res); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); // reset the gyro sensor BMI088_gyro_write_single_reg(BMI088_GYRO_SOFTRESET, BMI088_GYRO_SOFTRESET_VALUE); // HAL_Delay(BMI088_LONG_DELAY_TIME); - HAL_Delay(BMI088_COM_WAIT_SENSOR_TIME); + DWT_Delay(0.08); // check commiunication is normal after reset BMI088_gyro_read_single_reg(BMI088_GYRO_CHIP_ID, res); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); BMI088_gyro_read_single_reg(BMI088_GYRO_CHIP_ID, res); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); // check the "who am I" if (res != BMI088_GYRO_CHIP_ID_VALUE) { - //Todo: LOGERROR("[bmi088] Can not read bmi088 gyro chip id"); + // LOGERROR("[bmi088] Can not read bmi088 gyro chip id"); return BMI088_NO_SENSOR; } @@ -324,10 +318,10 @@ uint8_t bmi088_gyro_init(void) BMI088_gyro_write_single_reg(BMI088_Gyro_Init_Table[write_reg_num][0], BMI088_Gyro_Init_Table[write_reg_num][1]); - HAL_Delay(BMI088_LONG_DELAY_TIME); + DWT_Delay(0.001); BMI088_gyro_read_single_reg(BMI088_Gyro_Init_Table[write_reg_num][0], res); - HAL_Delay(BMI088_LONG_DELAY_TIME); //但是不知道为什么还是yaw pitch还是nan + DWT_Delay(0.001); if (res != BMI088_Gyro_Init_Table[write_reg_num][1]) { diff --git a/ozonedeb/windebnewestux.jdebug b/ozonedeb/windebnewestux.jdebug index 17bbb67..e2fce1d 100644 --- a/ozonedeb/windebnewestux.jdebug +++ b/ozonedeb/windebnewestux.jdebug @@ -33,6 +33,7 @@ void OnProjectLoad (void) { // // User settings // + Project.SetOSPlugin ("FreeRTOSPlugin"); File.Open ("D:/RM/Elec Control/TronOneH7_Scaffold/cmake-build-debug/TronOneH7_Scaffold.elf"); }