Выполняется корректное чтение данных иму. Оси и наклоны соответствуют рабочим прошивке и дрону
This commit is contained in:
@@ -23,6 +23,9 @@ void i2c_gpio_init()
|
||||
GPIOB->AFR[1] &= ~((0xF << ((8 - 8) * 4)) | (0xF << ((9 - 8) * 4)));
|
||||
GPIOB->AFR[1] |= ((4 << ((8 - 8) * 4)) | (4 << ((9 - 8) * 4)));
|
||||
|
||||
// high speed
|
||||
GPIOB->OSPEEDR |= (2 << (8 * 2)) | (2 << (9 * 2));
|
||||
|
||||
// enable open-drain
|
||||
GPIOB->OTYPER |= (1 << 8) | (1 << 9);
|
||||
|
||||
@@ -36,8 +39,10 @@ void i2c1_init()
|
||||
// enable I2C1
|
||||
RCC->APB1ENR1 |= RCC_APB1ENR1_I2C1EN;
|
||||
|
||||
// 0x00303D5B - 100 kHz
|
||||
|
||||
// 400 kHz @ 16 MHz
|
||||
I2C1->TIMINGR = 0x00303D5B;
|
||||
I2C1->TIMINGR = 0x10802D9BUL;
|
||||
|
||||
I2C1->CR1 |= I2C_CR1_PE;
|
||||
}
|
||||
@@ -56,7 +61,7 @@ void imu_init()
|
||||
// gyro ~2000 dps, FS_SEL = 3
|
||||
i2c_write(ICM_ADDR, REG_GYRO_CONFIG_1, GYRO_FS_SEL_2000 | GYRO_DLPFCFG_73 | GYRO_FCHOICE_ON);
|
||||
|
||||
// accel ~4g, FS_SEL = 1
|
||||
// accel 8g, FS_SEL = 2
|
||||
i2c_write(ICM_ADDR, REG_ACCEL_CONFIG, ACCEL_FS_SEL_8 | ACCEL_DLPFCFG_69 | ACCEL_FCHOICE_ON);
|
||||
|
||||
// back to bank 0
|
||||
@@ -127,8 +132,8 @@ void imu_read_raw(imu_raw_t* data)
|
||||
data->ay = (buf[2] << 8) | buf[3];
|
||||
data->az = (buf[4] << 8) | buf[5];
|
||||
|
||||
data->gx = (buf[6] << 8) | buf[7];
|
||||
data->gy = (buf[8] << 8) | buf[9];
|
||||
data->gx = (buf[6] << 8) | buf[7];
|
||||
data->gy = (buf[8] << 8) | buf[9];
|
||||
data->gz = (buf[10] << 8) | buf[11];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user