GeekIMU/2.Firmware/STM32/Firmware/sensor/calibrate.h

173 lines
6.6 KiB
C
Raw Normal View History

2024-11-09 21:39:20 +08:00
/******************** (C) COPYRIGHT 2020 GEEKIMU *******************************
* File Name : calibrate.c
* Current Version : V2.0 & ST 3.5.0
* Author : zhanli 719901725@qq.com & JustFeng.
* Date of Issued : 2015.10.3 zhanli : Create
* Comments : <EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>flash<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
********************************************************************************/
#ifndef _CALIBRATE_H_
#define _CALIBRATE_H_
#include <stdint.h>
#include <stdbool.h>
#define CALIBRATION_SIZE (8+8+8*3+8*3+sizeof(uint16_t))
typedef struct calibrate_struct
{
float temperature;
float Gyr_Offset[3];
float acc_offset[3];
// scale and cross axis sensitivity
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ž<EFBFBD><C5BE><EFBFBD>
float gyro_scale[3][3];
float acc_scale[3][3];
}calibrate_s, *calibrate_p;
typedef struct{
float temp;
float Gyr_Offset[3];
float Acc_Offset[3];
float Mag_Offset[3];
float Mag_Scale[3][3];
}Calibrate_Info;
/**----------------------------------------------------------------------
* Function : Calibrate_Init(void)
* Description : <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>׷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : zhanli&719901725@qq.com & JustFeng.
* Date : 2015/2/13 zhanli
*---------------------------------------------------------------------**/
void Calibrate_Init(void);
/**----------------------------------------------------------------------
* Function : Init_Gyro_Offset(void)
* Description : <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫֵ,<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫֵ
* Author : zhanli&719901725@qq.com & JustFeng.
* Date : 2015/10/3 zhanli
*---------------------------------------------------------------------**/
void Init_Gyro_Offset(Calibrate_Info *mCali_Info);
/**----------------------------------------------------------------------
* Function : Compute_Gyro_Offset(void)
* Description : <EFBFBD>ھ<EFBFBD>ֹʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡMPU6050<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD>ƫ
* Author : zhanli&719901725@qq.com & JustFeng.
* Date : 2015/10/3 zhanli
*---------------------------------------------------------------------**/
void Compute_Gyro_Offset(void);
/**----------------------------------------------------------------------
* Function : Store_Gyro_Offset(void)
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>eeprom<EFBFBD><EFBFBD>
* Author : zhanli&719901725@qq.com & JustFeng.
* Date : 2015/10/3 zhanli
*---------------------------------------------------------------------**/
void Store_Gyro_Offset(Calibrate_Info *mCali_Info);
/**----------------------------------------------------------------------
* Function : void Clean_Gyro_Offset(void)
* Description : <EFBFBD><EFBFBD>EEPROM<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2015/10/3 zhanli
*---------------------------------------------------------------------**/
void Clean_Gyro_Offset(void);
/**----------------------------------------------------------------------
* Function : Get_Acc_Offset(float* acc)
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/4 JustFeng
*---------------------------------------------------------------------**/
void Get_Gyro_Offset(float* gyro);
/**----------------------------------------------------------------------
* Function : Save_Acc_Offset(float*)
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Save_Gyro_Offset(float* Gyr_Offset);
/**----------------------------------------------------------------------
* Function : Reset_Acc_Offset(void)
* Description : <EFBFBD><EFBFBD>EEPROM<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Reset_Gyro_Offset(void);
/**----------------------------------------------------------------------
* Function : Load_Acc_Offset()
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>ƫֵ
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Load_Gyro_Offset(void);
/**----------------------------------------------------------------------
* Function : Reset_Acc_Offset(void)
* Description : <EFBFBD><EFBFBD>EEPROM<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Load_Acc_Offset(void);
/**----------------------------------------------------------------------
* Function : Get_Acc_Offset(float* acc)
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/4 JustFeng
*---------------------------------------------------------------------**/
void Get_Acc_Offset(float* acc);
/**----------------------------------------------------------------------
* Function : Save_Acc_Offset(float*)
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Save_Acc_Offset(float* acc_offset);
/**----------------------------------------------------------------------
* Function : Reset_Acc_Offset(void)
* Description : <EFBFBD><EFBFBD>EEPROM<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Reset_Acc_Offset(void);
/**----------------------------------------------------------------------
* Function : Load_Mag_Offset()
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Load_Mag_Offset(void);
/**----------------------------------------------------------------------
* Function : Get_Mag_Offset
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Get_Mag_Offset(float* mag);
/**----------------------------------------------------------------------
* Function : Save_Mag_Offset
* Description : <EFBFBD><EFBFBD>STM32<EFBFBD><EFBFBD>EEROM<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Save_Mag_Offset(float* mag_offset);
/**----------------------------------------------------------------------
* Function : Reset_Mag_Offset
* Description : <EFBFBD><EFBFBD>EEPROM<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Author : JustFeng.
* Date : 2016/12/2 JustFeng
*---------------------------------------------------------------------**/
void Reset_Mag_Offset(void);
#endif /* _CALIBRATE_H_ */