Няма описание

Juraj Ďuďák 4b85b39245 demo преди 11 месеца
inc c262f1a125 prvy преди 11 месеца
src c262f1a125 prvy преди 11 месеца
.gitignore ea59ca32a7 Initial commit преди 11 месеца
LICENSE ea59ca32a7 Initial commit преди 11 месеца
README.md 4b85b39245 demo преди 11 месеца

README.md

DMP-ICM20948

// app.cpp

extern SPI_HandleTypeDef hspi1;


void app(){

	DMP_ICM20948 icm;
	DMP_ICM20948Settings icmSettings =
	{
	  .i2c_speed = 400000,                // i2c clock speed
	  .is_SPI = false,                    // Enable SPI, if disable use i2c
	  .cs_pin = 10,                       // SPI chip select pin
	  .spi_speed = 7000000,               // SPI clock speed in Hz, max speed is 7MHz
	  .mode = 1,                          // 0 = low power mode, 1 = high performance mode
	  .enable_gyroscope = true,           // Enables gyroscope output
	  .enable_accelerometer = true,       // Enables accelerometer output
	  .enable_magnetometer = true,        // Enables magnetometer output // Enables quaternion output
	  .enable_gravity = true,             // Enables gravity vector output
	  .enable_linearAcceleration = true,  // Enables linear acceleration output
	  .enable_quaternion6 = true,         // Enables quaternion 6DOF output
	  .enable_quaternion9 = true,         // Enables quaternion 9DOF output
	  .enable_har = true,                 // Enables activity recognition
	  .enable_steps = true,               // Enables step counter
	  .gyroscope_frequency = 1,           // Max frequency = 225, min frequency = 1
	  .accelerometer_frequency = 1,       // Max frequency = 225, min frequency = 1
	  .magnetometer_frequency = 1,        // Max frequency = 70, min frequency = 1
	  .gravity_frequency = 1,             // Max frequency = 225, min frequency = 1
	  .linearAcceleration_frequency = 1,  // Max frequency = 225, min frequency = 1
	  .quaternion6_frequency = 50,        // Max frequency = 225, min frequency = 50
	  .quaternion9_frequency = 50,        // Max frequency = 225, min frequency = 50
	  .har_frequency = 50,                // Max frequency = 225, min frequency = 50
	  .steps_frequency = 50               // Max frequency = 225, min frequency = 50

	};

	icm.init(icmSettings);

	while(1){

		    icm.task();
		    //run_icm20948_accel_controller();
		    //run_icm20948_gyro_controller();
		    //run_icm20948_mag_controller();
		    //run_icm20948_linearAccel_controller();
		    //run_icm20948_grav_controller();
		    run_icm20948_quat6_controller(&icm, true);
		    //run_icm20948_quat9_controller(true);
		    //run_icm20948_har_controller();
		    //run_icm20948_steps_controller();
		  HAL_Delay(100);
	}

}


void run_icm20948_quat6_controller(DMP_ICM20948 *icm20948, uint8_t inEuler)
{
    float quat_w, quat_x, quat_y, quat_z;
    float roll, pitch, yaw;
    //char sensor_string_buff[128];
    if (inEuler)
    {
        if (icm20948->euler6DataIsReady())
        {
            icm20948->readEuler6Data(&roll, &pitch, &yaw);
            //sprintf(sensor_string_buff, "Euler6 roll, pitch, yaw(deg): [%f,%f,%f]", roll, pitch, yaw);
            //Serial.println(sensor_string_buff);
        }
    }
    else
    {
        if (icm20948->quat6DataIsReady())
        {
            icm20948->readQuat6Data(&quat_w, &quat_x, &quat_y, &quat_z);
            //sprintf(sensor_string_buff, "Quat6 w, x, y, z (deg): [%f,%f,%f,%f]", quat_w, quat_x, quat_y, quat_z);
            //Serial.println(sensor_string_buff);
        }
    }

}