|
@@ -3,28 +3,21 @@
|
|
|
```c
|
|
```c
|
|
|
// app.cpp
|
|
// app.cpp
|
|
|
|
|
|
|
|
-extern SPI_HandleTypeDef hspi1;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-void app(){
|
|
|
|
|
|
|
+void app() {
|
|
|
|
|
|
|
|
DMP_ICM20948 icm;
|
|
DMP_ICM20948 icm;
|
|
|
DMP_ICM20948Settings icmSettings =
|
|
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
|
|
.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_gyroscope = false, // Enables gyroscope output
|
|
|
|
|
+ .enable_accelerometer = false, // Enables accelerometer output
|
|
|
|
|
+ .enable_magnetometer = false, // Enables magnetometer output // Enables quaternion output
|
|
|
|
|
+ .enable_gravity = false, // Enables gravity vector output
|
|
|
|
|
+ .enable_linearAcceleration = false, // Enables linear acceleration output
|
|
|
.enable_quaternion6 = true, // Enables quaternion 6DOF 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
|
|
|
|
|
|
|
+ .enable_quaternion9 = false, // Enables quaternion 9DOF output
|
|
|
|
|
+ .enable_har = false, // Enables activity recognition
|
|
|
|
|
+ .enable_steps = false, // Enables step counter
|
|
|
.gyroscope_frequency = 1, // Max frequency = 225, min frequency = 1
|
|
.gyroscope_frequency = 1, // Max frequency = 225, min frequency = 1
|
|
|
.accelerometer_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
|
|
.magnetometer_frequency = 1, // Max frequency = 70, min frequency = 1
|
|
@@ -39,6 +32,7 @@ void app(){
|
|
|
|
|
|
|
|
icm.init(icmSettings);
|
|
icm.init(icmSettings);
|
|
|
|
|
|
|
|
|
|
+
|
|
|
while(1){
|
|
while(1){
|
|
|
|
|
|
|
|
icm.task();
|
|
icm.task();
|
|
@@ -47,41 +41,16 @@ void app(){
|
|
|
//run_icm20948_mag_controller();
|
|
//run_icm20948_mag_controller();
|
|
|
//run_icm20948_linearAccel_controller();
|
|
//run_icm20948_linearAccel_controller();
|
|
|
//run_icm20948_grav_controller();
|
|
//run_icm20948_grav_controller();
|
|
|
- run_icm20948_quat6_controller(&icm, true);
|
|
|
|
|
|
|
+ run_icm20948_quat6_controller(&icm, true);
|
|
|
//run_icm20948_quat9_controller(true);
|
|
//run_icm20948_quat9_controller(true);
|
|
|
//run_icm20948_har_controller();
|
|
//run_icm20948_har_controller();
|
|
|
//run_icm20948_steps_controller();
|
|
//run_icm20948_steps_controller();
|
|
|
- HAL_Delay(100);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
|
|
+ //HAL_UART_Transmit(&huart2, (const uint8_t*)sensor_string_buff, 5, 1000);
|
|
|
|
|
|
|
|
-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);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ HAL_Delay(100);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
```
|
|
```
|