This commit is contained in:
2024-09-26 22:32:20 +08:00
commit 097089ef4e
323 changed files with 135661 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
#ifndef __INERTIALSENSOR_INVENSENSE_H__
#define __INERTIALSENSOR_INVENSENSE_H__
#include "SPIDevice.h"
enum Invensense_Type {
Invensense_MPU6000=0,
Invensense_MPU6500,
Invensense_MPU9250,
Invensense_ICM20600,
Invensense_ICM20608,
Invensense_ICM20602,
Invensense_ICM20601,
Invensense_ICM20789,
Invensense_ICM20689,
};
typedef struct {
float accel[3];
float gyro[3];
uint8_t count;
} ACCUM_t;
typedef struct {
int16_t _raw_temp;
float temp_sensitivity; // degC/LSB
float temp_zero; // degC
float _accel_scale;
GPIO_TypeDef* _drdy;
uint16_t _drdy_Pin;
SPI_DEV_t* _dev;
// which sensor type this is
enum Invensense_Type _mpu_type;
// Last status from register user control
uint8_t _last_stat_user_ctrl;
// buffer for fifo read
uint8_t *_fifo_buffer;
ACCUM_t _accum;
uint32_t accel_clip_count;
float accel[3];
float gyro[3];
float temp_degc;
const char *name;
bool success;
int cnt;
int pps;
int seq;
osMutexId mutex;
}InertialSensor_Invensense_t;
bool InertialSensor_Invensense_init(InertialSensor_Invensense_t *imu, const char *name, SPI_DEV_t* dev, GPIO_TypeDef* drdy, uint16_t drdy_Pin);
void InertialSensor_Invensense_update(InertialSensor_Invensense_t *imu);
void InertialSensor_Invensense_loop(InertialSensor_Invensense_t *imu);
void InertialSensor_Invensense_monitor(InertialSensor_Invensense_t *imu);
#endif /* __INERTIALSENSOR_INVENSENSE_H__ */