IMU ACC FSR 4g 통일

- 기존에는 direct read 8g, FIFO 4g
This commit is contained in:
2026-06-16 10:33:35 +09:00
parent 25befa26b1
commit 228f6da4a3
@@ -385,7 +385,7 @@ void imu_callback(inv_imu_sensor_event_t *event)
* Flow: * Flow:
* 1) Check TWI initialization (first call only) * 1) Check TWI initialization (first call only)
* 2) Gyro config: +/-2000dps, 100Hz ODR (GYRO_CONFIG0 = 0x09) * 2) Gyro config: +/-2000dps, 100Hz ODR (GYRO_CONFIG0 = 0x09)
* 3) Accel config: +/-4g, 100Hz ODR (ACCEL_CONFIG0 = 0x29) * 3) Accel config: +/-4g, 100Hz ODR (ACCEL_CONFIG0 = 0x49)
* 4) Power ON: accel+gyro low-noise mode (PWR_MGMT0 = 0x0F) * 4) Power ON: accel+gyro low-noise mode (PWR_MGMT0 = 0x0F)
* 5) Wait 80ms (gyro startup: min 45ms + margin) * 5) Wait 80ms (gyro startup: min 45ms + margin)
* 6) Read 14 consecutive bytes from TEMP_DATA1 (0x09) (temp 2 + accel 6 + gyro 6) * 6) Read 14 consecutive bytes from TEMP_DATA1 (0x09) (temp 2 + accel 6 + gyro 6)
@@ -447,9 +447,9 @@ int imu_read_direct(void)
icm42670_twi_tx(IMU_I2C_ADDR, gyro_cfg, 2, false); icm42670_twi_tx(IMU_I2C_ADDR, gyro_cfg, 2, false);
} }
/* Accel config: ACCEL_CONFIG0(0x21) = 0x29 -> +/-4g FSR, 100Hz ODR */ /* Accel config: ACCEL_CONFIG0(0x21) = 0x49 -> +/-4g FSR, 100Hz ODR */
{ {
uint8_t accel_cfg[2] = { 0x21, 0x29 }; uint8_t accel_cfg[2] = { 0x21, 0x49 };
icm42670_twi_tx(IMU_I2C_ADDR, accel_cfg, 2, false); icm42670_twi_tx(IMU_I2C_ADDR, accel_cfg, 2, false);
} }
@@ -693,8 +693,8 @@ int imu_fifo_capture_start(void)
rc |= inv_imu_set_accel_fsr(&icm_driver, ACCEL_CONFIG0_FS_SEL_4g); rc |= inv_imu_set_accel_fsr(&icm_driver, ACCEL_CONFIG0_FS_SEL_4g);
rc |= inv_imu_set_gyro_fsr(&icm_driver, GYRO_CONFIG0_FS_SEL_500dps); rc |= inv_imu_set_gyro_fsr(&icm_driver, GYRO_CONFIG0_FS_SEL_500dps);
rc |= inv_imu_set_accel_frequency(&icm_driver, ACCEL_CONFIG0_ODR_50_HZ); rc |= inv_imu_set_accel_frequency(&icm_driver, ACCEL_CONFIG0_ODR_50_HZ); // FIFO ODR Accel 50Hz Setting
rc |= inv_imu_set_gyro_frequency(&icm_driver, GYRO_CONFIG0_ODR_50_HZ); rc |= inv_imu_set_gyro_frequency(&icm_driver, GYRO_CONFIG0_ODR_50_HZ); // FIFO ODR Gyro 50Hz Setting
rc |= inv_imu_set_accel_ln_bw(&icm_driver, IMU_FIFO_MTB_ACCEL_LN_BW); rc |= inv_imu_set_accel_ln_bw(&icm_driver, IMU_FIFO_MTB_ACCEL_LN_BW);
rc |= inv_imu_set_gyro_ln_bw(&icm_driver, IMU_FIFO_MTB_GYRO_LN_BW); rc |= inv_imu_set_gyro_ln_bw(&icm_driver, IMU_FIFO_MTB_GYRO_LN_BW);
rc |= inv_imu_disable_high_resolution_fifo(&icm_driver); rc |= inv_imu_disable_high_resolution_fifo(&icm_driver);
@@ -707,8 +707,10 @@ int imu_fifo_capture_start(void)
rc |= inv_imu_write_reg(&icm_driver, FIFO_CONFIG1, 1, &fifo_cfg1); rc |= inv_imu_write_reg(&icm_driver, FIFO_CONFIG1, 1, &fifo_cfg1);
} }
rc |= inv_imu_reset_fifo(&icm_driver); rc |= inv_imu_reset_fifo(&icm_driver);
rc |= inv_imu_enable_accel_low_noise_mode(&icm_driver); rc |= inv_imu_enable_accel_low_noise_mode(&icm_driver); // FIFO Accel Low Noise Mode
rc |= inv_imu_enable_gyro_low_noise_mode(&icm_driver); //rc |= inv_imu_enable_accel_low_power_mode(&icm_driver); // FIFO Accel Low Power Mode TEST
rc |= inv_imu_enable_gyro_low_noise_mode(&icm_driver); // FIFO Gyro Low Noise Mode
imu_fifo_log_power_mode();
dr_sd_delay_ms(IMU_FIFO_ENABLE_SETTLE_MS); dr_sd_delay_ms(IMU_FIFO_ENABLE_SETTLE_MS);
rc |= inv_imu_reset_fifo(&icm_driver); rc |= inv_imu_reset_fifo(&icm_driver);