void imu_mpu_spi_init(void) { mpu60x0_spi_init(&imu_mpu_spi.mpu, &IMU_MPU_SPI_DEV, IMU_MPU_SPI_SLAVE_IDX); // change the default configuration imu_mpu_spi.mpu.config.smplrt_div = IMU_MPU_SMPLRT_DIV; imu_mpu_spi.mpu.config.dlpf_cfg = IMU_MPU_LOWPASS_FILTER; imu_mpu_spi.mpu.config.gyro_range = IMU_MPU_GYRO_RANGE; imu_mpu_spi.mpu.config.accel_range = IMU_MPU_ACCEL_RANGE; }
void imu_impl_init(void) { mpu60x0_spi_init(&imu_mpu_hmc.mpu, &IMU_MPU_SPI_DEV, IMU_MPU_SPI_SLAVE_IDX); // change the default configuration imu_mpu_hmc.mpu.config.smplrt_div = IMU_MPU_SMPLRT_DIV; imu_mpu_hmc.mpu.config.dlpf_cfg = IMU_MPU_LOWPASS_FILTER; imu_mpu_hmc.mpu.config.gyro_range = IMU_MPU_GYRO_RANGE; imu_mpu_hmc.mpu.config.accel_range = IMU_MPU_ACCEL_RANGE; /* initialize mag and set default options */ hmc58xx_init(&imu_mpu_hmc.hmc, &IMU_HMC_I2C_DEV, HMC58XX_ADDR); }
void imu_impl_init(void) { /* MPU is on spi1 and CS is SLAVE2 */ mpu60x0_spi_init(&imu_px4fmu.mpu, &spi1, SPI_SLAVE2); // change the default configuration imu_px4fmu.mpu.config.smplrt_div = PX4FMU_SMPLRT_DIV; imu_px4fmu.mpu.config.dlpf_cfg = PX4FMU_LOWPASS_FILTER; imu_px4fmu.mpu.config.gyro_range = PX4FMU_GYRO_RANGE; imu_px4fmu.mpu.config.accel_range = PX4FMU_ACCEL_RANGE; /* initialize mag on i2c2 and set default options */ hmc58xx_init(&imu_px4fmu.hmc, &i2c2, HMC58XX_ADDR); }
void imu_impl_init(void) { imu_aspirin2.accel_valid = FALSE; imu_aspirin2.gyro_valid = FALSE; imu_aspirin2.mag_valid = FALSE; mpu60x0_spi_init(&imu_aspirin2.mpu, &(ASPIRIN_2_SPI_DEV), ASPIRIN_2_SPI_SLAVE_IDX); // change the default configuration imu_aspirin2.mpu.config.smplrt_div = ASPIRIN_2_SMPLRT_DIV; imu_aspirin2.mpu.config.dlpf_cfg = ASPIRIN_2_LOWPASS_FILTER; imu_aspirin2.mpu.config.gyro_range = ASPIRIN_2_GYRO_RANGE; imu_aspirin2.mpu.config.accel_range = ASPIRIN_2_ACCEL_RANGE; /* read 15 bytes for status, accel, gyro + 6 bytes for mag slave */ imu_aspirin2.mpu.config.nb_bytes = 21; /* HMC5883 magnetometer as I2C slave */ imu_aspirin2.mpu.config.nb_slaves = 1; /* set function to configure mag */ imu_aspirin2.mpu.config.slaves[0].configure = &imu_aspirin2_configure_mag_slave; /* Set MPU I2C master clock */ imu_aspirin2.mpu.config.i2c_mst_clk = MPU60X0_MST_CLK_400KHZ; /* Enable I2C slave0 delayed sample rate */ imu_aspirin2.mpu.config.i2c_mst_delay = 1; /* configure spi transaction for wait_slave4 */ imu_aspirin2.wait_slave4_trans.cpol = SPICpolIdleHigh; imu_aspirin2.wait_slave4_trans.cpha = SPICphaEdge2; imu_aspirin2.wait_slave4_trans.dss = SPIDss8bit; imu_aspirin2.wait_slave4_trans.bitorder = SPIMSBFirst; imu_aspirin2.wait_slave4_trans.cdiv = SPIDiv64; imu_aspirin2.wait_slave4_trans.select = SPISelectUnselect; imu_aspirin2.wait_slave4_trans.slave_idx = ASPIRIN_2_SPI_SLAVE_IDX; imu_aspirin2.wait_slave4_trans.output_length = 1; imu_aspirin2.wait_slave4_trans.input_length = 2; imu_aspirin2.wait_slave4_trans.before_cb = NULL; imu_aspirin2.wait_slave4_trans.after_cb = mpu_wait_slave4_ready_cb; imu_aspirin2.wait_slave4_trans.input_buf = &(imu_aspirin2.wait_slave4_rx_buf[0]); imu_aspirin2.wait_slave4_trans.output_buf = &(imu_aspirin2.wait_slave4_tx_buf[0]); imu_aspirin2.wait_slave4_trans.status = SPITransDone; imu_aspirin2.slave4_ready = FALSE; }